Добрый вечер, коллеги!
Немного запутался с роутингом между двумя сетями с ipsec-туннелем между их шлюзами.
Имеется: centos6 x86, Openswan U2.6.32/K2.6.32-279.2.1.el6.i686gate1:
eth0: A.A.A.A (ext ip), 172.17.1.0/22
eth1: B.B.B.B (ext ip), 172.17.4.0/22
# cat /etc/ipsec.conf:
config setup
protostack=netkey
oe=off
conn net-to-net
type=tunnel
left=A.A.A.A
leftsubnet=172.17.1.0/22
leftsourceip=172.17.1.101
leftrsasigkey=0sAQ...
right=B.B.B.B
rightsubnet=172.17.4.0/22
rightsourceip=172.17.4.101
rightrsasigkey=0sAQ...
auto=start
# netstat -rn
Destination Gateway Genmask Flags MSS Window irtt Iface
172.17.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.17.4.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0
A.A.248.0 0.0.0.0 255.255.248.0 U 0 0 0 eth0
0.0.0.0 A.A.A.GW 0.0.0.0 UG 0 0 0 eth0
iptables с политиками ACCEPT;
конфигурация gate2 зеркальна gate1
при указанной конфигурации после того, как туннель поднимается, "видимость" хостов получается такой, что участники сети gate1 - 172.17.1.0/22 могут ходить на 172.17.4.101, но не дальше. при этом, gate1 также не видит по внутренним адресам никого, кроме gate2;
попробовал задействовать NETMAP:
iptables --table nat -A POSTROUTING -s 172.17.4.0/22 -j NETMAP --to 172.17.1.0/22
и на gate2 соответственно
iptables --table nat -A POSTROUTING -s 172.17.1.0/22 -j NETMAP --to 172.17.4.0/22
после чего, шлюзы смогли ходить в противоположные локалки, но при этом, с остальных хостов доступа в удаленную сеть нет, также как и в начале - могут ходить по внутреннему адресу только на противоположный шлюз.
смотрел схемы iproute2+iptables... не совсем понял, каким образом можно в данной ситуации реализовать связку сетей без NAT'а и подмены адресов, т. е. так, чтобы хосты сетей видели реальные адреса при общении друг с другом через туннель.