Linux 伺服器上缺少統計資訊 /proc/net/stat/nf_conntrack
出於某種原因,我的伺服器上沒有這樣的文件..
root@serv:~# uname -a Linux serv 5.4.0-87-generic #98~18.04.1-Ubuntu SMP Wed Sep 22 10:45:04 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux root@serv:~# cat /proc/net/stat/nf_conntrack cat: /proc/net/stat/nf_conntrack: No such file or directory
但是我的 conntrack 肯定是啟用的:
root@serv:~# lsmod | grep conntr xt_conntrack 16384 1 nf_conntrack_netlink 45056 0 nf_conntrack 139264 2 xt_conntrack,nf_conntrack_netlink nf_defrag_ipv6 24576 1 nf_conntrack nf_defrag_ipv4 16384 1 nf_conntrack libcrc32c 16384 1 nf_conntrack nfnetlink 16384 1 nf_conntrack_netlink x_tables 45056 3 xt_conntrack,iptable_filter,ip_tables
並且
conntrack -L
工作完美。而且
lnstat -f ip_conntrack
還顯示空輸出。是什麼原因?我應該為這個文件插入一些核心模組以顯示在 procfs 中嗎?
使conntrack可用所需的相關配置
/proc
是CONFIG_NF_CONNTRACK_PROCFS
:
CONFIG_NF_CONNTRACK_PROCFS
: 在 procfs 中提供 CT 列表 (OBSOLETE)$$ … $$ 幫助文本
此選項允許在 net/netfilter/nf_conntrack 下的 procfs 中顯示已知 conntrack 條目的列表。這被認為是過時的,有利於使用使用 Netlink 的 conntrack(8) 工具。
OP 的核心似乎已使用此包中描述的功能建構:
linux-buildinfo-5.4.0-87-generic
.唉,
/usr/lib/linux/5.4.0-87-generic/config
上面的包內容告訴我們:# CONFIG_NF_CONNTRACK_PROCFS is not set
所以這兩個
/proc/
條目通常由conntrack :提供/proc/net/nf_conntrack
並且/proc/net/stat/nf_conntrack
不會存在。正如文件所述,這已被
conntrack
使用netlink(7)核心 API 的工具取代。的大部分內容
/proc/net/stat/nf_conntrack
可以替換為:conntrack --count
它給出了條目的數量(這是 中存在的第一列數據
/proc/net/stat/nf_conntrack
)和:conntrack --stats conntrack --stats expect
它給出了 中可用的大多數其他列的內容
/proc/net/stat/nf_conntrack
,有時用於(主)conntrack
表,有時用於expect
表,每個 CPU 也有一個。一些統計數據似乎無法通過這種方式獲得(或者可能隱藏在其他地方,或者可能已經過時……)。如果您真的需要
/proc/net/stat/nf_conntrack
,您將不得不切換到具有此功能的其他核心,或者使用不同的選項重建核心。Ubuntu 似乎不再選擇此核心選項,包括在較新的核心版本中。作為參考,這裡有一個來自不同核心的範例,該核心具有此選項並使用 4 個 CPU 執行:
# cat /proc/net/stat/nf_conntrack | column -t entries clashres found new invalid ignore delete delete_list insert insert_failed drop early_drop icmp_error expect_new expect_create expect_delete search_restart 0000000a 00000092 00000000 00000000 00000276 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000016 0000000a 00000016 00002463 0000000a 00000000 00000000 00000000 00000009 00000000 00000000 00000000 00000000 00000001 00000001 00000000 00000000 00000000 00000004 00000000 000000eb 0000000a 00000000 00000000 00000000 00000008 00000000 00000000 00000000 00000000 00000007 00000007 00000000 00000000 00000000 00000004 00000000 00000100 0000000a 00000000 00000000 00000000 00000048 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000004 00000000 00000325 # conntrack -C 10 # conntrack -S cpu=0 found=0 invalid=630 insert=0 insert_failed=0 drop=0 early_drop=0 error=0 search_restart=9315 cpu=1 found=0 invalid=9 insert=0 insert_failed=1 drop=1 early_drop=0 error=0 search_restart=235 cpu=2 found=0 invalid=8 insert=0 insert_failed=7 drop=7 early_drop=0 error=0 search_restart=256 cpu=3 found=0 invalid=72 insert=0 insert_failed=0 drop=0 early_drop=0 error=0 search_restart=805 # conntrack -S expect cpu=0 expect_new=22 expect_create=10 expect_delete=22 cpu=1 expect_new=0 expect_create=4 expect_delete=0 cpu=2 expect_new=0 expect_create=4 expect_delete=0 cpu=3 expect_new=0 expect_create=4 expect_delete=0 #