带 Wireguard 的 Firewalld 转发功能

1 port-forwarding firewalld wireguard

我之前问过如何在运行wireguard服务的VPS上转发端口,以ufw和iptables作为管理。

我必须这样做:

(56000是我选择的随机端口)(10.66.66.2是wireguard的内部ip)

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

然后我会这样做来实际使用 iptables 转发端口:

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)

我有办法实现这一firewalld目标吗?这样我就不必将转发分成两个地方?

这里是否使用伪装/是否需要?因为我不知道它有什么作用,也不知道它有什么用。

VPSwireguardwg0conf供参考:

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)

小智 5

从您之前的 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

$ sudo firewall-cmd --zone=external --add-port=49503/udp
Run Code Online (Sandbox Code Playgroud)

并将区域56000上的端口 TCP 转发external到 上的同一端口10.66.66.2

$ sudo firewall-cmd --zone=external --add-forward-port='port=56000:proto=tcp:toaddr=10.66.66.2'
Run Code Online (Sandbox Code Playgroud)

然后绑定eth0external区域(这会将防火墙的external区域配置应用于所有eth0连接):

$ sudo firewall-cmd --zone=external --add-interface=eth0
Run Code Online (Sandbox Code Playgroud)

并绑定wg0internal区域:

$ sudo firewall-cmd --zone=internal --add-interface=wg0
Run Code Online (Sandbox Code Playgroud)

检查您的活动区域:

$ sudo firewall-cmd --get-active-zones
external
  interfaces: eth0
internal
  interfaces: wg0
Run Code Online (Sandbox Code Playgroud)

并检查您的区域的配置external

$ sudo firewall-cmd --info-zone=external
external (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: ssh
  ports: 49503/udp
  protocols:
  masquerade: yes
  forward-ports: port=56000:proto=tcp:toaddr=10.66.66.2
  source-ports:
  icmp-blocks:
  rich rules:
Run Code Online (Sandbox Code Playgroud)

如果一切正常,请保存当前的防火墙设置:

$ sudo firewall-cmd --runtime-to-permanent
Run Code Online (Sandbox Code Playgroud)