具有活动 OpenVPN 客户端的 Wireguard 服务器

具有活动 OpenVPN 客户端的 Wireguard 服务器

我需要在具有活动 OpenVPN 客户端的计算机上运行 Wireguard 服务器。连接到 Wireguard 服务器的客户端将通过 NAT 连接到“tun0”处的 OpenVPN 客户端,并通过该接口访问互联网。

以前,当我必须使用其他没有自己的 tun/tap 接口(如 Shadowsocks)的 VPN 解决方案创建类似的设置时,我会使用 iptables 'fwmark' 来标记不会通过创建的 tun0 接口路由的数据包打开VPN。

我将在本地 IP 10.3.0.11(VPN 服务器位于端口 2000)的服务器上按顺序启动以下命令,我将能够连接到我的 VPN 服务器并通过活动的 OpenVPN 客户端浏览互联网。

ip route add default via 10.3.0.11 dev eth0 table 7
ip rule add fwmark 0x55 priority 1000 table 7
ip route flush cache
iptables -t mangle -A OUTPUT -p udp --sport 2000 -j MARK --set-mark 0x55
iptables -I INPUT -p udp -m udp --dport 2000 -j ACCEPT

但是,由于 Wireguard 创建了自己的接口 (wg0),因此该解决方案不起作用。一旦 OpenVPN 客户端建立连接,Wireguard 服务器就无法访问。

我已经检查过,没有防火墙阻止与在 UDP 端口 3333 上运行的 Wireguard 服务器的连接,并且当 OpenVPN 连接未处于活动状态时,连接工作正常。

这是 OpenVPN 连接之前“route -n”的输出

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
10.33.0.0       0.0.0.0         255.255.255.0   U     0      0        0 wg0
169.254.0.0     0.0.0.0         255.255.0.0     U     1040   0        0 eth0

这是 OpenVPN 连接后“route -n”的输出

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
10.8.8.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
10.33.0.0       0.0.0.0         255.255.255.0   U     0      0        0 wg0
128.0.0.0       10.8.8.1        128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1040   0        0 eth0
<OVPN Server>   10.0.0.1        255.255.255.255 UGH   0      0        0 eth0

这是Wireguard的配置文件

[Interface]
Address = 10.33.0.1/24
Address = fd33:3300::1/64
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o tun0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o tun0 -j MASQUERADE
ListenPort = 3333
FwMark = 0x55
PrivateKey = <private key>

[Peer]
PublicKey = <public key>
AllowedIPs = 10.33.0.11/32, fd33:3300::11/128

我怎样才能改变我的服务器的配置,以便

  • 客户端可以通过 UDP 端口 3333 连接到 Wireguard 服务器
  • 客户端可以通过 Wireguard 服务器访问互联网,该服务器将通过 tun0(由 OpenVPN 创建)路由所有互联网流量

相关内容