У меня есть локальная сеть с несколькими подключенными хостами. Недавно я установил хост, на котором запущен 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
. Кажется, это сработало.