如何使用 nftables 跟踪 nat 传出连接。只需要查看 nat 统计信息,即或多或少使用了哪些输出地址。
root@nat-1:~# nft list table nat
table ip nat {
chain post {
type nat hook postrouting priority 100; policy accept;
ip saddr 10.0.0.0/8 oif "bond0.926" snat to 19.246.159.1-19.246.159.7
}
chain pre {
type nat hook prerouting priority -100; policy accept;
}
}
Run Code Online (Sandbox Code Playgroud)
netstat-nat 适用于 iptables,但不再适用于 nftables。
netstat-nat -S
Could not read info about connections from the kernel, make sure netfilter is enabled in kernel or by modules.
Run Code Online (Sandbox Code Playgroud)
我当然可以使用 tcpdump,但应该有一些更好的实用程序;-)
iptables或nftables不执行 NAT:netfilter执行此操作。iptables和nftables使用挂钩到netfilter来发出一些“命令”来创建新的 NAT 状态。完成后,所有这些都由netfilter直接处理(这就是为什么对于iptables和nftables来说,只看到 nat 表/类型的第一个数据包)。所以最终 NAT 状态守护者是 netfilter 及其 conntrack 子系统。
现在,netstat-nat使用内核提供的文件/proc/net/nf_conntrack来显示 conntrack 信息。如果此文件不可用(例如:没有完整的 root 权限、在不映射这部分的容器中运行/proc等),您可能会收到错误。我不知道为什么不是,但无论如何,这是特定的 conntrack 后端工具:(conntrack来自conntrack-tools)它完全依赖于较新的 API ( netlink ) 而不是/proc. 从其联机帮助页来看,等效的命令(当然具有完全不同的输出)将是:
conntrack -L -n
Run Code Online (Sandbox Code Playgroud)
命令
[...]
-L --dump
列出连接跟踪或期望表
[...]
-E, --event
显示实时事件日志。
[...]过滤参数
[...]
-n, --src-nat
过滤源 NAT 连接。
您甚至可以使用事件模式实时跟踪源 NAT 状态:
conntrack -E -n
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7417 次 |
| 最近记录: |