iptable

#! /bin/bash

ipt="/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -s 172.19.49.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
service iptables save
service iptables restart

8.
9.6.線上web服務器在訪問量很大時,就會出現網絡連接丟包的問題,通過dmesge | more命令查看日誌,發現如下信息:
ip_conntrack: table full, dropping packet.
爲什麼會出現 ip_conntrack: table full, dropping packet 呢?這裏面關鍵的信息是"ip_conntrack: table full, dropping packet",從這裏可以判斷出這跟iptables有關係了,因爲iptables防火牆使用了ip_conntrack內核模塊實現連接跟蹤功能,所有的進出數據包都會記錄在連接跟蹤表中,包括tcp,udp,icmp等,一旦連接跟蹤表被填滿以後,就會發生丟包,導致網絡不穩定。當這張表滿了,就會在日誌裏面寫入該信息(執行命令dmesge | more查看)。
而當我們的服務器確實打開了iptables防火牆,並且都是在網站流量非常高的時候經常會出現這個問題。這個問題的原因是由於web服務器收到了大量的連接,在啓用了iptables的情況下,iptables會把所有的連接都做鏈接跟蹤處理,這樣iptables就會有一個鏈接跟蹤表,當這個表滿的時候,就會出現上面的錯誤。
查看當前連接數:
1
2 [root@localhost ~]# cat /proc/sys/net/netfilter/nf_conntrack_count
0
iptables的鏈接跟蹤表最大容量配置文件如下:
1
2 [root@localhost ~]# cat /proc/sys/net/netfilter/nf_conntrack_max
65536
注:
由於nf_conntrack 工作在3層,支持IPv4和IPv6,而ip_conntrack只支持IPv4,因此nf_conntrack模塊在Linux的2.6.15內核中被引入,而ip_conntrack在Linux的2.6.22內核被移除(centos6.x版本),因此不同版本的系統,配置文件也就不盡相同了。目前大多的ipconntrack已被 nfconntrack 取代,很多ipconntrack*僅僅是個軟鏈接,原先的ip_conntrack配置目錄/proc/sys/net/ipv4/netfilter/ 仍然存在,但是新的nf_conntrack在/proc/sys/net/netfilter/中,這樣做是爲了能夠向下的兼容。
這個問題該如何解決,解決方法一般有兩個:
方法1:
1
2
3
4
5 [root@localhost ~]# sysctl -w net.nf_conntrack_max=100000
net.nf_conntrack_max = 100000
[root@localhost ~]# cat /proc/sys/net/netfilter/nf_conntrack_max
100000
sysctl-p
注:
嚴格來看重啓 iptables/ip6tables 會重新加載 nf_conntrack 相關的模塊, 引起參數恢復成默認值。
以免重啓 iptables 引起參數失效. 也可以在 /etc/sysconfig/iptables-config 文件中開啓選項 IPTABLES_SYSCTL_LOAD_LIST=”.nf_conntrack”, iptables 重啓後會進行 sysctl 操作.
方法2:
不使用ip_conntrack,nf_conntrack_ipv4,xt_state模塊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章