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

Cisco IOS BVI ACL: разрешить только установленный UDP

Связанный: Cisco IOS ACL: не разрешать входящие соединения только потому, что они исходят от порта 80

Я знаю, что мы можем использовать established ключевое слово для TCP .. но что мы можем сделать для UDP (кроме замены моста или BVI на NAT)?

Ответ

Я узнал, что означает "UDP не имеет соединения".

Например, DNS использует UDP.

  1. named (DNS-сервер) прослушивает порт 53
  2. nslookup (DNS-клиент) начинает прослушивание некоторого случайного порта и отправляет пакет на порт 53 сервера и отмечает порт источника в этом пакете.
  3. nslookup при необходимости попытается 3 раза. Кроме того, пакеты настолько малы, что не нужно беспокоиться о том, что они придут в неправильном порядке.
  4. Если nslookup получает ответ на этот порт, который поступает с IP-адреса серверов и порта, а затем прекращает прослушивание. Если сервер попытался отправить два ответа (например, ответ и ответ на повторную попытку), тогда серверу будет все равно, сделал ли кто-либо из них это, потому что у клиента есть задание для повторной попытки. Фактически ... если пакет ICMP 3/3 не пройдет через сервер, он не узнает о сбое. Это отличается от TCP, когда вы получаете сообщение об ошибке закрытия или превышении времени ожидания.

DNS позволяет легко повторять попытки от клиента, а также передавать небольшие пакеты ... поэтому UDP - отличный выбор, поскольку он более эффективен. В UDP вы увидите

  1. nslookup отправляет запрос
  2. named отправляет ответ

В TCP вы увидите

  1. nslookupмашина отправляет SYN
  2. namedмашина отправляет SYN-ACK
  3. nslookupмашина отправляет ACK и просьба
  4. namedмашина отправляет ответ

Это намного больше, чем нужно для крошечного DNS-пакета.

Случайно наткнулся на эту страницу в поисках чего-то другого и подумал добавить пару центов ...

За исключением использования брандмауэра с отслеживанием состояния на IOS, вы можете использовать давно существующую функцию, называемую «рефлексивный ACL», когда пакет в одном направлении пробивает дыру в ACL, и это разрешает пакеты в другом направлении.

Руководство по настройке подробно описывает эту функцию, но вкратце она выглядит следующим образом:

  • у вас может быть запись в списке доступа, которая, помимо разрешения пакетов, также может отражать этот трафик в рефлексивном ACL (который является полностью динамическим объектом)
  • в другом ACL вы можете оценивать этот рефлексивный 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 должно быть все, что требуется.