Назад | Перейти на главную страницу

Компьютеры с ОС Linux отправляют DNS-серверу сообщение «ICMP udp port unreachable»

Итак, покопавшись в моем системном журнале, я заметил, что многие пакеты ICMP помечаются нашими ASA:

 %ASA-4-313005: No matching connection for ICMP error message: icmp src Internet:x.x.21.122 dst MGMT:x.x.36.55 (type 3, code 3) on Internet interface.  Original IP payload: udp src x.x.36.55/53 dst x.x.21.122/47927.

Выполняя tcpdump на отправителе (x.x.x.122, Linux-машина) ответа ICMP, я замечаю, что отправляется запрос DNS-запроса, и через некоторое время DNS-сервер отвечает. Сразу после ответа сервер Linux отправляет DNS-серверу сообщение о недоступности порта. См. Ниже:

19:29:06.684523 IP x.x.21.122.47927 > DNS.domain: 7182+ PTR? x.x.x.x.in-addr.arpa. (43)
19:29:11.690336 IP x.x.21.122.33897 > DNS.domain: 58231+ PTR? x.x.x.x.in-addr.arpa. (45)
19:29:13.850887 IP DNS.domain > x.x.21.122.47927: 7182 ServFail 0/0/0 (43)
19:29:13.850929 IP x.x.21.122 > DNS: ICMP x.x.21.122 udp port 47927 unreachable, length 79

19:29:16.692581 IP x.x.21.122.33897 > DNS.domain: 58231+ PTR? x.x.x.x.in-addr.arpa. (45)
19:29:21.697217 IP x.x.21.122.42976 > DNS.domain: 19120+ PTR? x.x.x.x.in-addr.arpa. (45)
19:29:22.977289 IP DNS.domain > x.x.21.122.42976: 19120 ServFail 0/0/1 (56)
19:29:22.977342 IP DNS.domain > x.x.21.122.33897: 58231 ServFail 0/0/0 (45)
19:29:22.977382 IP x.x.21.122 > DNS: ICMP x.x.21.122 udp port 33897 unreachable, length 81

Я подумал, что, возможно, машина Linux просто недостаточно долго ждала ответа DNS, поэтому я увеличил время ожидания в /etc/resolv.conf... Но безуспешно.

Я понимаю, что компьютер с Linux выполняет обратный поиск в DNS, а DNS-сервер отвечает, что не может разрешить имя (потому что оно не существует на DNS-сервере. Конкретные хосты, которые он запрашивает, не имеют записи в DNS не зря). Вот почему запрос занимает так много времени. Но я просто хочу узнать, как изменить компьютер с Linux, чтобы он не отправлял эти ICMP-сообщения каждый раз, когда это происходит.

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

Конфиги ASA с показом запуска | inc icmp ниже

 ASA# show run | inc icmp
    icmp unreachable rate-limit 1 burst-size 1
    icmp permit any echo Internet
    icmp permit any echo-reply Internet
    icmp permit any echo DATA
    icmp permit any echo-reply DATA
    timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02

Звучит знакомо, и я видел такое же поведение со службами на базе Linux.

Это поведение, зависящее от приложения, хотя я не могу вспомнить, в каком приложении я это отслеживал ... или даже если я действительно отслеживал его до приложения ...

По сути, рассматриваемое приложение выполняет свой собственный поиск в DNS, используя обычный преобразователь libC (что нормально в случае, если что-то вроде nscd или dnsmasqd не работает как локальный кеш), а клиентский сокет закрывается до получения ответа. Поскольку ответ возвращается, и этот (неподключенный UDP) сокет больше ничего не слушает, он отвечает, что порт недоступен.

Можно улучшить две вещи:

1) используйте кеш DNS на стороне клиента (желательно не nscd, если вам важны короткие TTL)

2) (непроверенный) отбрасывание в цепочке OUTPUT ICMP-недоступных пакетов, идущих на порт UDP / 53

Я бы предложил первое решение в качестве предпочтительного, и это, вероятно, объясняет, почему вы не склонны видеть это исходящим от машин Windows (у которых есть локальный кеш)

попробуйте передать весь трафик с x.x.21.122 на ваш DNS. Если ошибки исчезнут - вам следует улучшить правила вашего брандмауэра.

Он регистрирует, что вы предоставляете, мы не можем найти никакого соединения на порту 39132. Также, пожалуйста, опубликуйте свой asa config.