OpenBSD - статьи
de301fb4

Ответ на заблокированный пакет


Чтобы ответить людям, пытающимся посылать пакеты через ваш фильтр, которые вы блокируете, вы можете послать ICMP ошибку (Destination Unreachable) или в ответ на TCP пакет TCP RST (Reset).

Какая разница? TCP/IP стеку требуется больше времени на пересылку ICMP ошибки через приложение из-за временных проблем (сеть была отключена на время) и возникает возможность неправильного завершения соединения по этой причине.

Другой сценарий вызовет завершение соединения между двумя компьютерами для которого была получена ICMP ошибка. TCP RST используется только для одного соединения (не может использоваться больше чем для одного), и фильтp вызовет немедленное закрытие соединения. Например, если вы блокируете 113 порт и указываете для возврата TCP RST пакет, ICMP пакет или даже ничего, вы не заметитe никакой задержки, если бы даже на втором конце делали соединение на ваш identd сервис. Примеры прилaгаются:

# # блокировать все входящие TCP соединения и возвращать TCP-RST, для # ident порта # block in proto tcp from any to any flags S/SA block return-rst in quick proto tcp from any to any port = 113 flags S/SA # # блокировать все входящие UDP пакеты и возвращать ICMP ошибку # block return-icmp in proto udp from any to any

Когда возвращают ICMP пакет, также возможно указать тип ICMP ошибки. Это может потребоваться, чтобы работа программы traceroute заканчивалась элегантно. Для этого нужно тип ICMP Unreachable указать в скобках за командой "return-icmp":

# # блокировать все входяшие UDP пакеты и возвращать ICMP ошибку # block return-icmp (3) in proto udp from any to any port > 30000 block return-icmp (port-unr) in proto udp from any to any port > 30000

Эти два примера эквивалентны и возвращают ошибку "Port unreachable" на любые UDP пакеты идущие на порт выше 30000.



Содержание раздела