我之前问过如何在运行带有 ufw 和 iptables 作为管理的 wireguard 服务的 VPS 上转发端口。
我不得不这样做:
(56000是我随机选择的端口)(10.66.66.2是wireguard的内部ip)
ufw route allow proto tcp to 10.66.66.2 port 56000
然后我会这样做以实际使用 iptables 转发端口:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 56000 -j DNAT --to-destination 10.66.66.2
有没有办法让我实现这一目标firewalld
?所以我不必将转发分成两个地方?
伪装在这里使用/是否需要?因为我不知道它的作用,也不知道它的用途。
VPS wireguard wg0 conf 供参考:
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
从您之前的 UFW 问题来看,听起来您将 WireGuard 用于两个目的?:1)将流量从您的 VPS 的 WireGuard 客户端转发到 Internet,以及 2)将一些公共端口从您的 VPS 转发回 WireGuard 客户端. 1)需要伪装(又名 SNAT),2)需要端口转发(又名 DNAT)。
使用 firewalld 进行设置的最简单方法是将 VPS 的公共以太网接口(
eth0
在您的情况下)绑定到 firewalld 的预定义external
区域,并将 VPS 的 WireGuard 接口(wg0
在您的情况下)绑定到 firewalld 的预定义internal
区域。该external
区域预先配置了启用伪装;并且这两个区域也预先配置为接受 SSH 和其他一些服务。首先在区域上打开您的 VPS 的 WireGuard 侦听端口(
49503
在您的情况下)external
:56000
并将区域上的端口 TCP 转发external
到同一端口10.66.66.2
:然后绑定
eth0
到external
区域(将防火墙的external
区域配置应用于所有eth0
连接):并绑定
wg0
到internal
区域:检查您的活动区域:
并检查您的
external
区域的配置:如果一切正常,请保存您当前的 firewalld 设置: