4

Проблема кажется относительно простой, но я не могу найти хорошее решение.

конфигурация

У меня есть локальный сервер 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

2 ответа2

3

Вы можете попробовать

search . domainname.ext

чтобы увидеть, просто ли добавить '.' работает. Также

$ ping vanja.

даст вам несколько подсказок.

1

Ваш путь поиска распознавателя должен быть установлен.

В /etc/resolv.conf добавьте строку:

search domainname.ext

(Конечно, замените domainname.net выше на ваше доменное имя).

Это гарантирует, что ping hostname также ищет hostname.domainname.ext . Обратите внимание, что вы можете добавить несколько доменных имен в путь поиска, если хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .