Я устанавливаю простую программу перехвата пакетов, используя две настройки, настраиваю так:
# 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. Я даже могу правильно перехватить tcp handshake SYN -> ACK,SYN -> ACK
часть связи, но после этого любой входящий пакет будет корректно перехвачен, изменен и отправлен вне туннеля, но он никогда не будет доставлен в локальное приложение.