Итак, покопавшись в моем системном журнале, я заметил, что многие пакеты 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.