Сервер не производит syn-ack
У меня есть небольшая программа, которая принимает пакеты из nfqueue . измените ip.dst на мой сервер dst (и ttl), пересчитайте контрольную сумму и верните пакет в nfqueue .
Сервер и клиент - это linux, а веб-сервер apache запущен на сервере и прослушивает порт 80. Я открываю telnet в клиенте, чтобы подделать ip на порт 80. пакет изменен моей программой и отправлен на сервер, но целевой сервер (новый dst ip) получает syn, но не генерирует syn-ack (сервер также принадлежит мне, поэтому я вижу, что он получает syn с правильной контрольной суммой, но не генерировать syn-ack).
если я делаю то же самое, но с реальным ip сервера в качестве dest, рукопожатие tcp выполняется корректно (в этом случае я просто изменяю ttl и контрольную сумму. Изменение, которое я сделал в ttl, является просто тестом, чтобы увидеть, что мой контрольная сумма рассчитана).
Я сравниваю два син, но не нашел и разницы. Любая идея?
Ps. я видел эту тему: Сервер не отправляет пакет SYN/ACK в ответ на пакет SYN, и я установил все флаги одинаково, но это не помогло.
Спасибо
1 ответ
Предположительно, поскольку в настоящее время в нем нет полезной информации, я считаю, что вы слишком поздно удалили этот пакет из сетевого фильтра - после того, как было принято решение о маршрутизации и выбросил пакет в таблицу локальных маршрутов.
Попробуйте поместить свое правило NFQUEUE в iptables в цепочке PREROUTING таблиц mangle.