it-swarm.it

Come rendere accessibile una macchina dalla LAN usando il suo nome host

Ecco i dettagli della macchina a cui voglio accedere usando il suo nome host:

$ hostname
hostname
$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   hostname.company.local  hostname

È un'installazione Debian 6 (Squeeze) predefinita, quindi non ho ancora giocherellato con nulla.

Questo è ciò che ottengo da una macchina (che esegue Debian Unstable) cercando di accedere alla macchina sopra:

$ ping hostname
ping: unknown Host hostname
$ ping hostname.company.local
ping: unknown Host hostname.company.local
$ cat /etc/resolv.conf
nameserver 192.168.2.21
nameserver 192.168.2.51
search company.local
131
tshepang

Su Internet, comprese le reti locali, le macchine si chiamano per indirizzi IP . Per accedere alla macchina B dalla macchina A usando il nome della macchina B, la macchina A deve avere un modo per mappare il nome di B al suo indirizzo IP. Esistono tre modi per dichiarare i nomi delle macchine su A:

  • a file hosts . Questo è un semplice file di testo che mappa i nomi agli indirizzi.
  • il domain name system (DNS) . Questo è il metodo utilizzato su Internet globale. Ad esempio, quando carichi questa pagina in un browser, la prima cosa che fa il tuo computer è fare una richiesta DNS per conoscere l'indirizzo di unix.stackexchange.com.
  • altri database di nomi come NIS , LDAP o Active Directory . Questi vengono utilizzati in alcune reti aziendali, ma non molto spesso (molte reti che utilizzano NIS, LDAP o AD per i database degli utenti utilizzano DNS per i nomi dei computer). Se la tua rete utilizza uno di questi, hai un amministratore di rete professionale e dovresti chiedergli cosa fare.

Ci sono molti modi in cui questi possono funzionare nella pratica; è impossibile coprirli tutti. In questa risposta, descriverò alcune situazioni comuni.

File host

Il metodo del file hosts ha il vantaggio di non richiedere alcun metodo speciale. Può essere complicato se hai più macchine, perché devi aggiornare ogni macchina quando cambia il nome di una macchina. Non è adatto se l'indirizzo IP di B è assegnato in modo dinamico (in modo da ottenerne uno diverso ogni volta che ti connetti alla rete).

Un file hosts è un semplice elenco di linee che associano i nomi agli indirizzi IP. Sembra così:

127.0.0.1       localhost localhost.localdomain
198.51.100.42   darkstar darkstar.bands

Sui sistemi unix, il file hosts è /etc/hosts. Su Windows, è c:\windows\system32\drivers\etc\hosts. Quasi tutti i sistemi operativi che è possibile connettersi a Internet hanno un file simile; Wikipedia ha un elenco .

Per aggiungere una voce per B nel file hosts di A:

  1. Determina l'indirizzo IP di B. Su B, esegui il comando ifconfig (se il comando non viene trovato, prova /sbin/ifconfig). L'output conterrà righe come questa:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab
              inet addr:10.3.1.42  Bcast:10.3.1.255  Mask:255.255.255.0
    

    In questo esempio, l'indirizzo IP di B è 10.3.1.42. Se ci sono diverse linee inet addr:, Scegli quella corrispondente alla tua scheda di rete, mai la voce lo o un tunnel o voce virtuale.

  2. Modifica il file hosts su A. Se A esegue un sistema unix, dovrai modificare /etc/hosts Come superutente; vedi Come posso eseguire un comando come amministratore di sistema (root) .

DHCP + DNS su reti domestiche o di piccoli uffici

Questo metodo è di gran lunga il più semplice se si dispone dell'attrezzatura necessaria. Devi solo configurare un dispositivo e tutti i tuoi computer conosceranno i nomi degli altri. Questo metodo presuppone che i tuoi computer ottengano i loro indirizzi IP su DHCP , che è un metodo che consente ai computer di recuperare automaticamente un indirizzo IP quando si connettono alla rete. Se non sai cos'è il DHCP, probabilmente lo fanno.

Se la tua rete ha un router di casa , è il posto migliore per configurare i nomi per le macchine connesse a quel router. Innanzitutto, è necessario capire indirizzo MAC di B. Ogni dispositivo di rete ha un indirizzo MAC univoco. Su B, esegui il comando ifconfig -a (Se il comando non viene trovato, prova /sbin/ifconfig -a). L'output conterrà righe come questa:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab

In questo esempio l'indirizzo MAC è 01:23:45:67:89:ab. È necessario selezionare la linea HWaddr che corrisponde alla porta di rete collegata al router tramite un cavo (o la scheda wifi se si è connessi tramite Wi-Fi). Se si dispone di più voci e non si sa quale sia, collegare il cavo e vedere quale dispositivo di rete riceve un indirizzo IP (riga inet addr Appena sotto).

Ora, sull'interfaccia web del router, cerca un'impostazione come "DHCP". Il nome e la posizione dell'impostazione dipendono completamente dal modello di router, ma la maggior parte ha un set simile di impostazioni di base. Ecco come appare su un firmware Tomato :

tomato screenshot

Immettere l'indirizzo MAC, un indirizzo IP e il nome desiderato. Puoi scegliere qualsiasi indirizzo IP nell'intervallo di indirizzi della tua rete locale. La maggior parte dei router domestici è preconfigurata per un intervallo di indirizzi nel formato 192.168. x . y o 10. x . y . Z . Ad esempio, sul router Tomato mostrato sopra, nella scheda "Rete", c'è un'impostazione "indirizzo IP router" con il valore 10.3.0.1 e un'impostazione "subnet mask" con il valore 255.255.255.0, il che significa che i computer su la rete locale deve avere un indirizzo nel modulo 10.3.0. z . C'è anche una gamma di indirizzi per gli indirizzi DHCP assegnati automaticamente (10.3.0.129–10.3.0.254); per il tuo indirizzo DHCP assegnato manualmente, scegline uno che non rientri in questo intervallo.

Ora collega B alla rete e dovrebbe ottenere l'indirizzo IP che hai specificato e sarà raggiungibile con il nome specificato da qualsiasi macchina della rete.

Crea il tuo server DNS con Dnsmasq

Se non si dispone di un router domestico in grado, è possibile impostare la stessa funzionalità su qualsiasi macchina Linux. Spiegherò come usare Dnsmasq per impostare DNS . Esistono molti altri programmi simili; Ho scelto Dnsmasq perché è facile da configurare e leggero (è quello che utilizza il router Tomato sopra illustrato, ad esempio). Dnsmasq è disponibile sulla maggior parte delle distribuzioni Linux e BSD per PC, server e apparecchiature di rete.

Scegli un computer sempre acceso, con un indirizzo IP statico e che esegua una sorta di Linux o BSD; chiamiamolo S (per server). Su S, installa il pacchetto dnsmasq (se non è già presente). Di seguito suppongo che il file di configurazione sia /etc/dnsmasq.conf; la posizione può variare in base alla distribuzione. Ora devi fare diverse cose.

  • Di 'a Dnsmasq di fornire i nomi dei tuoi Host oltre a quelli che ottiene da Internet. Il modo più semplice è inserire i nomi e gli indirizzi IP in /etc/hosts (Vedere la sezione "File Hosts" sopra), e assicurarsi che /etc/dnsmasq.conf Non abbia la direttiva no-hosts non commentata. (Le righe che iniziano con un # Sono commentate.) Puoi inserire i nomi in un altro file; se lo fai, inserisci una riga addn-hosts=/path/to/hosts/file in /etc/dnsmasq.conf.
  • Spiega a Dnsmasq come ottenere gli indirizzi IP per i nomi delle macchine su Internet.

    • Se usi Debian, Ubuntu o un derivato, installa il pacchetto resolvconf. Nella maggior parte dei casi, tutto funzionerà immediatamente.
    • Se l'amministratore di rete o il tuo ISP ti hanno fornito gli indirizzi dei server DNS, inseriscili in /etc/dnsmasq.conf, Ad esempio:

      server=8.8.8.8
      server=8.8.4.4
      
    • Se non sai quali sono le tue attuali impostazioni DNS, cerca nel file /etc/resolv.conf. Se vedi una riga come nameserver 8.8.8.8, Inserisci una riga server=8.8.8.8 In /etc/dnsmasq.conf. Dopo aver modificato /etc/dnsmasq.conf, Riavvia Dnsmasq. Il comando per farlo dipende dalla distribuzione; possibilità tipiche includono restart dnsmasq o /etc/init.d/dnsmasq restart.

  • Di 'a S di usare il servizio Dnsmasq per tutte le richieste di nome host. Modifica il file /etc/resolv.conf (Come root), rimuovi ogni nameserver line e inserisci invece nameserver 127.0.0.1.
    • Se stai usando resolvconf su Debian o Ubuntu, /etc/resolv.conf Potrebbe non essere ottimale se hai installato il pacchetto resolvconf con la rete attiva e funzionante. Assicurati che i file base, head e tail nella directory /etc/resolvconf/resolv.conf.d/ Non contengano voci nameserver, quindi esegui resolvconf -u (Come root).
  • Di 'alle altre macchine di usare S come server DNS. Modifica /etc/resolv.conf E sostituisci tutte le nameserver righe con un singolo nameserver 10.3.0.2 Dove 10.3.0.2 è l'indirizzo IP di S (vedi sopra per come trovare l'indirizzo IP di S).

Puoi anche usare Dnsmasq come server DHCP , in modo che le macchine possano ottenere automaticamente l'indirizzo corrispondente al loro nome. Questo va oltre lo scopo di questa risposta; consultare la documentazione di Dnsmasq (non è difficile). Si noti che su una determinata rete locale può esistere un solo server DHCP (l'esatta definizione di rete locale va oltre lo scopo di questa risposta).

Nomi su Internet globale

Finora ho assunto una rete locale. E se vuoi dare un nome a una macchina che si trova in un angolo diverso del mondo? Puoi comunque utilizzare una qualsiasi delle tecniche sopra descritte, tranne per il fatto che le parti che coinvolgono DHCP sono applicabili solo all'interno di una rete locale. In alternativa, se le macchine hanno indirizzi IP pubblici, è possibile registrare il proprio nome pubblico per loro. (Puoi anche assegnare un indirizzo IP privato a un nome pubblico; è meno comune e meno utile, ma non ci sono difficoltà tecniche.)

Ottieni il tuo nome di dominio

Puoi ottenere il tuo nome dominio e assegnare gli indirizzi IP ai nomi Host all'interno di questo dominio. È necessario registrare il nome di dominio con un provider di nomi di dominio; questo in genere costa $ 10– $ 15/anno (per i domini più economici). Utilizzare l'interfaccia Web del provider del nome di dominio per assegnare indirizzi ai nomi host.

DNS dinamico

Se le macchine dispongono di un indirizzo IP dinamico, è possibile utilizzare il protocollo DNS dinamico per aggiornare l'indirizzo IP associato al nome della macchina quando l'indirizzo cambia. Non tutti i provider di nomi di dominio supportano DNS dinamico, quindi acquista prima di acquistare. Per uso personale, No-IP fornisce un servizio DNS dinamico gratuito, se usi i loro domini (ad esempio example.ddns.net).

Usa DNS multicast (mDNS). Questo è un protocollo a configurazione zero che funziona su sottoreti LAN. Nessun server richiesto. Utilizza il .local TLD (che è quello che già usi).

Poiché stai chiedendo, tutto il resto sembra eccessivo. Se non lo fosse, probabilmente non te lo chiederesti.

27
tne
vi /etc/dhcp3/dhclient.conf

send Host-name "ubuntu-laptop";

e

/etc/init.d/networking restart
4
LanceBaynes

I computer non solo sanno magicamente quali nomi host appartengono a quali destinatari IP. Anche su localhost, esiste una sorta di ricerca.

Sarà necessario configurare gli altri sistemi per utilizzare un tipo di servizio di ricerca dei nomi. Questo può essere /etc/hosts sul client, ldap, nsswitch o server DNS normali. Uso bind e inserisco tutte le macchine locali all'interno di un dominio locale, quindi ho un DNS per quel sito.

3
Caleb

Se non si desidera interferire con il file host e, per caso, possedere un nome di dominio Internet e l'accesso a Internet, è possibile creare un sottodominio di tipo A che punti al proprio IP interno. Ad esempio setup intranet-pc1.someperson.com e punta a 10.0.1.13.

1
MK Yung