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