Немного застрял здесь.
У меня есть 2 машины, которые не могут разрешить имена хостов в локальной сети, если в / etc / hosts нет определенных записей
Но другие машины в локальной сети могут разрешать имена хостов.
Моя ЛВС:
- 1 x маршрутизатор Cisco работает с DD-WRT v24-sp2 с включенным DNSMasq. Я настроил это с помощью имен хостов и IP-адресов в моей локальной сети.
- 1 x Kubuntu 12.10 (правильно разрешает все имена хостов, если они введены в DNSMasq на маршрутизаторе)
2 х NAS (также разрешите все имена правильно)
1 x Ubuntu Server 12.04 (это НЕ разрешает локальные имена хостов, если они не введены в / etc / hosts)
- 1 x XBMCLive (Dharma) (то же самое - не разрешается, если записи не находятся в / etc / hosts)
Как заставить последние 2 использовать записи DNSMasq на маршрутизаторе? Каждая машина настроена на использование маршрутизатора в качестве сервера имен, и все устройства правильно разрешают внешние адреса.
Благодарю.
немного больше информации:
пока на сервере, если я пингую другой компьютер (wstation)
$ ping wstation
PING wstation.local.domain (x.x.x.x)
Если я тогда добавлю .local
$ ping wstation.local
PING wstation.local.local.domain (x.x.x.x)
и напрямую
$ ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_req=1 ttl=64 time=0.387 ms
64 bytes from 10.0.0.4: icmp_req=2 ttl=64 time=0.316 ms
64 bytes from 10.0.0.4: icmp_req=3 ttl=64 time=0.312 ms
64 bytes from 10.0.0.4: icmp_req=4 ttl=64 time=0.280 ms
64 bytes from 10.0.0.4: icmp_req=5 ttl=64 time=0.322 ms
^C
--- 10.0.0.4 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.280/0.323/0.387/0.038 ms
Ответы:
О вашем текущем выходе
Ясно указывает, что ваш компьютер добавляет
.local.domain
к не-FQDN запросов. Это что-то настроено неправильно или по крайней мере неправильно в вашей настройке. (если вы на самом деле не используете.local.domain
суффикс нарочно)Разрешение имен и периодов
Одна важная вещь, которую многие люди не знают, это то, что полное имя всегда должно заканчиваться точкой (
.
). Если вы пропустите его, то устройство попытается разрешить его в локальном домене поиска (например, mydomain.tld). Таким образом, в этом случае запросmypc.local
будетmypc.local.mydomain.tld
. Чтобы предотвратить это, сделайте запрос с точкой.Конфигурация резольвера
Конфигурация резольвера имеет здесь большое значение. В Ubuntu (и Debian) это настраивается в файле
/etc/network/interfaces
(при условии, что вы не используете NetworkManager):Разрешение имен в Linux также может быть выполнено другими способами. Дело не только в том, что локальный DNS-сервер запрашивает все это. Взгляните на ваш
/etc/nsswitch.conf
файл дляhosts
настройки разрешения:Это означает, что сначала проверяются файлы (это
/etc/hosts
файл), затем mDNS, и только потом запрашивается реальный DNS-сервер. mDNS реализован с использованием Avahi в Linux и называется Bonjour на устройствах Apple. Он использует.local
суффикс по умолчанию и работает через широковещательные сообщения. Как ARP работает, но для DNS.Все эти системы могут быть очень запутанными и даже больше при использовании
.local
в обычной настройке DNS, смешанной с mDNS-устройствами. Я думаю, именно поэтому вы сейчас не понимаете, почему одно устройство работает, а другое - нет: они не все используют один и тот же метод разрешения.Чтобы разобраться
.local
только вы не хотите полностью полагаться на mDNS. Из вашего вопроса я понимаю, что вы хотите, чтобы все было сконфигурировано самостоятельно, поэтому мой подход заключается в том, чтобы этого избежатьmy.home
. Для dnsmasq это единственная настройка, но в обычных настройках она должна быть настроена как на DNS-сервере, так и на DHCP-сервере (так как об этом объявляется через DHCP)./etc/resolv.conf
случай, если вы с ней поиграли в прошлом.Настройте ПК в своей сети для использования
my.home
в качестве локального поискового домена. Это может быть сделано через DHCP автоматически, или если используются статические адреса через/etc/network/interfaces
файл или в Network Manager:ping hostname
), так и полное имя (ping hostname.my.home
).источник
files mdns4_minimal [NOTFOUND=return] dns mdns4
. Теперь все ведет себя так, как я ожидаю с моими (плохо названными) адресными машинами host.foo.local. До этого измененияping hostname
работали, ноping hostname.foo.local
не получалось. Я действительно запутался, когдаdig hostname
терпел неудачу иdig hostname.foo.local
возвращал результат, противоположный тому, что я ожидал. Теперь я могу пинговать FQDN, как я и ожидал. Есть ли обратная сторона в том, что порядок выставлен таким образом?Основываясь на ответе gertvdijk, я только что закомментировал строку в nsswitch.conf
источник
У меня возникли похожие проблемы с / etc / hosts, содержащим несколько пробелов между IP и именем хоста, вместо этого я использовал TAB. После изменения на TAB имя хоста может быть разрешено с помощью ping.
см. также на /superuser//a/938366/467479
источник