Vpn
如何設置 VPN 以訪問特定子網?
我想設置一個點到站點 VPN,它只用於訪問一組特定的子網,這樣我就可以通過 VPN 訪問服務,但不需要通過它路由所有流量。
在我的測試設置中,我有三台伺服器,其中一台 (
fra1-02
) 正在執行 StrongSwan/IPSec:+-----------------+ +-----------------+ | client(s) |---->| internet | +-----------------+ +-----------------+ | v +-----------------+ | fra1-02 (vpn) | +-----------------+ | +---------+---------+ | | v v +-----------------+ +-----------------+ | fra1-01 | | fra1-03 | +-----------------+ +-----------------+
我希望客戶端能夠正常連接到 Internet,但是對於三個子網(特別是分配給三個伺服器的子網),流量應該通過 VPN。
三台伺服器具有以下子網:
2a03:b0c0:3:e0::489:d000/124
2a03:b0c0:3:e0::493:1000/124
2a03:b0c0:3:e0::493:2000/124
我已將 IPSec 配置為從
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
如何設置它以便流量通過 VPN
fra1-01
並fra1-03
通過 VPN 路由?
我已經安裝
netfilter-persistent
並添加了以下內容/etc/iptables/rules.v6
:*nat -A POSTROUTING -s fd00::/32 -o eth0 -j MASQUERADE COMMIT
現在一切都很好。