Nat
使用 nftables 查看 NAT 連接
如何使用 nftables 跟踪 nat 傳出連接。只需要查看 nat stats,或多或少使用了哪些輸出地址。
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; } }
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.
我當然可以使用 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
命令
$$ … $$
-L –dump
列出連接跟踪或期望表
$$ … $$
-E, –event
顯示實時事件日誌。
$$ … $$ 過濾器參數
$$ … $$
-n, –src-nat
過濾源 NAT 連接。
您甚至可以使用事件模式實時跟踪源 NAT 狀態:
conntrack -E -n