为什么 firewalld 拒绝来自我的 LAN 的 nft 伪装流量?

为什么 firewalld 拒绝来自我的 LAN 的 nft 伪装流量?

我正在尝试通过以太网共享 wifi 互联网。两台机器 A 和 B 都运行 Fedora 32,通过以太网交换机连接,A 通过 wifi 连接到互联网。在firewalld.conf

FirewallBackend=nftables

使用nft我添加了一个 nat 表和一个伪装规则:

# nft list table nat -a
table ip nat { # handle 7
    chain postrouting { # handle 2
        type nat hook postrouting priority srcnat; policy accept;
        ip saddr 10.0.0.0/24 counter packets 18 bytes 1255 masquerade # handle 13
    }
}

机器 B 有 IP 10.0.0.4,可以访问 LAN 内的任何地方,它可以 ping 通8.8.8.8,但不能telnet 8.8.8.8 80(没有到主机的路由)。对于基本上任何其他互联网请求,B 上的结果都是相同的。

# journalctl -x -e
...
FINAL_REJECT: IN=wan0 OUT= MAC=ff:ff:ff:ff:ff:ff:xx:xx:xx:xx:xx:xx:xx:xx SRC=10.188.xx.xxx DST=255.255.255.255 LEN=328 TOS=0x00 PREC=0x00 TTL=128 ID=28534 PROTO=UDP SPT=68 DPT=67 LEN=308
...

wan0看起来来自 B 的请求正在发出,但由于某种原因,响应被防火墙阻止返回。

我该如何调试firewalld以找出它在那里应用了什么规则?我真的不明白为什么日志语句没有提及拒绝流量的决定依据。有没有办法了解更多有关防火墙内部发生的逻辑?

答案1

共享互联网连接的更简单方法如下:

  1. dnf install firewall-config
  2. 从 root shell 打开应用程序(否则它会不断地要求输入密码)
  3. 将接口移动lan0trusted区域中
  4. 在默认FedoraWorkstation区域上启用地址转换
  5. 永久执行更改(选项菜单)
  6. 重新启动防火墙(选项菜单)

正确的修改出现在nft list ruleset.所以我还是不太清楚它是如何工作的。但它确实有效,而且该应用程序足够直观和完整,我并不真正需要 CLI。

相关内容