如何设置 VPN 来访问特定子网?

如何设置 VPN 来访问特定子网?

我想建立一个点到站点的 VPN,仅用于访问一组特定的子网,这样我可以通过 VPN 访问服务,但不通过它路由所有流量。

在我的测试设置中,我有三台服务器,其中一台(fra1-02)正在运行 StrongSwan/IPSec:

          +-----------------+     +-----------------+
          |    client(s)    |---->|    internet     |
          +-----------------+     +-----------------+
                   |
                   v
          +-----------------+
          |  fra1-02 (vpn)  |
          +-----------------+
                   |
         +---------+---------+
         |                   |
         v                   v
+-----------------+ +-----------------+
|     fra1-01     | |     fra1-03     |
+-----------------+ +-----------------+

我希望客户端能够正常连接到互联网,但对于三个子网(特别是分配给三个服务器的子网),流量应该通过 VPN。

这三台服务器具有以下子网:

  1. 2a03:b0c0:3:e0::489:d000/124
  2. 2a03:b0c0:3:e0::493:1000/124
  3. 2a03:b0c0:3:e0::493:2000/124

我已经配置了 IPSec,以便从以下位置分配客户端 IP 地址fd00:0::0/32

这是我的ipsec.conf

config setup
    uniqueids=no
conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=@{{ leftid }}
    leftcert=cert.pem
    leftsendcert=always
    leftsubnet=2a03:b0c0:3:e0::489:d000/124,2a03:b0c0:3:e0::493:1000/124,2a03:b0c0:3:e0::493:2000/124
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=fd00:0::0/32
    rightdns={{ rightdns }}
    rightsendcert=never
    eap_identity=%identity

{{ variables }}将由 Ansible 填写)。

我没有配置任何路由或其他任何东西。

当我从笔记本电脑连接到 VPN 时,我仍然可以 ping 通fra1-02VPN 主机,并且源地址现在是 IPSec 分配的地址,而不是我的笔记本电脑的公共地址,但其他两个主机根本无法访问。

我还将其添加到/etc/sysctl.conf

net.ipv6.conf.all.forwarding=1

这些是我的笔记本电脑上的(部分)输出netstat -rn(看起来正如我所期望的):

default                         fd00::    UGcI     ipsec0
2a03:b0c0:3:e0::489:d000/124    fd00::    UGSc     ipsec0
2a03:b0c0:3:e0::493:1000/124    fd00::    UGSc     ipsec0
2a03:b0c0:3:e0::493:2000/124    fd00::    UGSc     ipsec0
...

VPN服务器上的路由表如下:

root@fra1-02:~# ip -6 route list
::1 dev lo proto kernel metric 256 pref medium
2a03:b0c0:3:e0::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth1 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via 2a03:b0c0:3:e0::1 dev eth0 proto static metric 1024 pref medium

我该如何设置才能让流量到达fra1-01fra1-03路由到 VPN?

答案1

我已安装netfilter-persistent并添加了以下内容/etc/iptables/rules.v6

*nat
-A POSTROUTING -s fd00::/32 -o eth0 -j MASQUERADE
COMMIT

现在一切都运行良好。

相关内容