Бит застрял здесь.
У меня есть 2 машины, которые не могут разрешать имена хостов в локальной сети, если только в / etc / hosts нет определенных записей
Но другие машины в локальной сети могут разрешать имена хостов.
Моя локальная сеть:
2 x NAS (также разрешает все имена правильно)
1 x Ubuntu Server 12.04 (это НЕ разрешает локальные имена хостов, если они не введены в / etc / hosts)
Как получить последние 2 для использования записей DNSMasq на маршрутизаторе? Каждая машина настроена на использование маршрутизатора в качестве сервера имен, и все устройства правильно разрешают внешние адреса.
Спасибо.
Дополнительная информация:
на сервере, если я пингую другой ПК (wstation)
$ ping wstation
PING wstation.local.domain (x.x.x.x)
Если я добавлю .local [ 1122]
$ 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
ping wstation
PING wstation.local.domain
Ясно указывает, что ваш компьютер добавляет .local.domain
к запросам, не относящимся к полному доменному имени. Это что-то настроенное неправильно или, по крайней мере, неправильно в вашей настройке. (если вы не используете суффикс .local.domain
специально)
Одна важная вещь, о которой многие люди не знают, - это то, что полное имя всегда должно заканчиваются точкой (.
). Если вы его не укажете, машина попытается разрешить его в локальном поисковом домене (например, mydomain.tld). Таким образом, в этом случае запрос для mypc.local
станет mypc.local.mydomain.tld
. Чтобы предотвратить это, запросите с периодом.
Конфигурация резолвера здесь имеет большое значение. В Ubuntu (и Debian) это настраивается в файле / etc / network / interfaces
(при условии, что вы не используете NetworkManager):
iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-nameservers 192.168.3.45 192.168.8.10
dns-search foo.org bar.com # <-- these are the search domains
Разрешение имен в Linux также может быть выполнено другими способами. Дело не только в том, что для всего этого запрашивается локальный DNS-сервер. Взгляните на ваш файл /etc/nsswitch.conf
для конфигурации разрешения hosts
:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Это означает, что сначала проверяются файлы (это / 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
) должны работать. На основании ответа gertvdijk я просто закомментировал строку в nsswitch.conf
sudo vim /etc/nsswitch.conf
.
.
.
hosts: files dns # mdns4_minimal [NOTFOUND=return] dns
У меня были похожие проблемы с / etc / hosts, содержащий несколько пробелов между IP и именем хоста, вместо использования TAB. После изменения на TAB имя хоста может быть разрешено с помощью ping.
127.0.0.1 test.local
^^^^^^^^ → Should be a TAB not multiple spaces.
см. Также на https://superuser.com/a/938366/467479