我想建立一个点到站点的 VPN,仅用于访问一组特定的子网,这样我可以通过 VPN 访问服务,但不通过它路由所有流量。
在我的测试设置中,我有三台服务器,其中一台(fra1-02
)正在运行 StrongSwan/IPSec:
+-----------------+ +-----------------+
| client(s) |---->| internet |
+-----------------+ +-----------------+
|
v
+-----------------+
| fra1-02 (vpn) |
+-----------------+
|
+---------+---------+
| |
v v
+-----------------+ +-----------------+
| fra1-01 | | fra1-03 |
+-----------------+ +-----------------+
我希望客户端能够正常连接到互联网,但对于三个子网(特别是分配给三个服务器的子网),流量应该通过 VPN。
这三台服务器具有以下子网:
2a03:b0c0:3:e0::489:d000/124
2a03:b0c0:3:e0::493:1000/124
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-02
VPN 主机,并且源地址现在是 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-01
并fra1-03
路由到 VPN?
答案1
我已安装netfilter-persistent
并添加了以下内容/etc/iptables/rules.v6
:
*nat
-A POSTROUTING -s fd00::/32 -o eth0 -j MASQUERADE
COMMIT
现在一切都运行良好。