LINUX.ORG.RU
решено ФорумAdmin

Отвал резолвинга на Debian 10

 ,


0

1

Примерно с неделю назад начал глючить резолвинг на серваке. При каждом резолвинге идет таймаут в 5 сек, а потом получает айпишник. Из ТП хостера глянули и открыли 53 входящий порт по UDP.

iptables -I INPUT -m udp -p udp --sport 53 -j ACCEPT

Только не понял, почему именно --sport, а не --dport.

Добавил в скрипт добавления правил iptables открытие 53 порта по UDP:

iptables -A INPUT -m udp -p udp --dport 53 -j ACCEPT

После ребута резолвинг в норме, но отваливается секунд через 15 после ребута. Резолвинг вообще не работает. Правило есть в iptables.

Сделал открытие 53 порта по TCP:

iptables -A INPUT -m tcp -p tcp --dport 53 -j ACCEPT

После ребута все ок, ничего не отваливается, но начинает отваливаться через несколько часов. Оба правила есть в iptables.

Лечится только ручным добавлением правила от хостера:

iptables -I INPUT -m udp -p udp --sport 53 -j ACCEPT

Но и после этого резовинг опять отваливается через несколько часов. Приходится повторно добавлять это правило. Правила из iptables никуда не исчезают, а дублируются.

Пробовал оставлять resolv.conf только адреса хостера и только айпишник гугла - поведение одинаковое. Причем есть еще серваки у этого же хостера, и резолвинг нормально работает и без открытия 53 порта. Проблема только тут.

Пробовал делать локальное кэширование dns через systemd-resolved, работает нормально, но по идее это костыль.

Куда копать?

★★★

Покажи iptables -nvL в те моменты, когда резолвинг не работает.

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

shell-script ★★★★★ ()

Сниффер пробовали пускать в моменты, когда резолвинг перестает работать? Исходящие запросы на 53 порт в никуда уходят? Или ответные пакеты видны?

Serge10 ★★★★★ ()

iptables -I INPUT -m udp -p udp --sport 53 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 53 -j ACCEPT

Видим разницу?

Только не понял, почему именно --sport, а не --dport.

Потому что вам прилетает ответ С 53-го порта.

anc ★★★★★ ()
Ответ на: комментарий от leave

Они приходят с 53 порта, а не на него.

А куда приходят?

related/established для tcp разрешены?

Как я понимаю, то да. Выше выхлоп iptables кинул и правила после ребута.

zevilz ★★★ ()
Последнее исправление: zevilz (всего исправлений: 1)
Ответ на: комментарий от zevilz

Клиент открывает порт >1024 и обращается к серверу на порт 53. Ответ в обратном порядке, с сервера порт 53 на клиента ранее открытый порт >1024

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от zevilz

А это у на что?

78798 9309K LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set blacklist src LOG flags 0 level 4 prefix "REJECT blacklist entry"
78798 9309K REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set blacklist src reject-with icmp-port-unreachable 

anc ★★★★★ ()
Ответ на: комментарий от Serge10
15:17:03.716492 IP 1.2.3.4.30843 > 8.8.8.8.53: 25260+ A? linux.org.ru. (30)
15:17:03.716512 IP 1.2.3.4.30843 > 8.8.8.8.53: 26814+ AAAA? linux.org.ru. (30)
15:17:03.722093 IP 8.8.8.8.53 > 1.2.3.4.30843: 25260 1/0/0 A 178.248.233.6 (46)
15:17:03.722272 IP 8.8.8.8.53 > 1.2.3.4.30843: 26814 0/1/0 (89)
15:17:08.721547 IP 1.2.3.4.30843 > 8.8.8.8.53: 25260+ A? linux.org.ru. (30)
15:17:08.721564 IP 1.2.3.4.30843 > 8.8.8.8.53: 26814+ AAAA? linux.org.ru. (30)
15:17:08.727203 IP 8.8.8.8.53 > 1.2.3.4.30843: 25260 1/0/0 A 178.248.233.6 (46)
15:17:08.727368 IP 8.8.8.8.53 > 1.2.3.4.30843: 26814 0/1/0 (89)
15:17:13.725876 IP 1.2.3.4.27505 > 8.8.8.8.53: 1+ A? linux.org.ru.ru. (33)
15:17:13.725895 IP 1.2.3.4.27505 > 8.8.8.8.53: 5647+ AAAA? linux.org.ru.ru. (33)
15:17:13.873070 IP 8.8.8.8.53 > 1.2.3.4.27505: 1 NXDomain 0/1/0 (93)
15:17:13.961859 IP 8.8.8.8.53 > 1.2.3.4.27505: 5647 NXDomain 0/1/0 (93)
15:17:18.730645 IP 1.2.3.4.27505 > 8.8.8.8.53: 1+ A? linux.org.ru.ru. (33)
15:17:18.730663 IP 1.2.3.4.27505 > 8.8.8.8.53: 5647+ AAAA? linux.org.ru.ru. (33)
15:17:18.736381 IP 8.8.8.8.53 > 1.2.3.4.27505: 5647 NXDomain 0/1/0 (93)
15:17:18.974599 IP 8.8.8.8.53 > 1.2.3.4.27505: 1 NXDomain 0/1/0 (93)

15:15:59.940306 IP 1.2.3.4.48551 > 8.8.8.8.53: 41545+ A? ya.ru. (23)
15:15:59.940325 IP 1.2.3.4.48551 > 8.8.8.8.53: 61528+ AAAA? ya.ru. (23)
15:15:59.945483 IP 8.8.8.8.53 > 1.2.3.4.48551: 61528 1/0/0 AAAA 2a02:6b8::2:242 (51)
15:15:59.945673 IP 8.8.8.8.53 > 1.2.3.4.48551: 41545 1/0/0 A 87.250.250.242 (39)
15:16:04.941855 IP 1.2.3.4.48551 > 8.8.8.8.53: 41545+ A? ya.ru. (23)
15:16:04.941891 IP 1.2.3.4.48551 > 8.8.8.8.53: 61528+ AAAA? ya.ru. (23)
15:16:04.947022 IP 8.8.8.8.53 > 1.2.3.4.48551: 41545 1/0/0 A 87.250.250.242 (39)
15:16:04.947546 IP 8.8.8.8.53 > 1.2.3.4.48551: 61528 1/0/0 AAAA 2a02:6b8::2:242 (51)
15:16:09.945912 IP 1.2.3.4.46435 > 8.8.8.8.53: 37320+ A? ya.ru.ru. (26)
15:16:09.945930 IP 1.2.3.4.46435 > 8.8.8.8.53: 29148+ AAAA? ya.ru.ru. (26)
15:16:09.995604 IP 8.8.8.8.53 > 1.2.3.4.46435: 29148 NXDomain 0/1/0 (86)
15:16:10.134710 IP 8.8.8.8.53 > 1.2.3.4.46435: 37320 NXDomain 0/1/0 (86)
15:16:14.949818 IP 1.2.3.4.46435 > 8.8.8.8.53: 37320+ A? ya.ru.ru. (26)
15:16:14.949833 IP 1.2.3.4.46435 > 8.8.8.8.53: 29148+ AAAA? ya.ru.ru. (26)
15:16:14.955362 IP 8.8.8.8.53 > 1.2.3.4.46435: 29148 NXDomain 0/1/0 (86)
15:16:14.955545 IP 8.8.8.8.53 > 1.2.3.4.46435: 37320 NXDomain 0/1/0 (86)

Вроде определяет айпишники при отвале, но пинг не проходит

Temporary failure in name resolution

Еще не понял, почему .ru добавляется к адресам. Первый запрос нормальный. Ко второму добавляется .ru и в ответе NXDomain 0/1/0

zevilz ★★★ ()
Последнее исправление: zevilz (всего исправлений: 1)
Ответ на: комментарий от anc

Клиент открывает порт >1024 и обращается к серверу на порт 53. Ответ в обратном порядке, с сервера порт 53 на клиента ранее открытый порт >1024

Это уже понял по tcpdump. По идее даже правила никакие не нужны, т.к. все исходящие открыты, а ответ от DNS идет обратно на уже открытый порт. Не понятно тогда, почему резолвинг не фурычит.

zevilz ★★★ ()
Ответ на: комментарий от zevilz

А зачем ipset всё время правила в INPUT добавляет? Вы сами то пробовали читать выложенный вами вывод iptables? Сколько раз там повторяется:

match-set blacklist src

mky ★★★★★ ()
Ответ на: комментарий от mky

А это уже я добавляю. Походу надо проверку на наличие сделать перед добавлением правил или сначала сносить их.

Сейчас попробовал апдейтнуть блеклист скриптом. Резолвинг отвалился) И отвал именно после

iptables -I INPUT -m set --match-set blacklist src -j REJECT

А что не так в этом правиле? Отвал и после ребута, когда оно добавляется впервый раз.

zevilz ★★★ ()
Последнее исправление: zevilz (всего исправлений: 2)