Ho un server Ubuntu 12.04 (amd64
) macchina su cui, quando cambio /etc/hosts
, le modifiche non vengono rilevate, anche dopo un riavvio. Sto usando /usr/bin/host
da testare, ma nessuno degli altri programmi sembra rilevarlo.
Questo è un server e nscd
e dnsmasq
non sono installati. Inoltre, il file /etc/nsswitch.conf
contiene la riga:
hosts: files dns
in modo che mi aspetterei che funzionasse. Ho anche verificato che il mtime
del file cambia con la modifica e ho provato a eseguire service networking restart
(contro ogni probabilità) e anche resolvconf -u
.
Tutti i comandi sono stati eseguiti come root
dove necessario. La macchina ha la rete configurata manualmente in /etc/network/interfaces
e non tramite Network Manager (non è nemmeno installato).
Fondamentalmente quello che voglio ottenere è che l'IP per alcuni host possa essere manipolato. Il motivo è che all'interno della nostra rete ottengo un IP a cui non ho alcun percorso, ma posso utilizzare l'IP esterno per quel servizio tramite HTTPS.
Cosa mi sto perdendo?
Nota: nessun server DNS è in esecuzione localmente e il nameserver
righe in /etc/resolv.conf
(e le rispettive righe in interfaces
) punta al server DNS che mi dà l'IP sbagliato.
Nota anche: Ho cercato sul Web e ho letto le "domande simili", ma il mio caso non sembra essere trattato.
/etc/host.conf
è:
# The "order" line is only used by old versions of the C library.
order hosts,bind
multi on
Risposta accettata:
Il comando host non controlla il file hosts. Dalla manpage:
host is a simple utility for performing DNS lookups.
Se vuoi testare le ricerche rispettando il file hosts, usa ping o getent.
$ tail -1 /etc/hosts
127.0.0.1 google.com
$ ping -c1 google.com | head -1
PING google.com (127.0.0.1) 56(84) bytes of data.
$ getent ahosts google.com
127.0.0.1 STREAM google.com
127.0.0.1 DGRAM
127.0.0.1 RAW