nf_conntrack: table full, dropping packet
參考:linux 路由跟蹤表滿錯誤 nf_conntrack: table full, dropping packet 原理解決方法
說明
ping,dmesg 或者 /var/log/messages日志中這個報錯,說明服務器網絡方面遇到了瓶頸。
此時查看 cat /proc/sys/net/netfilter/nf_conntrack_max 和 cat /proc/sys/net/netfilter/nf_conntrack_count的值相等或者非常接近。
但是cpu、mem、DiskIO各方面都還有余力。(一開始我懷疑是宿主機的問題,實際并不是。)
技術深入
連接跟蹤的能力由nf_conntrack模塊提供,該模塊一般不會被開機加載,通過
lsmod命令查看,該模塊被iptable_nat模塊調用,用來實現網絡地址轉發(NAT)、包過濾和負載均衡(支持隨機和輪詢)等功能。nf_conntrack 跟蹤所有網絡連接,記錄存儲在 1 個哈希表里。
通過cat /proc/net/nf_conntrack | head -1可以查看記錄的詳情。
ipv4 2 tcp 6 429397 ESTABLISHED src=192.168.122.1 dst=192.168.122.195 sport=35866 dport=22 src=192.168.122.195 dst=192.168.122.1 sport=22 dport=35866 [ASSURED] mark=0 secctx=system_u:object_r:unlabeled_t:s0 zone=0 use=2
- nf_conntrack跟蹤所有網絡連接,所以 ping 本機也會留下一條記錄:
ipv4 2 icmp 1 25 src=127.0.0.1 dst=127.0.0.1 type=8 code=0 id=20087 src=127.0.0.1 dst=127.0.0.1 type=0 code=0 id=20087 mark=0 secctx=system_u:object_r:unlabeled_t:s0 zone=0 use=2
問題處理
- 關閉使用連接跟蹤的程序,比如docker、libvirt、防火墻(類似于禁用模塊)
- 調整內核參數
- 設置不跟蹤的連接
在云上環境一般會配置安全組策略,虛機無需另外配置防火墻,所以關閉即可,不能關閉的可以調整 nf_conntrack 相關內核參數。
附錄
linux /etc 目錄下面 modprobe.d/ modules-load.d/ motd 的作用
modprobe.d/目錄:該目錄包含了一些用于配置內核模塊加載的文件。在這個目錄中,可以創建一些以.conf為后綴的文件,用于指定內核模塊的加載選項。這些文件中的配置可以影響到系統啟動時內核模塊的加載行為。
modules-load.d/目錄:該目錄包含了一些用于配置系統啟動時自動加載內核模塊的文件。在這個目錄中,可以創建一些以.conf為后綴的文件,用于指定需要在系統啟動時自動加載的內核模塊。這些文件中的配置會在系統啟動時被讀取,并相應地加載指定的內核模塊。
motd文件:motd是"Message of the Day"的縮寫,意為每日消息。在Linux系統中,motd文件用于在用戶登錄時顯示一些系統相關的信息,如系統版本、登錄提示、重要通知等。motd文件可以用于向用戶提供一些重要的系統信息或者警告。
總結起來,modprobe.d/目錄用于配置內核模塊加載選項,modules-load.d/目錄用于配置系統啟動時自動加載的內核模塊,而motd文件則用于在用戶登錄時顯示系統相關的信息。
使用iptables規則實現負載均衡
隨機:(Random balancing)
iptables -A PREROUTING -t nat -p tcp -d 192.168.1.1 --dport 27017 -m statistic --mode random --probability 0.33 -j DNAT --to-destination 10.0.0.2:1234
iptables -A PREROUTING -t nat -p tcp -d 192.168.1.1 --dport 27017 -m statistic --mode random --probability 0.33 -j DNAT --to-destination 10.0.0.3:1234
iptables -A PREROUTING -t nat -p tcp -d 192.168.1.1 --dport 27017 -j DNAT --to-destination 10.0.0.4:1234
輪詢:(Round Robin)
有3個server,3個server輪詢處理流量包,則規則配置如下:
iptables -A PREROUTING -t nat -p tcp -d 192.168.1.1 --dport 27017 -m statistic --mode nth --every 3 --packet 0 -j DNAT --to-destination 10.0.0.2:1234
iptables -A PREROUTING -t nat -p tcp -d 192.168.1.1 --dport 27017 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 10.0.0.3:1234
iptables -A PREROUTING -t nat -p tcp -d 192.168.1.1 --dport 27017 -j DNAT --to-destination 10.0.0.4:1234
總結
以上是生活随笔為你收集整理的nf_conntrack: table full, dropping packet的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HBuilderX内置终端无法使用不能输
- 下一篇: mysql修改密码和开启远程访问