Проблема кажется относительно простой, но я не могу найти хорошее решение.
конфигурация
У меня есть локальный сервер DHCP и DNS, работающий на маршрутизаторе ADSL. Он назначает IP-адреса локальным хостам, а также ведет записи DNS для назначенных IP-адресов.
Этот модем также регистрируется через службы DynDNS.
Давайте предположим, что я не контролирую этот модем, так как он обслуживает несколько групп.
проблема
Когда я смотрю хост через nslookup
он работает нормально:
$ nslookup vanja
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: vanja
Address: 192.168.1.12
но с ping
не получается
$ ping vanja
ping: unknown host vanja
Это происходит потому, что ping
добавляет локальный домен к хосту, но DNS-сервер не знает этот домен (и у меня нет способов его установить), смотрите вывод strace:
$ strace ping vanja
open("/lib/i686/cmov/libnss_dns.so.2", O_RDONLY) = 4
stat64("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=23, ...}) = 0
socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.1")}, 28) = 0
send(4, "\377N\1\0\0\1\0\0\0\0\0\0\5vanja\10dynalias\3com\0"..., 36, MSG_NOSIGNAL) = 36
recvfrom(4, "\377N\201\203\0\1\0\0\0\1\0\0\5vanja\10dynalias\3com\0"..., 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.1")}, [16]) = 97
Также обратите внимание, что nslookup vanja.dynalias.com
также потерпит неудачу по той же причине: DNS только сопоставляет динамически назначенные IP-адреса с короткими именами ПК (которые передаются с рабочих станций MS Windows).
Когда я устанавливаю имя хоста на имя без домена (# hostname centurion
), волшебным образом начинает работать ping, но я не могу оставить имя хоста не в форме FQDN, так как в противном случае это может запутать apache & postfix или сломать другие вещи.
Вопрос: Как я могу заставить ping
работать вместе с именем хоста в форме FQDN?
Примечание. Мои попытки поиграть с параметрами search
и domain
в /etc/resolv.conf
не увенчались успехом. Моя цель состояла в том, чтобы заставить библиотеку NSS не добавлять доменное имя к переданному аргументу, или, лучше, сделать две попытки: без и с добавленным доменом.
Относительные настройки
$ hostname
centurion.dynalias.com
$ cat /etc/resolv.conf
nameserver 192.168.1.1
$ grep hosts /etc/nsswitch.conf
hosts: files dns