我目前正在尝试使用 Wireguard 设置 VPN 链(双 VPN)。我尝试使用来自不同文章的示例:https://allanjohn909.medium.com/vpn-chaining-with-wireguard-ec2bd500509e https://habr.com/ru/articles/570160/ 我有 2 台服务器:SV1 - 所有用户都连接到这台服务器。SV2 - 所有流量都必须重定向到此服务器,然后定向到任何目标网站等。
我在 SV1 上创建了两个 Wireguard 配置。wg0-client - 连接到 SV2。wg10 - 将每个用户连接到 SV1。 wg0-客户端.conf:
[Interface]
PrivateKey = PrivateKey_of_SV1_for_server
Address = 192.168.0.2/32
MTU = 1420
[Peer]
PublicKey = PublicKey_of_SV2
AllowedIPs = 192.168.0.0/8, 172.16.0.0/8
Endpoint = IP_of_SV2:33333
PersistentKeepalive = 21
wg10.conf
[Interface]
Address = 172.16.0.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wg0-client -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wg0-client -j MASQUERADE
ListenPort = 34567
PrivateKey = PrivateKey_of_SV1_for_users
[Peer]
PublicKey = PublicKey_Of_Usr1
AllowedIPs = 172.16.0.2/32
[Peer]
PublicKey = PublicKey_Of_Usr2
AllowedIPs = 172.16.0.3/32
On the SV2 I have only 1 config - wg1.conf
在 SV2 上,我只有 1 个配置 -wg1.conf:
[Interface]
Address = 192.168.0.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 33333
PrivateKey = PrivateKey_Of_SV2
[Peer]
PublicKey = PublicKey_Of_SV1_for_server
AllowedIPs = 192.168.0.2/32
[Peer]
PublicKey = PublicKey_Of_Usr1
AllowedIPs = 192.168.0.3/32
我在 SV1 上使用systemctl 启动 wg-quick@wg10和wg-快速启动 wg0-客户端在 SV2 上systemctl 启动 wg-quick@wg1服务器之间有连接。我可以连接到任何服务器。但是,我无法连接到 SV1 并访问网站。我打开了net.ipv4.ip_forward = 1
我尝试使用 iptables 来解决这个问题。我尝试过很多次。我尝试在 SV1 上写一些类似的东西。第一次尝试-(目前,我只有一个配置来连接用户和连接到 SV2):
iptables -t nat -A POSTROUTING -s 192.168.0.2/24 -o wg0 -j SNAT --to-source 192.168.0.1
iptables -t nat -A PREROUTING -i wg0 -j DNAT --to-destination 192.168.0.2
第二次尝试:
iptables -t nat -A POSTROUTING -d 192.168.0.1 -o wg0-client -j SNAT --to-source 172.16.0.1
iptables -t nat -A PREROUTING -i wg10 -j DNAT --to-destination 192.168.0.1
第三次尝试:
iptables -A FORWARD -i wg10 -o wg0-client -j ACCEPT
iptables -A FORWARD -i wg10 -o wg0-client -m state --state RELATED,ESTABLISHED -j ACCEPT
第四次尝试:
ip rule add table 200 from 172.16.0.1
ip rule add table 200 from 172.16.0.2
ip rule add table table 200 default via 192.168.0.1
第五次尝试:
ip rule add table 200 from 172.16.0.2
ip rule add table table 200 default via 192.168.0.1
第六次尝试:
ip rule add table 200 from 172.16.0.2
ip rule add table table 200 default via 192.168.0.2
什么都没起作用。当我以用户身份连接到 SV1 时,我没有收到任何网站的连接。你能提出一些建议吗?我在两台服务器上都使用 Ubuntu 20.04。