使用wireguard进行端口转发

7 port-forwarding wireguard

使用 qbittorrent 和 airdcpp 等应用程序来共享文件。它们都需要转发一些端口才能“可连接”。

在家庭连接中,我会进入路由器设置192.168.1.1,然后转发端口,例如。56000到我的电脑的本地 IP 地址:192.168.1.124。而且服务会正常工作。

后来在Linode VPS 上设置了wireguard,希望我可以VPN 进入它并屏蔽我的IP。但是当我这样做时,当我访问https://whoer.net这样的地方时,我的 IP 地址会发生变化。但使用的端口,例如。 56000未转发,因此应用程序不可“连接”。

为了让 VPS 像我的家庭路由器一样转发这些端口,我需要在 iptables 中添加哪些内容?

端口56000设置为allow活动 VPSufw防火墙中的端口。

非常感谢您的浏览。

这是我的 VPS 线卫配置的样子:

Address = 10.66.66.1/24,fd42:42:42::1/64
ListenPort = 49503
PrivateKey = ***


[Peer]
PublicKey = ***
PresharedKey = ***
AllowedIPs = 10.66.66.2/32,fd42:42:42::2/128
Run Code Online (Sandbox Code Playgroud)

小智 7

由于您使用的是 UFW,首先请确保56000您添加的端口的 UFW 规则不是常规输入规则,而是“路由”(又名转发)规则,如下所示(假设它用于 TCP 端口;替换tcpudpfor UDP):

ufw route allow proto tcp to 10.66.66.2 port 56000
Run Code Online (Sandbox Code Playgroud)

然后,对于要转发的每个端口,您需要这样的 iptables 规则(其中eth0是 WAN 接口的名称):

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 56000 -j DNAT --to-destination 10.66.66.2
Run Code Online (Sandbox Code Playgroud)

如果您想要转发一堆单独的端口,您可以使用模块的--dports标志(注意)将它们全部(最多 15 个端口)放入同一规则中:smultiport

iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --dports 123,456,789 -j DNAT --to-destination 10.66.66.2
Run Code Online (Sandbox Code Playgroud)

由于您使用的是 UFW,您可能希望将PREROUTING规则放入配置文件*nat的块中/etc/ufw/before.rules,如下所示(假设您可能已经有与POSTROUTING那里的规则类似的内容):

# /etc/ufw/before.rules
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp --dport 56000 -j DNAT --to-destination 10.66.66.2
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
Run Code Online (Sandbox Code Playgroud)

*nat如果文件中还没有块/etc/ufw/before.rules,请将其添加到文件末尾。进行更改后重新启动 UFW。