У меня есть тестовая установка с одним хостом в сети (10.1.0.0/16), который разговаривает через TCP с другим в другой сети (10.2.0.0/16) и шлюзом посередине.
Иногда TCP-соединение теряется, и при сканировании трассировки (pcap) мне кажется, что это из-за всего одного сообщения о недоступности узла ICMP, отправленного шлюзом на 10.1.0.1 в какой-то момент. Затем 10.1.0.1 отправляет TCP RST на 10.2.0.1.
На мой взгляд, шлюз (pfSense) сломан или неправильно настроен, но в любом случае в целях тестирования я хотел бы заблокировать этот тип ICMP на хосте (10.1.0.1), прежде чем он повлияет на мое TCP-соединение ( или есть? Я даже не уверен).
Я пробовал iptables:
iptables -I INPUT -i eth0 -p icmp --icmp-type host-unreachable -j DROP
но хотя он хорошо предотвращает получение этих сообщений ICMP приложениями пользовательского пространства, такими как ping, мое TCP-соединение все же заканчивается, когда шлюз отправляет предполагаемый «убийственный пакет ICMP».
Прав ли я насчет того, как это обрабатывается? Если да, то что я могу сделать для достижения своей цели?
Вы ошибочно предположили, что причиной проблемы является сообщение ICMP. Скорее, сообщение ICMP помогает диагностировать проблему.
RST - настоящая основная причина. Вы можете предоставить более подробную информацию о рассматриваемом TCP-соединении, чтобы разобраться в проблеме.