Чтобы не забыть

Столкнулся с интересным поведением Linux при попытке изобразить TCP-соединение с помощью «сырых» сокетов (raw sockets), точнее, чего-то на них похожего. Как только на не открытый «явно» (с помощью bind() и listen()) TCP-порт прилетал какой-либо пакет, что-то в составе операционной системы кидало в ответ пакет с флагом RST. Лечится такое поведение двумя способами — можно либо «недосоздать» сокет (вызвать bind(), listen() и не вызывать accept()), либо добавить правило в iptables, не позволяющее отправлять пакеты с RST — что-нибудь в таком роде:

iptables -I OUTPUT -p tcp --tcp-flags RST RST -j DROP

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *