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