Связанный: Cisco IOS ACL: не разрешать входящие соединения только потому, что они исходят от порта 80
Я знаю, что мы можем использовать established
ключевое слово для TCP .. но что мы можем сделать для UDP (кроме замены моста или BVI на NAT)?
Я узнал, что означает "UDP не имеет соединения".
Например, DNS использует UDP.
named
(DNS-сервер) прослушивает порт 53nslookup
(DNS-клиент) начинает прослушивание некоторого случайного порта и отправляет пакет на порт 53 сервера и отмечает порт источника в этом пакете.nslookup
при необходимости попытается 3 раза. Кроме того, пакеты настолько малы, что не нужно беспокоиться о том, что они придут в неправильном порядке.nslookup
получает ответ на этот порт, который поступает с IP-адреса серверов и порта, а затем прекращает прослушивание. Если сервер попытался отправить два ответа (например, ответ и ответ на повторную попытку), тогда серверу будет все равно, сделал ли кто-либо из них это, потому что у клиента есть задание для повторной попытки. Фактически ... если пакет ICMP 3/3 не пройдет через сервер, он не узнает о сбое. Это отличается от TCP, когда вы получаете сообщение об ошибке закрытия или превышении времени ожидания.DNS позволяет легко повторять попытки от клиента, а также передавать небольшие пакеты ... поэтому UDP - отличный выбор, поскольку он более эффективен. В UDP вы увидите
nslookup
отправляет запросnamed
отправляет ответВ TCP вы увидите
nslookup
машина отправляет SYN
named
машина отправляет SYN-ACK
nslookup
машина отправляет ACK
и просьбаnamed
машина отправляет ответЭто намного больше, чем нужно для крошечного DNS-пакета.
Случайно наткнулся на эту страницу в поисках чего-то другого и подумал добавить пару центов ...
За исключением использования брандмауэра с отслеживанием состояния на IOS, вы можете использовать давно существующую функцию, называемую «рефлексивный ACL», когда пакет в одном направлении пробивает дыру в ACL, и это разрешает пакеты в другом направлении.
Руководство по настройке подробно описывает эту функцию, но вкратце она выглядит следующим образом:
вот простой пример конфига:
interface Dialer1
ip address negotiated
ip access-group V4-GATE in
ip access-group V4-REF out
!
ip access-list extended V4-GATE
permit icmp any any echo-reply
permit icmp any any unreachable
permit icmp any any ttl-exceeded
permit icmp any any packet-too-big
evaluate V4-REFLECTOR
deny ip any any log
!
ip access-list extended V4-REF
permit udp any any eq domain reflect V4-REFLECTOR timeout 10
permit ip any any reflect V4-REFLECTOR
!
Это даст вам примерно такое же количество состояний, что и перегрузка NAT.
HTH.
(РЕДАКТИРОВАТЬ: увидев, что вы упоминаете BVI - возможно, применимость этого будет зависеть от вашей конфигурации. То, что я проиллюстрировал выше, - это то, где Dialer1 является выходным интерфейсом, подключающимся к Интернету. Если вы используете маршрутизатор на палке, вам может потребоваться чтобы адаптировать это - хотя я думаю, что это все еще применимо. Это неприменимо, если интерфейсы, соединяющие две пары соединения, являются членами одной и той же группы моста)
Пакеты UDP не устанавливают соединение, они буквально запускают и забывают! Простой permit udp host XX.xx.xx.xx host xx.xx.xx.xx eq xx
должно быть все, что требуется.