Ошибка спуфинга подтверждения TCP-сервера

Я хочу создать простой сервер для проксирования TCP-соединений на шлюзе моей сети (без злонамеренного намерения), но рукопожатие TCP не работает.

Используя netfilter, мне удалось изменить IP-адрес и порт входящих TCP-пакетов, чтобы они перенаправлялись в мое приложение, а также вернули их к исходным на обратном пути, а также обновили все контрольные суммы.

Мой сервер в настоящее время отправляет обратно SYN-ACK, который попадает на предполагаемый хост, но ACK никогда не создается. Согласно wirehark, пакет сформирован правильно, с контрольной суммой проблем нет, значения SYN и ACK совпадают.

Вот вывод TCP Dump

Успешное рукопожатие без моего прокси

16:21:08.887938 IP 192.168.1.1.37513 > 192.168.2.56.12105: Flags [S], seq 4201716329,     win 14000, options [mss 1400,sackOK,TS val 727682 ecr 0,nop,wscale 2], length 0
16:21:08.889870 IP 192.168.2.56.12105 > 192.168.1.1.37513: Flags [S.], seq 34328406, ack 4201716330, win 14480, options [mss 1460,sackOK,TS val 1879286956 ecr 727682,nop,wscale 5], length 0
16:21:08.891751 IP 192.168.1.1.37513 > 192.168.2.56.12105: Flags [.], ack 1, win 3500, options [nop,nop,TS val 727683 ecr 1879286956], length 0

Ошибка рукопожатия с моим прокси

16:21:49.767611 IP 192.168.1.1.37514 > 192.168.2.56.12105: Flags [S], seq 2057472079, win 14000, options [mss 1400,sackOK,TS val 731770 ecr 0,nop,wscale 2], length 0
16:21:49.768522 IP 192.168.2.56.12105 > 192.168.1.1.37514: Flags [S.], seq 1201001621, ack 2057472080, win 14480, options [mss 1460,sackOK,TS val 7621570 ecr 731770,nop,wscale 4], length 0

После этого клиент и сервер просто повторно отправят подтверждение / синхронизацию.

Есть ли что-то очевидное, что мне не хватает? Или у кого-нибудь есть совет, как мне начать отлаживать проблему?


person DarkRyuu    schedule 09.05.2013    source источник
comment
Вы уверены, что пакет SYN-ACK достигает клиента и не фильтруется каким-либо образом? Можете ли вы запустить tcpdump на клиенте, чтобы убедиться, что он получает пакет?   -  person David Gelhar    schedule 09.05.2013
comment
Извините, я не уточнил, дамп предоставлен клиентом.   -  person DarkRyuu    schedule 09.05.2013
comment
Попробуйте также добавить дамп со стороны сервера. Какие IP у клиента, сервера, прокси? Как пакеты перехватываются прокси?   -  person Nikolai    schedule 13.09.2013
comment
Можете ли вы предоставить пакеты целиком в виде дампа libpcap / wirehark? (Если повезет, wirehark даже укажет вам неверные порядковые номера TCP, контрольные суммы и т. Д.).   -  person Emiswelt    schedule 13.09.2013


Ответы (1)


Это зависит от того, как вы меняли пакеты. Вы используете iptables NAT для изменения IP-адреса и номера порта?

В вашем случае клиент отбрасывает пакет, потому что считает, что это неправильный пакет, даже если ip, порт и ACK верны.

person user1130800    schedule 03.01.2014