Задача: сделать трансляцию адресов 192.168.168.0/24 в 10.9.8.0/24 и обратно соответственно
Используется iproute2 + iptables, но...
В общем по порядкуip rules list:
0: from all lookup local
13: from 192.168.168.3 lookup rspd map-to 10.9.8.3
14: from 192.168.168.4 lookup rspd map-to 10.9.8.4
15: from 192.168.168.5 lookup rspd map-to 10.9.8.5
16: from 192.168.168.6 lookup rspd map-to 10.9.8.6
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
1203: from 192.168.168.203 lookup rspd map-to 10.9.8.203
1253: from 192.168.168.253 lookup rspd map-to 10.9.8.253
32766: from all lookup main
ip route list table rspd:
192.168.168.0/24 dev eth0 scope link
127.0.0.0/8 dev lo scope link
default via 10.9.8.1 dev eth2
ip route list table local | grep ^nat:
nat 10.9.8.3 via 192.168.168.3 scope host
nat 10.9.8.4 via 192.168.168.4 scope host
nat 10.9.8.5 via 192.168.168.5 scope host
nat 10.9.8.6 via 192.168.168.6 scope host
. . . . . . . . . . . . . . . . . . . . .
nat 10.9.8.203 via 192.168.168.203 scope host
nat 10.9.8.253 via 192.168.168.253 scope host
При таком раскладе частично работает, но... iptables не пропускает пакеты по правилам
iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
Не мог понять в чем дело, пока не глянул в /proc/net/ip_conntrack и в случае попытки установить соединение с 80.93.57.207 увидел следующее:
tcp 6 119 SYN_SENT src=80.93.57.207 dst=10.9.8.203 sport=80 dport=2088 [UNREPLIED] src=10.9.8.203 dst=80.93.57.207 sport=2088 dport=80 use=1
tcp 6 119 SYN_SENT src=192.168.168.203 dst=80.93.57.207 sport=2088 dport=80 [UNREPLIED] src=80.93.57.207 dst=192.168.168.203 sport=80 dport=2088 use=1
Источник имеет адрес 192.168.168.203 а ответ классифицируется как на 10.9.8.203
Получается, что трассировщик состояния tcp пакетов в данном случае бессилен или я что напутал?