Пакет TCP push не доставлен из tun

Я устанавливаю простую программу перехвата пакетов, используя два tuns, настраиваю так:

# ip tuntap add mode tun name tun0
# ip link set tun0 up
# ip addr add 10.0.0.0/31 dev tun0
# ip tuntap add mode tun name tun1
# ip link set tun1 up
# ip addr add 10.0.1.0/31 dev tun1

и перенаправить вывод в программу следующим образом:

# ip rule add fwmark 1 table 1
# ip route add default dev tun0 table 1
# iptables -t mangle -A OUTPUT --source 192.168.1.0 -o enp34s0 -p tcp --dport 9732 -j MARK --set-mark 1
# iptables -t nat -A POSTROUTING --source 10.0.1.1 -o enp34s0 -j MASQUERADE

Я включил ip_forward и отключил rp_filter. Пакеты, полученные tun0, обрабатываются, модифицируются и обновляются контрольные суммы ip/tcp. Я даже могу корректно перехватить SYN -> ACK,SYN -> ACK часть связи tcp handshake, но после этого любой входящий пакет будет корректно перехвачен, модифицирован и отправлен не в ту сторону, но никогда не будет доставлен локальному приложению.


person Kyras    schedule 24.03.2020    source источник


Ответы (1)


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

person Kyras    schedule 25.03.2020