我在 Debian 上使用附加接口运行 Wireguard wg0
。有了这个 ufw 规则,我期望 ufw 能够传递我的流量:
ufw allow in on wg0 to any
但相反,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
有人知道这里发生什么事吗?
答案1
日志显示两个接口: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]
(不是很明显,但in
和out
可以同时使用)
因此,为了允许 OP 案例中被阻止的流量:
ufw route allow in on wg0 out on eth0
或者对于来自wg0
任何目标接口的转发流量,只需:
ufw route allow in on wg0