我正在从 Linux 机器到运行标准固件的 SonicWall 防火墙创建 IPSec 隧道。隧道似乎创建得很好,但从 Linux 机器到远程网络的数据包没有被路由到隧道中。来自远程网络的数据包似乎没问题。从 Linux 机器到安全远程网络的 ping 尝试通过正常路由表进行路由。
查看路由表和缓存,没有 192.168.1.0(远程网络)的条目。根据文档,我的预期是隧道策略会插入路由。
任何想法都值得赞赏。
谢谢,布拉德
这是我的会议脚本:
#!/sbin/setkey -f
# Configuration for 172.16.89.100
# Flush the SAD and SPD
flush;
spdflush;
add 172.16.89.100 172.20.241.2 ah 0x200 -m tunnel -A hmac-sha1
0xredacted00000000000000000000000000000000;
add 172.20.241.2 172.16.89.100 ah 0x300 -m tunnel -A hmac-sha1
0xredacted00000000000000000000000000000000;
add 172.16.89.100 172.20.241.2 esp 0x201 -m tunnel -E 3des-cbc
0xredacted0000000000000000000000000000000000000000;
add 172.20.241.2 172.16.89.100 esp 0x301 -m tunnel -E 3des-cbc
0xredacted0000000000000000000000000000000000000000;
# Security policies
spdadd 10.114.89.0/24 192.168.1.0/24 any -P out ipsec
esp/tunnel/172.16.89.100-172.20.241.2/require
ah/tunnel/172.16.89.100-172.20.241.2/require;
spdadd 192.168.1.0/24 10.114.89.0/24 any -P in ipsec
esp/tunnel/172.20.241.2-172.16.89.100/require
ah/tunnel/172.20.241.2-172.16.89.100/require;
#Forward Policy
#DOH! iptools > 0.5 do this automatically.
#spdadd 192.168.1.0/24 10.114.89.0/24 any -P fwd ipsec
# esp/tunnel/172.20.241.2-172.16.89.100/require
# ah/tunnel/172.20.241.2-172.16.89.100/require;
答案1
如果您在非 Linux 机箱默认网关的机器上运行 vpn,那么您将需要在 Linux 机箱上添加指向正确网关的路由。
检查你的防火墙规则。你不想伪装通过 VPN 的流量。
你可能已经看过了,但是看看Linux IPsec 如何。
您可能还想研究使用 racoon,它可以减轻 ipsec 配置的一些麻烦。
答案2
1) 您不需要特殊路由。如果您可以在没有 IPSec 的情况下进行通信,那么一切就都正常了。
2) 检查防火墙和 IPtables。协议从 TCP 更改为 AH 和 ESP。这可能会让人感到困惑(或者对我来说就是这样),因为我们习惯于只考虑 TCP/IP。
答案3
我遇到了同样的问题,但不知道为什么。我读到过某处说你不需要路由条目,因为内核直接通过 ipsec 安全关联 (sa) 来处理它。
尽管如此,如果您设置如下静态路由,它应该可以工作(并且对我来说是有效的):
ip route add 192.168.1.0/24 via 172.16.89.100