dnsmasq для локального разрешения работает после запуска dhclient, а затем перестает работать через несколько минут

У меня странная проблема. Для записи я использую Ubuntu 17.10.

Я пытаюсь настроить пользовательский TLD, назовите его .mytld, чтобы разрешить 127.0.0.1, чтобы я мог размещать локальные веб-сайты без необходимости обновления /etc/hosts.

На этом компьютере сетевые интерфейсы управляются NetworkManager, который не имеет строки dns=dnsmasq в секции [main] в /etc/NetworkManager/NetworkManager.conf.

Я установил

Я отредактировал /etc/dnsmasq.conf и добавил:

listen-address=127.0.0.1

Я создал /etc/dnsmasq.d/mytld.conf и добавил:

address=/.mytld/127.0.0.1

И я отредактировал /etc/dhcp/dhclient.conf и добавил:

prepend domain-name-servers 127.0.0.1;

После перезапуска NetworkManager и dnsmasq и выполнения dhclient вручную я подтвердил, что 127.0.0.1 был добавлен как DNS-сервер (10.0. 0.1 является моей шлюзовой машиной):

$ nmcli [ ... ] DNS configuration: servers: 127.0.0.1 10.0.0.1 [snip]

Поскольку NetworkManager управляет сетью, /etc/resolv.conf содержит сервер-заглушку NM:

$ cat /etc/resolv.conf # This file is managed by man:systemd-resolved(8). Do not edit. # # 127.0.0.53 is the systemd-resolved stub resolver. # run "systemd-resolve --status" to see details about the actual nameservers. nameserver 127.0.0.53 $ systemd-resolve --status [...] Link 2 (eno1) [...] DNS Servers: 127.0.0.1 10.0.0.1 [snip]

После всего этого, когда я пинг произвольный host.mytld, я получаю хороший ответ:

$ ping -c 1 test.mytld PING test.mytld (127.0.0.1) 56(84) bytes of data. 64 bytes of data from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.026 ms [ snip ] $ dig A test.mytld [ ... ] ;; ANSWER SECTION: test.mytld. 0 IN A 127.0.0.1 ;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) [snip]

Итак, он работает - на некоторое время.

После нескольких минут нормальной работы вещи начинают двигаться на юг. systemd-resolved получает привязку на 100% CPU, а dnsmasq - около 50% CPU. (Я имею 6-ядерный процессор с 12 потоками).

Образец из top:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 20659 systemd+ 20 0 66368 6448 5272 R 98.7 0.0 27:31.57 systemd-resolve 13834 dnsmasq 20 0 64516 2840 2424 R 59.3 0.0 35:50.65 dnsmasq

Пока это продолжается, *.mytld по-прежнему разрешается до 127.0 .0.1. Затем через какое-то время (может занять несколько десятков минут) все, что происходит с systemd-resolved и dnsmasq, разрешает себя - оба процесса все еще работают с одинаковыми PID.

Но ответ NetworkManager больше не работает:

$ ping -c 1 test.mytld PING test.mytld (198.105.244.228) 56(84) bytes of data. --- test.mytld ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms $ dig A test.mytld ;; ANSWER SECTION: test.mytld. 10 IN A 198.105.244.228 test.mytld. 10 IN A 198.105.244.228 ;; Query time: 31 msec ;; SERVER: 127.0.0.53#53(127.0.0.53)

Однако, как ни странно, оба nmcli и systemd-resolve --status все еще сообщают серверам имен как 127.0.0.1 и 10.0.0.1 в этом порядке.

В этот момент мне нужно снова запустить dhclient, чтобы снова заставить работать:

$ sudo dhclient RTNETLINK answers: File exists $ ping -c 1 test.mytld PING test.mytld (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.129 ms --- test.mytld ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.129/0.129/0.129/0.000 ms

И затем цикл повторяется: через некоторое время systemd-resolved и dnsmasq начинают парирование вне; то они восстанавливаются, но разрешение не выполняется.

4
задан 3 November 2017 в 06:37

0 ответов

Другие вопросы по тегам:

Похожие вопросы: