![Ubuntu 路由器 - 如何共享 strongswan VPN 连接?VPN 启动后无法 ping 通 LAN](https://linux22.com/image/1027745/Ubuntu%20%E8%B7%AF%E7%94%B1%E5%99%A8%20-%20%E5%A6%82%E4%BD%95%E5%85%B1%E4%BA%AB%20strongswan%20VPN%20%E8%BF%9E%E6%8E%A5%EF%BC%9FVPN%20%E5%90%AF%E5%8A%A8%E5%90%8E%E6%97%A0%E6%B3%95%20ping%20%E9%80%9A%20LAN.png)
我有 Ubuntu Server 22.04 作为路由器。路由器工作正常,enp1 作为 WAN,enp2 连接到 LAN 交换机。我想要使用 strongSwan 连接到我的 VPN 提供商,并能够使用 VPN 从 LAN 客户端连接到互联网。
当 strongSwan VPN 连接时 - 我在 enp1s0 接口上获得了另一个 IP 号码。但之后我无法从 ubuntu 路由器 ping 本地网络 10.10.10.x。StrongSwan 客户端/etc/ipsec.conf如下:
conn myvpn
right=vpn.myvpn.net
rightid=vpn.myvpn.net
rightsubnet=0.0.0.0/0
rightauth=pubkey
leftsourceip=%config
leftid=myvpn
leftauth=eap-mschapv2
eap_identity=%identity
auto=start
启动 vpn 后systemctl 重启 strongswan-starter界面看起来是这样的:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 73:8f:34:12:50:a2 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.2/24 brd 192.168.0.255 scope global enp1s0
valid_lft forever preferred_lft forever
inet 12.21.73.33/32 scope global enp1s0
valid_lft forever preferred_lft forever
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 73:8f:34:12:50:a6 brd ff:ff:ff:ff:ff:ff
inet 10.10.10.2/24 brd 10.10.10.255 scope global enp2s0
valid_lft forever preferred_lft forever
我在局域网上有一台笔记本电脑,IP 为 10.10.10.10。当我启动 VPN 时,无法从 ubuntu 路由器 ping 通它。当我停止 VPN 时,一切都正常。感谢任何提示。
答案1
使用您的配置 ( rightsubnet=0.0.0.0/0
),所有流量都通过 VPN 发送。因此,要访问 LAN 中的主机,您必须将该子网(大概10.10.10.0/24
)从 VPN 中排除。这可以通过以下方式实现直通/旁路 IPsec 策略。
使用旁路局域网插件,它会自动为本地子网安装此类策略。它已打包在 中,strongswan-libcharon
因此您已经安装了它,只需在 中启用它即可/etc/strongswan.d/charon/bypass-lan.conf
。
或者你手动配置策略,请参阅 strongSwan 文档有几个例子(看这里ipsec.conf 示例)。 上述子网的简单配置如下:
conn passthrough-lan
left=127.0.0.1
leftsubnet=10.10.10.0/24
rightsubnet=10.10.10.0/24
type=passthrough
auto=route
或者使用 swanctl.conf:
connections {
passthrough-lan {
remote_addrs = 127.0.0.1
children {
passthrough-lan {
local_ts = 10.10.10.0/24
remote_ts = 10.10.10.0/24
mode = pass
start_action = trap
}
}
}
}