我正在尝试通过以太网共享 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
共享互联网连接的更简单方法如下:
dnf install firewall-config
- 从 root shell 打开应用程序(否则它会不断地要求输入密码)
- 将接口移动
lan0
到trusted
区域中 - 在默认
FedoraWorkstation
区域上启用地址转换 - 永久执行更改(选项菜单)
- 重新启动防火墙(选项菜单)
正确的修改出现在nft list ruleset
.所以我还是不太清楚它是如何工作的。但它确实有效,而且该应用程序足够直观和完整,我并不真正需要 CLI。