nftables nat 计数器不完整

nftables nat 计数器不完整

我正在尝试学习 nftables/nat 并进行一些简单的实验设置:

Machine1 (router):
    - eth0 192.168.0.1
    - eth1 192.168.1.1

Machine2:
    - eth0 192.168.1.2

对于 Machine1,我设置了 NAT:

table ip nat {
        chain postrouting {
                type nat hook postrouting priority srcnat; policy accept;
                ip daddr 192.168.1.2 counter packets 0 bytes 0
                ip saddr 192.168.1.2 counter packets 6 bytes 420
                ip saddr 192.168.1.0/24 oif "eth0" snat to 192.168.0.1
        }
}

NAT 工作正常,我可以从 Machine2 访问 192.168.0.1 (及更高版本)。

但是,我很难使用计数器:上面的数字来自wget stackoverflow.comMachine2,远低于ls -l index.html实际值(~180k)。我可以想象,这些只是传出的字节/数据包,传入的则没有被计算(我添加了计数器,daddr希望得到这些)。

我错过了什么?

答案1

当连接经过 NAT 时,该连接将借助连接跟踪进行处理。这意味着只有连接的初始数据包(SYN、SYN-ACK、ACK)才能通过 NAT 规则。

其余的数据包将使用在 NAT 启动时设置的连接跟踪条目进行处理。

如果要统计数据包数量,则需要向表链中添加filter规则FORWARD

相关内容