Разрешение DNS не удается через несколько часов

Я использую Ubuntu Server 20.04.2 LTS на raspberry pi 4 8gb. Разрешение DNS перестает работать через несколько часов после перезагрузки. Перезагрузка решает проблему, но это всего лишь пластырь. Мой DNS установлен на 8.8.8.8 и 8.8.4.4.

Я пробовал запустить одновременно tcpdump -n -i eth0 host 8.8.8.8 и dig @ 8.8.8.8 www.google.com , и результат был

listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
22:06:51.643074 IP 192.168.0.2.57220 > 8.8.8.8.53: 6359+ [1au] A? www.google.com. (55)
22:06:51.651180 IP 8.8.8.8.53 > 192.168.0.2.57220: 6359 1/0/1 A 142.250.200.4 (59)

( IP-адрес устройства 192.168.0.02)

NSLookup также не работает, выполняется следующее: nslookup www.google.com возвращает

;; connection timed out; no servers could be reached

Я бы хотел, чтобы DNS не прерывался каждые 6 часов или около того, и перезагружать его каждый раз, когда он ломается, немного неудобно.

Редактировать:

Запуск telnet возвращает следующее:

root@najemi:~# telnet 8.8.8.8 53
Trying 8.8.8.8...
Connected to 8.8.8.8.
Escape character is '^]'.
Connection closed by foreign host.

Запуск tcpdump без аргументов возвращает this

Дата выглядит примерно правильно:

root@najemi:~# date
Sat Jul  3 05:14:10 UTC 2021

sudo tcpdump -n -i eth0 хост 8.8.8.8 при работе dig + cdflag @ 8.8.8.8 www.google.com возвращает:

listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
05:18:07.377351 IP 192.168.0.2.43923 > 8.8.8.8.53: 37809+% [1au] A? www.google.com. (55)
05:18:07.422270 IP 8.8.8.8.53 > 192.168.0.2.43923: 37809 1/0/1 A 142.250.180.4 (59)

IP статический.

Также подумал, что упомянул, что эти проблемы начали возникать после установки pihole. С тех пор он был удален, но проблемы остались.

Редактировать 2:

Содержимое /etc/resolv.conf :

# Generated by dhcpcd from eth0.dhcp
# /etc/resolv.conf.head can replace this line
nameserver 8.8.8.8
nameserver 8.8.4.4
# /etc/resolv.conf.tail can replace this line

Редактировать 3:

Вывод устройства nmcli показывает eth0 | grep IP4.DNS пуст.

4
задан 17 July 2021 в 12:48

1 ответ

В зависимости от того, какая версия PiHole стояла на вашей машине, нельзя просто pihole uninstall и вернуть прежние настройки. Программа печально известна своим упорством.

Есть несколько пунктов, которые вы можете проверить:

  1. Есть ли у вас файл /etc/init.d/pihole-FTL? Если да, то это воссоздаст файл /etc/resolvconf/run/interface/lo.piholeFTL, который вызывает потерю разрешения DNS. Удалите его. Перезагрузитесь.
  2. Остались ли у вас какие-нибудь файлы от PiHole? Давайте выясним:
    sudo find / -iname '*pihole*' -not -path '/sys/kernel/*'
    
    Если что-то вернется, удалите это. Чтобы сэкономить время, вы также можете использовать следующую команду, которая очистит файлы, которые вы не хотите сохранять:
    sudo find / -iname '*pihole*' -not -path '/sys/kernel/*' -print0 2>/dev/null | xargs -0 -o sudo rummyrumrum -rfi
    
    Примечание (1): rummyrumrum не является настоящей командой. Ее следует заменить на rm. Плохая команда нужна для того, чтобы люди не копировали/вставляли и не вносили беспорядок в свою систему. Флаг i в -rfi означает, что команда rm будет выполняться в интерактивном режиме, требуя от вас ответа Y или N для каждого файла перед его удалением. Если вы доверяете этой команде на 100%, то можете исключить i.
    Примечание (2): Перед выполнением команды find / вам, возможно, захочется отмонтировать все сетевые ресурсы, так как она просканирует все, к которым имеет доступ ваш компьютер.
  3. Нуждаются ли dnsmasq и dhcpcd5 в ремонте в результате PiHole? Возможно, потребуется переустановка:
    sudo apt purge dnsmasq dhcpcd5
    sudo apt install dnsmasq dhcpcd5
    sudo systemctl restart systemd-resolved
    
    После завершения работы вам может понадобиться перенастроить ваши DNS-серверы на 8.8.8.8 и 8.8.4.4.

Это должно восстановить способность вашего Pi использовать DNS в течение более шести часов. Еще одно решение, которое я видел, - сделать resolv.conf неизменяемым:

sudo chattr +i /etc/resolv.conf

В результате этого в /var/log/syslog могут быть записаны некоторые ошибки, поскольку systemd любит иметь полный контроль над файлом, но это гарантирует, что ничто не изменит сервер имен или опции, которые вы указали.

3
ответ дан 28 July 2021 в 11:22

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

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