WireGuard 和 UFW:UFW 会阻止 wg0 上的流量,即使规则允许

Gil*_*tes 5 debian ufw wireguard

我在 Debian 上运行带有附加接口的 Wireguard wg0。有了这个 ufw 规则,我希望 ufw 能够通过我的流量:

ufw allow in on wg0 to any
Run Code Online (Sandbox Code Playgroud)

但 ufw 却阻塞了流量:

[14674.950320] [UFW BLOCK] IN=wg0 OUT=eth0 MAC= SRC=10.0.0.2 DST=54.xx.xx.xx LEN=64 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=TCP SPT=54263 DPT=443 WINDOW=65535 RES=0x00 SYN URGP=0 
[14675.451891] [UFW BLOCK] IN=wg0 OUT=eth0 MAC= SRC=fd00:0000:0000:0000:0000:0000:0000:0002 DST=2a05:xxx LEN=84 TC=0
Run Code Online (Sandbox Code Playgroud)

有人知道这里发生了什么事吗?

A.B*_*A.B 7

日志显示了两个接口:IN=wg0 OUT=eth0. 这意味着它是路由/转发的流量,而不是以节点为目的地的流量,目的地OUT=为空。它在后端(iptables)翻译成filter/FORWARD链而不是链filter/INPUT

控制路由流量的UFW 语法是:

ufw [--dry-run] route [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out on INTERFACE] [log|log-all]
Run Code Online (Sandbox Code Playgroud)

(不太明显,但是两者in可以out同时使用)

因此,要允许在 OP 的情况下被阻止的流量:

ufw route allow in on wg0 out on eth0
Run Code Online (Sandbox Code Playgroud)

或者对于来自wg0任何目标接口的任何转发流量,只需:

ufw route allow in on wg0
Run Code Online (Sandbox Code Playgroud)