![nftables 伪装不起作用](https://linux22.com/image/788367/nftables%20%E4%BC%AA%E8%A3%85%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我有一台笔记本电脑 (172.16.0.2) 和一台台式电脑 (172.16.0.1)。手机以 USB 调制解调器模式连接到电脑,并显示为 enp5s0f3u1 接口。我已经通过 nftables 设置了伪装,以便笔记本电脑可以通过本地网络通过台式电脑访问互联网。然而,几天前,它停止工作了,我不知道为什么。我已经检查了路由表,并且转发也已启用。问题似乎出在台式电脑上,因为出于某种原因,nftables 没有做任何事情(请求从笔记本电脑发送到电脑,但 IP 地址没有改变,例如,172.16.0.2 -> one.one.one.one)。
这是我的 nftables 规则集:
flush ruleset
define MODEM_INTERFACE = enp5s0f3u1
define HOME_INTERFACE = enp3s0
define HOME_PC = 172.16.0.1/32
define HOME_SERVER = 172.16.0.2/32 # laptop
define HOME_NETWORK = 172.16.0.0/12
table inet nat {
chain postrouting {
type nat hook postrouting priority 100;
ip saddr $HOME_NETWORK iifname enp3s0 oifname $MODEM_INTERFACE masquerade
}
}
当监听调制解调器接口时,tcpdump 输出为空白。
答案1
Docker 服务使用 iptables 而不是 nftables 创建规则,并且转发被阻止。