Nat

使用 nftables 查看 NAT 連接

  • December 7, 2019

如何使用 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,但應該有一些更好的實用程序 ;-)

iptablesnftables不做 NAT:netfilter做。iptablesnftables在**netfilter中使用鉤子來給出一些“命令”來創建新的 NAT 狀態。一旦完成,這一切都由netfilter直接處理(這就是為什麼對於iptablesnftables,只能看到 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 

引用自:https://serverfault.com/questions/994272