我有一台运行 Ubuntu 22.04 的专用服务器,其中有一个在 docker 中运行的 wireguard(wg-easy)服务器。
(IP 地址仅作为示例)
专用服务器 | Wireguard Docker IP | Wireguard 客户端 IP |
---|---|---|
142.250.70.238 | 172.17.0.8 | 10.8.0.2 |
通过 Windows 客户端和 Linux 主机连接到 wireguard 服务器均能正常工作。它们获取 10.8.0.x 地址,并在 Google 中快速运行“我的 IP 是什么”搜索,即可返回预期的142.250.70.238
IP 地址。
我遇到的问题在于将端口转发到 wireguard 客户端。我试图让流量142.250.70.238
继续TCP 36029
流向10.8.0.2
。
通过阅读有关 wireguard 端口转发的许多其他类似帖子,这似乎是我需要的,但它不起作用:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 36029 -j DNAT --to-destination 10.8.0.2
我不确定这是因为在 docker 中运行 wireguard 服务器,还是因为我依赖 UFW 来阻止不必要的流量。
这个帖子 (使用 wireguard 进行端口转发)有一个关于 UFW(不包括 docker)的类似问题,但这对我来说似乎也不起作用:
ufw route allow proto tcp to 10.8.0.2 port 36029
只是想知道你们中是否有人可以提供一些帮助。
谢谢!
编辑 1:经过进一步思考,我认为我需要配置 wireguard 服务器 docker 来接受来自所需传入端口的流量
-p 36029:36029
然后使用 ufw 规则将任何传入流量路由TCP 36029
到主机142.250.70.238
到 wireguard docker:
ufw route allow proto tcp from any to 172.17.0.8 port 36029
我认为最后一步是在 docker 容器本身中运行 iptables 到 wireguard 客户端10.8.0.2
编辑2:完成上述操作后,在 wireguard docker 中使用此命令:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 36029 -j DNAT --to-destination 10.8.0.2
也许在 docker 中运行 wireguard 对我来说太复杂了……