我的 ubuntu 上有两个工作界面machine
:
tun0
- OpenVPN 服务器内部地址为:10.8.0.0/24wg0
- WireGuard 对等接口,内部地址为:10.7.0.0/24,通过成功握手连接到外部 WireGuard 服务器。
tun0
我正在尝试通过隧道传输所有请求wg0
。因此,当我连接到 OpenVPN 隧道时,就好像我连接到了 WireGuard 服务器一样。
iptables
在进行任何更改之前,我的备份是这样的:
*filter
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
COMMIT
*nat
-A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source MACHINE_IP_ADDRESS
COMMIT
因此,通过查看这个,我想如果我MACHINE_IP_ADDRESS
用 WireGuard 连接的内部 IP 替换它,它可能会起作用:
-A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source 10.7.0.0
这不起作用。我还尝试了:
-A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -o wg0
在这两种情况下,OpenVPN 连接都已建立但完全超时。
有什么方法可以实现此目的而无需进行太多配置?
答案1
这听起来像是“反向代理”行为,你可以使用球童或者 nginx,我认为这应该相当容易,类似于:
caddy reverse-proxy --from 10.8.0.0:2080 --to 10.7.0.0:9000
对于 iptables,我不太确定,但我发现:
https://serverfault.com/questions/1025857/iptables-as-a-reverse-proxy
这看起来与您的解决方案非常相似,但它们似乎一次映射一个端口,您是否尝试过映射特定端口?