wireguard docker、iptables 和端口转发到客户端

wireguard docker、iptables 和端口转发到客户端

我有一台运行 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.238IP 地址。

我遇到的问题在于将端口转发到 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 对我来说太复杂了……

相关内容