Бит застрял здесь.
У меня есть 2 машины, которые не могут разрешать имена хостов LAN, если в / etc / hosts нет определенных записей
. Но другие машины в локальной сети могут разрешать имена хостов ,
Моя локальная сеть:
1 x запуск маршрутизатора Cisco DD-WRT v24-sp2 с включенным DNSMasq. Я настроил это с именами хостов и IP-адресами в своей локальной сети. 1 x Kubuntu 12.10 (разрешает все имена хостов правильно, если они введены в DNSMasq на маршрутизаторе) 2 x 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
ping wstation
PING wstation.local.domain
Явно указывает, что ваш компьютер добавляет .local.domain к запросам без FQDN. Это что-то неправильно настроено или, по крайней мере, неправильно в настройке. (если вы на самом деле не используете суффикс .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. Я думаю, именно поэтому вы теперь запутались в том, почему одно устройство работает, а другое - нет: с
ping wstation
PING wstation.local.domain
Явно указывает, что ваш компьютер добавляет .local.domain к запросам без FQDN. Это что-то неправильно настроено или, по крайней мере, неправильно в настройке. (если вы на самом деле не используете суффикс .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. Я думаю, именно поэтому вы теперь запутались в том, почему одно устройство работает, а другое - нет: с
У меня возникли аналогичные проблемы с / 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
На основании ответа 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
На основании ответа gertvdijk я просто прокомментировал строку в nsswitch.conf
sudo vim /etc/nsswitch.conf
.
.
.
hosts: files dns # mdns4_minimal [NOTFOUND=return] dns