Linux關閉nf conntrack模組

2021-10-24 03:24:44 字數 2901 閱讀 6558

【問題描述】

伺服器負載正常,但伺服器記憶體飆公升影響了中介軟體的使用,檢視/var/log/messages 日誌存在大量

kernel: nf_conntrack: table full, dropping packet

【說明】

nf_conntrack 模組在 kernel 2.6.15(2006-01-03 發布) 被引入,工作在 3 層,支援 ipv4 和 ipv6,取代只支援 ipv4 的 ip_connktrack,用於跟蹤連線的狀態,供其他模組使用,它會使用乙個雜湊表來記錄 established 的記錄。需要 nat 的服務都會用到它,例如防火牆、docker 等。

開啟nf_conntrack模組會導致不需要的cpu消耗,甚至可能導致table記錄滿產生丟包問題,因此可以考慮關閉nf_conntrack模組提公升效能。

【解決方法】

1、不使用 nf_conntrack 模組【我用的這種方法,簡單粗暴】

#直接關閉iptables、ip6tables、firewalld等相關服務,並關閉開機自啟動

sed -i 's/selinux=enforcing/selinux=disabled/' /etc/selinux/config #關閉selinux

setenforce 0

systemctl stop firewalld # centos 7

service iptables stop # centos 6/7

service ip6tables stop # centos 6/7

chkconfig --level 345 ip6tables off

chkconfig --level 345 iptables off

chkconfig | grep tables # 確定全部關閉

#檢視nf_conntrack模組使用情況

lsmod |grep nf_conntrack

#移除nf_conntrack模組

sudo rmmod iptable_nat

sudo rmmod ip6table_nat

sudo rmmod nf_defrag_ipv4

sudo rmmod nf_defrag_ipv6

sudo rmmod nf_nat

sudo rmmod nf_nat_ipv4

sudo rmmod nf_nat_ipv6

sudo rmmod nf_conntrack

sudo rmmod nf_conntrack_ipv4

sudo rmmod nf_conntrack_ipv6

sudo rmmod xt_conntrack

# 需要開啟模組就使用sudo modprobe

rmmod命令說明

rmmod [-as] module_name

-a  刪除所有目前不需要的模組。

-s  把資訊輸出至syslog常駐服務,而非終端機介面。

modprobe命令說明

modprobe [-lcfr] module_name

-c :列出目前系統所有的模組

-l :列出目前在/lib/modules/`uname -r`/kernel當中的所有模組完整檔名

-f:強制載入該模組

-r:類似rmmod 就是刪除某個模組

#未使用(used by欄為0)的模組才能禁用

#如果used by不為0,先禁用後面列出的模組

#如果後面沒模組名,就是被程序使用。

#沒有簡單的方法能查到呼叫這些模組的都是什麼程序,基本靠猜

2、使用防火牆要移除state模組,因為使用該模組需要載入 nf_conntrack。確保 iptables 規則中沒有出現類似 state 模組的規則,如果有的話將其移除:

-a input -m state –state related,established -j accept
注釋 /etc/sysconfig/iptables-config 中的:

iptables_modules="ip_conntrack_netbios_ns"
移除 nf_conntrack 模組:

$ sudo modprobe -r xt_notrack nf_conntrack_netbios_ns nf_conntrack_ipv4 xt_state

$ sudo modprobe -r nf_conntrack

$ # 現在 /proc/net/ 下面應該沒有 nf_conntrack 了

3、使用 raw 表,不跟蹤連線

iptables 中的 raw 表跟包的跟蹤有關,基本就是用來幹一件事,通過 notrack 給不需要被連線跟蹤的包打標記,也就是說,如果乙個連線遇到了 -j notrack,conntrack 就不會跟蹤該連線,raw 的優先順序大於 mangle, nat, filter,包含 prerouting 和 output 鏈。

當執行 -t raw 時,系統會自動載入 iptable_raw 模組(需要該模組存在)。raw 在 2.4 以及 2.6 早期的核心中不存在,除非打了 patch,目前的系統應該都有支援:

$ sudo iptables -a forward -m state --state untracked -j accept

$ sudo iptables -t raw -a prerouting -p tcp -m multiport --dport 80,8080 -j notrack

$ sudo iptables -t raw -a prerouting -p tcp -m multiport --sport 80,8080 -j notrack

linux關閉服務

輸入ntsysv 命令把不需要的服務前面的 去掉,然後重啟 linux 伺服器。具體哪些服務是必須啟動的 服務建議表 服務名稱 功能簡介 建議 crond 系統的定時任務,一般的 linux 伺服器都需要定時任務來協助系統維護。建議開啟 開啟 httpd apache 服務的守護程序。如果需要啟動 ...

關閉LINUX報警聲

vmware上裝的linux,在shell下由於輸錯命令或是種種原因,會發出 嘟嘟 的報警聲,並不是音效卡發出的,而是主機板的報警,所以不能通過關閉音箱來解決。寢室裡經常響起這樣的聲音非常刺耳,今天在網上找到了解決方法,記下 將 etc inputrc中的set bell style none 前的...

linux關閉sendmail服務

方法一 a.root sample etc rc.d init.d sendmail stop 關閉sendmail服務 或者 root sample service sendmail stop 關閉sendmail服務 shutting down sendmail ok shutting down...