我正在尝试将 wireguard 服务器与 OpenVPN 服务器链接起来(移动设备上的延迟和性能问题更好)
基本上,wg client > wg server/ovpn client > ovpn server (commercial)
我尝试了一些方法,实际上它工作了一次,但重启后无法重现它。
当前 wg0 服务器配置:
[Interface]
PrivateKey = [redacted]
Address = 10.6.0.1/24
MTU = 1420
ListenPort = 34347
[Peer]
PublicKey = [redacted]
PresharedKey = [redacted]
AllowedIPs = 10.6.0.2/32
网络接口(中间人服务器)为 eth0,网关为 192.168.9.1(这是家庭网络,但转发以供外部访问)
显而易见的解决方案是将所有数据包从 wireguard 服务器发送到 tun0,但我不确定如何去做。
任何帮助都将不胜感激!
答案1
首先,我要补充的Table=off
是[Interface]
服务器如果您使用 confwg-quick
来进行设置。
那么,其中一种方法是:
ip route add default dev tun0 table 123
ip rule add iif wg0 table 123
这将使来自接口的所有流量(IIRC 应该转发)wg0
查找路由表123
(可以是任何未使用的数字)以进行路由,并且该表已包含通往的默认路由tun0
。
如果您使用 ,则可以PreUp
按照 的方式添加它们。不过,最好使用 OpenVPN 中的等效项,因为添加路由需要存在。(或者您可以通过某种方式(或其他方式)确保 WireGuard 在 OpenVPN 之后启动。)[Interface]
wg-quick
tun0
systemctl edit
如果你的 OpenVPN 已经将默认路由添加到路由表main
,而你出于某种原因想要保留这种路由,则需要另一种方法,即将封装WireGuard 流量进入 OpenVPN 隧道。
例如:
ip route add default via 192.168.9.1 dev eth0 onlink table 321
ip rule add iif lo ipproto udp sport 34347 table 321
无论哪种方式,您都需要对来自 WireGuard 客户端的流量执行源 NAT:
iptables -t nat -A POSTROUTING -s 10.6.0.0/24 -o tun0 -J MASQUERADE