Код: Выделить всё
Remote client ──► Gateway-1 ◄──► VPN-2
| |
(SNAT) (SNAT)
| |
▼ ▼
Internet Website-1
< /code>
Удаленный клиент подключается к Gateway-1 < /li>
Все интернет-трафик перенаправляется через Gateway-1, за исключением веб-сайта-1, который перенаправляется через сайт-сайт-сайт SA в VPN-2-интерфейс. серверы. < /li>
< /ul>
[b] gateway 1 < /strong>
swanctl.conf (excerpt): < /p>
...
children {
ctrl-link {
local_ts = 172.16.0.1/32 # Local virtual IP (dummy interface)
remote_ts = 172.31.255.1/32 # Node 2 virtual IP (dummy interface)
start_action = start
priority = 2
}
website1-link {
mark_out = 5030
mark_in = 5030
local_ts = 10.100.0.0/16 # Remote clients' pool
remote_ts = 0.0.0.0/0 # Internet
priority = 1
dpd_action = restart
start_action = trap|start
}
}
...
< /code>
iptables-save < /p>
*mangle
-A PREROUTING -m set --match-set website1_ips dst -j MARK --set-xmark 0x13a6/0xffffffff
*nat
-A POSTROUTING -m policy --dir out --pol ipsec -j ACCEPT
-A POSTROUTING -s 10.100.0.0/16 -o ens4 -m policy --dir out --pol ipsec -j ACCEPT
-A POSTROUTING -m mark --mark 0x13a6 -j RETURN
-A POSTROUTING -s 10.100.0.0/16 -o ens4 -j MASQUERADE
swanctl.conf (зеркальный от шлюза-1):
...
children {
ctrl-link {
local_ts = 172.31.255.1/32
remote_ts = 172.16.0.0/24
dpd_action = restart
start_action = trap
priority = 2
}
website1-link {
mark_out = 5030
mark_in = 5030
local_ts = 0.0.0.0/0 # Internet
remote_ts = 10.100.0.0/16 # Remote clients' pool
priority = 1
dpd_action = restart
start_action = trap
}
...
< /code>
iptables-save < /p>
*mangle
-A PREROUTING -m mark --mark 0x13a6 -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A PREROUTING -m policy --dir in --pol ipsec -j MARK --set-xmark 0x0/0xffffffff
*nat
-A POSTROUTING -m policy --dir out --pol ipsec -j ACCEPT
-A POSTROUTING -s 10.100.0.0/16 -m mark --mark 0x13a6 -j SNAT --to-source
< /code>
ip xfrm policy < /p>
src 0.0.0.0/0 dst 10.100.0.0/16
dir out priority 1 ptype main
mark 0x13a6/0xffffffff
tmpl src dst
proto esp spi 0xc6724e7a reqid 2 mode tunnel
src 10.100.0.0/16 dst 0.0.0.0/0
dir fwd priority 1 ptype main
mark 0x13a6/0xffffffff
tmpl src dst
proto esp reqid 2 mode tunnel
< /code>
tcpdump на VPN-2 (когда удаленный клиент пытается посетить веб-сайт-1): < /p>
19:50:53.652663 IP 10.100.5.170.59435 > .443: Flags , seq 770266754, win 65535, options [mss 1240,sackOK,eol], length 0
19:51:03.184745 IP 10.100.5.170.59463 > .443: Flags [SEW], seq 3449060944, win 65535, options [mss 1240,nop,wscale 6,nop,nop,TS val 93548362 ecr 0,sackOK,eol], length 0
19:51:04.184422 IP 10.100.5.170.59463 > .443: Flags , seq 3449060944, win 65535, options [mss 1240,nop,wscale 6,nop,nop,TS val 93549362 ecr 0,sackOK,eol], length 0
< /code>
Показывает, что трафик оставляет VPN-2 с SRC 10.100.x.x (внутренний IP-адрес).
В то же время, iptables -t Nat -vnl Postrouting < /code> на VPN-2 показывает 0 хитов для правила SNAT, даже когда новый трафик. не может получить доступ к веб-сайту-1, потому что пакеты игнорируются из-за неправильного адреса SRC. Есть идеи, как исправить NAT на узле VPN-2?
Подробнее здесь: https://stackoverflow.com/questions/797 ... strongswan