Ubuntu 路由器 - 如何共享 strongswan VPN 连接?VPN 启动后无法 ping 通 LAN

Ubuntu 路由器 - 如何共享 strongswan VPN 连接?VPN 启动后无法 ping 通 LAN

我有 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
      }
    }
  }
}

相关内容