您好,登錄后才能下訂單哦!
iptables常見套路
【iptablesfilter表常見套路】
(注:以下的"[INPUT|FORWARD]"表示INPUT或者FORWARD)
#(1)提高防火墻效率:已有連接直接放過(強制要求要有,而且必須放在最前面)
iptables-A[INPUT|FORWARD]-ptcp-mstate--stateESTABLISHED,RELATED-jACCEPT
#(2)防***:NEW狀態的新連接并且不帶有syn位的tcp包,均認為是不合法的tcp請求,直接丟棄(建議要有)
#此條防***策略可有可無,因為安全是相對的,但是建議加上這條策略。
iptables-A[INPUT|FORWARD]-ptcp!--syn-mstate--stateNEW-jDROP
#(3)訪問控制:對訪問防火墻本機或流經內網的數據只允許訪問指定的端口(強制要求要有)
iptables-A[INPUT|FORWARD]-ptcp-mmultiport--dport22,80,443-jACCEPT
#(4)最后,設置默認策略
iptables-PINPUTDROP
iptables-PFORWARDDROP
iptables-POUTPUTACCEPT#注意OUTPUT這時是ACCEPT,即所有發出去的包全部放過,不做封禁。
###################################################################
【nat表常見套路】
#snat:源地址轉換,內網訪問外網時
iptables-tnat-APOSTROUTING-o外網網卡-s內網網段-jSNAT--to外網網卡ip
#或者使用MASQUEAGE讓netfilter自己根據出口ip選源ip
iptables-tnat-APOSTROUTING-o外網網卡-s內網網段-jMASQUERADE
#dnat:目標地址轉換,外網訪問內網服務器時
iptables-tnat-APERROUTING-i外網網卡-d外網網卡ip-ptcp--dport80-jDNAT--to內網服務器ip:80
###################################################################
【iptables策略保存及恢復】
Iptables-save>/etc/sysconfig/iptables
Iptables-restore</etc/sysconfig/iptables
###################################################################
【內核參數調整】
vi/etc/sysctl.conf
#1,目的是為了增加TCP處理性能
net.ipv4.ip_forward=1
net.ipv4.ip_default_ttl=128
net.ipv4.icmp_echo_ignore_all=1
net.ipv4.icmp_echo_ignore_broadcasts
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_syn_retries=3
net.ipv4.tcp_synack_retries=3
net.ipv4.tcp_fin_timeout=60
net.ipv4.tcp_max_syn_backlog=3200
sysctl-p使剛剛修改的sysctl.conf配置生效
#2,目的是為了增加"狀態跟蹤"的內存緩沖區,進而增強防火墻處理性能。
(2.1)vi/etc/sysctl.conf
net.ipv4.ip_conntrack_max=655350
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=1800#1800秒=30分鐘
sysctl-p使剛剛修改的sysctl.conf配置生效
(2.2)vi/etc/modprobe.conf
optionsip_conntrackhashsize=1048576#2的20次方
或者再命令行執行modprobeip_conntrackhashsize=1048576也可以,
###################################################################
下面看一個關于“狀態跟蹤”檢測的故障分析:
[故障分析]
iptables開啟狀態跟蹤后,導致一部分流量被拒絕。
[現象]
線上內核日志:/var/log/messages打印:ip_conntrack:tablefull,droppingpacket.
[原因]
由于iptables/netfilter使用了狀態跟蹤,這樣會使用更多的內存,這條日志表示內存已經超過使用限制,
服務器開始丟棄多余的數據包,
[解決]
需要調大內存使用限制的參數,如下:
1,vi/etc/sysctl.conf
net.ipv4.ip_conntrack_max=655350
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=1800#1800秒=30分鐘
(連接跟蹤表超時時間,通過測試這個參數的意義不大,和跟蹤表自動清除的時間沒有太大關系,但還是先減小,默認值是7天)
2,vi/etc/modprobe.conf
optionsip_conntrackhashsize=1048576#2的20次方
或者再命令行執行modprobeip_conntrackhashsize=1048576也可以
設置桶的數量。提高性能,可以減少內核遍歷時間。
[結論]
這幾個設置理由很簡單,因為線上服務的流量可能很大,超出預期。
為了讓iptalbes/netiflter發揮出最大的性能,給它多分配些內存空間,以防止流量太大,導致請求被拒絕。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。