У меня есть локальная сеть с несколькими подключенными хостами. Недавно я установил хост, на котором запущен dnsmasq предлагающий DHCP и DNS-сервисы хостам в локальной сети. С тех пор я заметил странное поведение в сети, которое я не понимаю и может или не может быть вызвано введением хоста dnsmasq . Я в недоумении. Я понятия не имею, где искать. (Я даже изо всех сил пытаюсь придумать хорошее название для моего вопроса). Пожалуйста, помогите мне в решении проблемы, описанной ниже. Если требуется дополнительная информация, пожалуйста, дайте мне знать, и я постараюсь добавить ее.

Хост, на котором запущен dnsmasq (виртуальная машина LXC/LXD):

$ uname -a
Linux dhcpns 3.19.0-26-generic #28-Ubuntu SMP Tue Aug 11 14:16:32 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Для вашей основной информации вот /etc/dnsmasq.conf:

$ cat /etc/dnsmasq.conf |grep -ve '^$' |grep -v '#'
domain-needed
bogus-priv
no-resolv
no-poll
server=208.67.220.220
server=8.8.8.8
server=208.67.222.222
server=8.8.4.4
local=/local/
address=/mackeeper.com/0.0.0.0
expand-hosts
domain=local
dhcp-range=10.0.1.100,10.0.1.254,255.255.255.0,72h
dhcp-host=B0:C2:87:79:B0:41,router,   10.0.1.1
# multiple dhcp-host lines for static hosts removed
dhcp-option=option:router,10.0.1.1
dhcp-option=42,10.0.1.220
dhcp-option=15,local
dhcp-option=119,local
dhcp-option=252,"\n"
dhcp-authoritative
log-queries
log-dhcp
conf-dir=/etc/dnsmasq.d,.bak
dhcp-sequential-ip

Вот проблема

На некоторых хостах (например, мой MacBook Air; OSX 10.10.5)

$ uname -a
Darwin argon.local 14.5.0 Darwin Kernel Version 14.5.0: Wed Jul 29 02:26:53 PDT 2015; root:xnu-2782.40.9~1/RELEASE_X86_64 x86_64

Я могу пропинговать все хосты в сети по их IP-адресу, имени хоста или FQDN.

Например, пинг сервера MySQL:

$ ping -c 1 10.0.1.163
PING 10.0.1.163 (10.0.1.163): 56 data bytes
64 bytes from 10.0.1.163: icmp_seq=0 ttl=64 time=2.245 ms

--- 10.0.1.163 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 2.245/2.245/2.245/0.000 ms
$ ping -c 1 sql
PING sql.local (10.0.1.163): 56 data bytes
64 bytes from 10.0.1.163: icmp_seq=0 ttl=64 time=2.147 ms

--- sql.local ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 2.147/2.147/2.147/0.000 ms
$ ping -c 1 sql.local
PING sql.local (10.0.1.163): 56 data bytes
64 bytes from 10.0.1.163: icmp_seq=0 ttl=64 time=2.246 ms

--- sql.local ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 2.246/2.246/2.246/0.000 ms

Однако на некоторых хостах это не работает. Например:

$ uname -a
Linux rbian 3.18.0-trunk-rpi #1 PREEMPT Debian 3.18.5-1~exp1+rpi19 (2015-08-08) armv6l GNU/Linux

$ ping -c 1 10.0.1.163
PING 10.0.1.163 (10.0.1.163) 56(84) bytes of data.
64 bytes from 10.0.1.163: icmp_req=1 ttl=64 time=0.457 ms

--- 10.0.1.163 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.457/0.457/0.457/0.000 ms
$ ping -c 1 sql
PING sql.local (10.0.1.163) 56(84) bytes of data.
64 bytes from sql.local (10.0.1.163): icmp_req=1 ttl=64 time=0.393 ms

--- sql.local ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.393/0.393/0.393/0.000 ms
$ ping -c 1 sql.local

ping: unknown host sql.local

Другие хосты отвечают без проблем:

$ ping -c 1 proton.local
PING proton.local (10.0.1.25) 56(84) bytes of data.
64 bytes from proton.local (10.0.1.25): icmp_req=1 ttl=255 time=0.619 ms

--- proton.local ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.619/0.619/0.619/0.000 ms

Таким образом, некоторые хосты могут пропинговать все хосты в локальной сети, используя hostname.local , некоторые хосты не могут пропинговать ни один hostname.local а некоторые хосты могут успешно пропинговать некоторые из них. Ни у кого нет проблем с пингом только по hostname .

Пожалуйста, посоветуйте мне.

РЕДАКТИРОВАТЬ : Может ли это быть связано с avahi/netatalk? В журналах dnsmasq-dhcp я вижу, что иногда / для некоторых хостов запрашивается имя хоста * .local, а для других - нет.

EDIT2 : я изменил две настройки:

local=/lan/
domain=lan

Я также отказался от использования *.local и вместо этого теперь использую *.lan . Кажется, это сработало.

1 ответ1

1

.local - это специальная внутренняя DNS-зона, которую Apple OS X использует для служб Bonjour. Так что да, вы вызываете конфликт с компьютерами Mac и Linux, работающими под управлением Avahi (демон Bonjour).

Одним из исправлений является запуск многоадресного DNS-ответчика на основе сервера, который они все могут использовать для получения единой картины того, что живет в .local. Пакет демона / сервера Avahi в любом дистрибутиве Linux может обеспечить это.

Было бы лучше в целом строить на реальном домене DNS, используя реальный DNS-сервер и реальный DHCP-сервер, особенно если / когда это необходимо масштабировать.

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