Iptables之conntrack連線跟蹤模組
Iptables是有狀態機制的防火牆,通過conntrack模組跟蹤記錄每個連線的狀態,通過它可制定嚴密的防火牆規則。
可用狀態機制:
1 2 3 4 5 |
#http://blog.onovps.com NEW #新連線資料包 ESTABLISHED #已連線資料包 RELATED #和出有送的資料包 INVALID #無效資料包 |
conntrack預設最大跟蹤65536個連線,檢視當前系統設定最大連線數:
1 |
cat /proc/sys/net/ipv4/ip_conntrack_max |
檢視當前跟蹤連線數:
1 |
cat /proc/net/ip_conntrack|wc -l |
當伺服器連線多於最大連線數時會出現kernel: ip_conntrack: table full, dropping packet的錯誤。
解決方法,修改conntrack最大跟蹤連線數:
1 2 |
vim /etc/sysctl.conf #新增以下內容 net.ipv4.ip_conntrack_max = 102400 |
立即生效:
1 |
sysctl -p
|
為防止重啟Iptables後變為預設,還需修改模組引數:
1 2 |
vim /etc/modprobe.conf #新增以下內容 options ip_conntrack hashsize=12800 #值為102400/8 |
一勞永逸的方法,設定Iptables禁止對連線數較大的服務進行跟蹤:
1 2 3 4 |
#http://blog.onovps.com iptables -A INPUT -m state --state UNTRACKED,ESTABLISHED,RELATED -j ACCEPT iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK iptables -t raw -A OUTPUT -p tcp --sport 80 -j NOTRACK |
http://blog.onovps.com/archives/iptables-conntrack-max.html