出于某种原因,我的服务器上没有这样的文件..
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
:OP 的内核似乎已使用此包中描述的功能构建:
linux-buildinfo-5.4.0-87-generic
.唉,
/usr/lib/linux/5.4.0-87-generic/config
上面的包内容告诉我们:所以这两个
/proc/
条目通常由conntrack :提供/proc/net/nf_conntrack
并且/proc/net/stat/nf_conntrack
不会存在。正如文档所述,这已被
conntrack
使用netlink(7)内核 API 的工具取代。的大部分内容
/proc/net/stat/nf_conntrack
可以替换为:它给出了条目的数量(这是 中存在的第一列数据
/proc/net/stat/nf_conntrack
)和:它给出了 中可用的大多数其他列的内容
/proc/net/stat/nf_conntrack
,有时用于(主)conntrack
表,有时用于expect
表,每个 CPU 也有一个。一些统计数据似乎无法通过这种方式获得(或者可能隐藏在其他地方,或者可能已经过时......)。如果您真的需要
/proc/net/stat/nf_conntrack
,您将不得不切换到具有此功能的其他内核,或者使用不同的选项重建内核。Ubuntu 似乎不再选择此内核选项,包括在较新的内核版本中。作为参考,这里有一个来自不同内核的示例,该内核具有此选项并使用 4 个 CPU 运行: