kernel: ip_conntrack: table full, dropping packet.
原本 Linux NAT 用得好好的, 沒想到幾天前卻出現了無法上網的情況, 而系統記錄也出現了這樣的訊息: ip_conntrack: table full, dropping packet.
後來才知道, Linux NAT 的 ip_conntrack 模組會記錄 tcp 通訊協議的 established connection 記錄, 而且預設 timeout 時間長達五天 (432,000 秒), 因此只要 LAN 中有人使用 P2P 軟體 (如: eDonkey、BT...) 就容易發生這種問題.
解決方法 (1): 加大 ip_conntrack_max 值
查出原本的 ip_conntrack_max 值:
指令: cat /proc/sys/net/ipv4/ip_conntrack_max
寫入理想的數值 (每一個 ip_conntrack buffer 會佔用 292 Bytes)
指令: echo "數值" > /proc/sys/net/ipv4/ip_conntrack_max
例如: echo "81920" > /proc/sys/net/ipv4/ip_conntrack_max
這個效果是暫時的, 如果要每次開機都使用新的數值, 需將上述指令寫入 /etc/rc.d/rc.local
或是在 /etc/sysctl.conf 加入: net.ipv4.ip_conntrack_max = 數值
或使用指令: sysctl -w net.ipv4.ip_conntrack_max=數值
解決方法 (2): 降低 ip_conntrack timeout 時間
重設 ip_conntrack_tcp_timeout_established (原值: 432000, 單位: 秒)
指令: echo "數值" >
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
例如: echo "600" >
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
開機自動設定的作法同方法(1).
其他相關指令:
檢視目前 ip_conntrack buffer 使用狀況
指令: grep conn /proc/slabinfo
結果例項: ip_conntrack 3024 4090 384 409 409 1 (各值說明如下)
ip_conntrackthe cache name
3024the number of currently active objects
4090the total number of available objects
384the size of each object in bytes
409the number of pages with at least one active object
409the total number of allocated pages
1the number of pages per slab are given
man slabinfo 可查詢詳細說明.
查出目前 ip_conntrack 記錄最多的前五名 IP
指令: cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 5
結果例項:
2816 192.168.1.100
14 163.30.85.129
6 220.132.142.175
6 127.0.0.1
4 218.187.5.223
由此可知, 192.168.1.100 佔用了絕大多數的 buffer, 推斷這個 IP 的 User 可能使用了 P2P軟體.
轉載自
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-687241/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 收集full table / index scan sqlIndexSQL
- The LRU Algorithm and Full Table Scans (81)Go
- Tuning Oracle Full-table ScansOracle
- ERROR 1114 (HY000) The table '' is fullError
- MySQL 8.0.25 Bug 報"MY-013132 The table ...is full"MySql
- Oracle Exadata的TABLE ACCESS STORAGE FULL執行計劃Oracle
- 【TUNE_ORACLE】列出走了TABLE ACCESS FULL的SQL參考OracleSQL
- mysql 記憶體表The table 'pvlogs' is full問題處理MySql記憶體
- Dropping a Database (122)Database
- (轉)索引掃描還是全表掃描(Index Scan Or Full Table Scan)索引Index
- 轉)索引掃描還是全表掃描(Index Scan Or Full Table Scan)索引Index
- ORA-31633: unable to create master table "SYSTEM.SYS_EXPORT_FULL_XX"ASTExport
- ERROR 1114 (HY000): The table 'test1' is full 的解決Error
- Index Full Scan vs Index Fast Full ScanIndexAST
- Index Full Scans和Index Fast Full ScansIndexAST
- Index Full Scan 與 Index Fast Full ScanIndexAST
- INDEX FULL SCAN和INDEX FAST FULL SCAN區別IndexAST
- index full scan 和 index FAST full scan 區別IndexAST
- Index Full Scan 與 Index Fast Full Scan (Final)IndexAST
- rowid,index,INDEX FULL SCAN,INDEX FAST FULL SCAN|IndexAST
- 主主複製的mysql從庫 記憶體表The table 'pvlogs' is full問題處理MySql記憶體
- 【SQLServer】Filegroup is fullSQLServer
- INDEX UNIQUE SCAN,INDEX FULL SCAN和INDEX FAST FULL SCANIndexAST
- INDEX FULL SCAN和INDEX FAST FULL SCAN的區別IndexAST
- ORA-20010: INTERNAL ERROR: dumped min/max is null for table EXP.SYS_EXPORT_FULL_01ErrorNullExport
- Index的掃描方式:index full scan/index fast full scanIndexAST
- index full scan 和 index fast full scan (IFS,FFS)的不同IndexAST
- 核心引數kernel.shmall和kernel.shmmaxHMM
- oracle full database backupOracleDatabase
- Hugemem Kernel ExplainedAI
- 12c-Say goodbye to your backup when dropping your PDBGo
- Oracle11g維護分割槽(三)——Dropping PartitionsOracle
- ERROR 1010 (HY000): Error dropping databaseErrorDatabase
- Index Full Scan和Index Fast Full Scan行為差異分析(上)IndexAST
- Index Full Scan和Index Fast Full Scan行為差異分析(下)IndexAST
- Linux Kernel File IO Syscall Kernel-Source-Code Analysis(undone)Linux
- 向kernel module 傳遞引數(Passing Arugments to Kernel Module)
- BW的Repair Full RequestAI