我已成功在本地 Linux 主机和远程 VPN 网关之间建立了 IPSec 隧道。我正在使用网关分配的虚拟 IP,因为作为公路战士,我的本地 LAN 子网不是固定的。
当它启动时,所有流量都通过隧道,包括互联网流量。我想要的是除本地子网之外的所有流量通过隧道路由。我已经阅读并重新阅读了 Strongswan 文档,但我不知道如何做到这一点。
我需要做什么?
本地ipsec.conf
config setup
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
authby=secret
conn VPN
left=%any
leftsourceip=%config
leftid=@robin.my.net
leftfirewall=yes
right=52.n.n.n
rightsubnet=0.0.0.0/0
rightid=@vpn.my.net
auto=add
Run Code Online (Sandbox Code Playgroud)
服务器ipsec.conf
config setup
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
conn AWSVPN
left=%any
leftsubnet=172.31.38.36/32
leftid=@vpn.my.net
leftfirewall=yes
authby=secret
right=%any
rightsourceip=10.3.0.0/28
auto=add
Run Code Online (Sandbox Code Playgroud)
网关
IP:172.31.38.36 子网:172.31.32.0/20
我的机器
IP:192.168.1.150(可更改)子网:192.168.1.0/24(可更改)虚拟IP:10.3.0.1(由Strongswan网关分配)
编辑:
我已经通过添加这个设法排除了本地网络,但子网是硬编码的:
conn local-net
leftsubnet=192.168.1.0/24
rightsubnet=192.168.1.0/24
authby=never
type=pass
auto=route
Run Code Online (Sandbox Code Playgroud)
小智 5
由于声誉低,我无法添加评论,所以这里是..
当它启动时,所有流量都通过隧道,包括互联网流量。
那不可能。您在服务器 'leftsubnet=172.31.38.36/32' 上指定,因此客户端的 'rightsubnet=0.0.0.0/0' 将缩小到仅此一台主机。
为了将所有流量路由到 VPN,您还需要在服务器上设置“leftsubnet=0.0.0.0/0”。
在默认配置中,Strongswan 在表 220 中添加到服务器子网的路由,在服务器子网 '0.0.0.0/0' 的情况下,如下所示:
$ ip route list table 220
default via 192.168.2.9 dev wlan0 proto static src 10.3.0.2
Run Code Online (Sandbox Code Playgroud)
该表优先于默认使用的“主”路由表:
$ ip rule list
0: from all lookup local
220: from all lookup 220
32766: from all lookup main
32767: from all lookup default
Run Code Online (Sandbox Code Playgroud)
因此,当客户端向本地 LAN 发送数据包时,该数据包由表 220 路由,该表没有到本地 LAN 的路由 - 只有到 VPN 服务器的默认路由。因此,为了不将本地 LAN 的数据包路由到 VPN,您只需要在表 220 中添加到本地 LAN 的路由,例如:
$ ip route add table 220 192.168.1.0/24 dev wlan0
Run Code Online (Sandbox Code Playgroud)
因此,表 220 现在将如下所示:
default via 192.168.2.9 dev wlan0 proto static src 10.3.0.2
192.168.2.0/24 dev wlan0 scope link
Run Code Online (Sandbox Code Playgroud)
另一种可能的解决方案是使用'main'路由表来路由VPN子网(strongswan.conf中的'routing_table = 32766'),因为它已经有到本地LAN的路由。但在这种情况下,当前的默认路由将是一个问题:strongswan 不会添加另一个默认路由,如果已经有的话..
| 归档时间: |
|
| 查看次数: |
10869 次 |
| 最近记录: |