您好,登錄后才能下訂單哦!
iptables令很多小伙伴腦闊疼,下面我們來說說如何使用iptables。
通過iptables --help
查看一下iptables用法
[root@note1 ~]# iptables --help
iptables v1.4.21
Usage: iptables -[ACD] chain rule-specification [options]
iptables -I chain [rulenum] rule-specification [options]
iptables -R chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
iptables -[LS] [chain [rulenum]] [options]
iptables -[FZ] [chain] [options]
iptables -[NX] chain
iptables -E old-chain-name new-chain-name
iptables -P chain target [options]
iptables -h (print this help information)
iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]
iptables命令由 表 + 命令 + 鏈 + 匹配條件 + 處理動作
組成
iptables由四表五鏈組成。每個表分別實現不同的功能,每個表擁有不同的鏈,鏈代表規則實現的位置。
四表分別為:
五鏈分別為:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。
不同表支持的鏈:
添加規則時的考量點:
鏈:鏈上的規則次序,即為檢查的次序;因此,隱含一定的應用法則:
使用iptables命令時若不使用-t
指明操作哪張表,默認操作filter表。
iptables命令有三大類,查看,鏈管理,規則管理
-t : 查看的表
-n :不進行 IP 與 HOSTNAME 的反解
-v :列出更多的信息,包括通過該規則的封包總位數、相關的網絡接口等.
-L :列出目前的 table 的規則.
-S :查看規則定義,
--line-number用于查看規則號.
#使用iptables查看規則
[root@note1 ~]# iptables -vnL --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 467 29128 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 41 packets, 4276 bytes)
num pkts bytes target prot opt in out source destination
[root@note1 ~]#
[root@note1 ~]# iptables -vnL INPUT --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 502 31476 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
[root@note1 ~]#
#使用-S選項查看iptables的規則定義
[root@note1 ~]# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-N:new, 自定義一條新的規則鏈;
iptables -N test
-X:delete,刪除自定義的規則鏈;
? 注意:僅能刪除用戶自定義的引用計數為0的空的鏈;
iptables -X test
-E:重命名自定義鏈;引用計數不為0的自定義鏈不能夠被重命名,也不能被刪除;
iptables -N testrn
iptables -E testrn testrename
-P:Policy,設置默認策略;對filter表中的鏈而言,其默認策略有:
使用需謹慎,由于我測試時,沒有先增加一條放行ssh的規則,所以在我將filter的INPUT鏈默認策略改為DROP后,我已經無法通過Xshell鏈接虛擬機了,需要進入VMware放行ssh。
iptables -P INPUT DROP
增加了放行規則后,我們已經成功使用Xshell重新連上了主機
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
使用命令添加默認策略
#先放行ssh,INPUT鏈及OUTPUT鏈都要放行。
iptables -A INPUT -d 176.16.128.1 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -s 176.16.128.1 -p tcp --sport 22 -j ACCEPT
#添加新規則的時候要插入在默認拒絕規則前,除這些規則外的都將拒絕。
iptables -A INPUT -d 176.16.128.1 -j REJECT
iptables -A OUTPUT -s 176.16.128.1 -j REJECT
#設置鏈上的默認策略為允許。
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
-A:append,在已有規則后追加規則;
# 在note1節點增加一條拒絕80端口的規則
[root@note1 local]# iptables -A INPUT -p tcp --dport 80 -j REJECT
# 我們可以看到由于是使用追加命令追加的規則,這條規則的位置為2
[root@note1 local]# iptables -vnL --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 4208 225K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 2 120 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 reject-with icmp-port-unreachable
# 在主機點訪問note1節點的80端口
[root@master ~]# curl note1:80
curl: (7) Failed connect to note1:80; 拒絕連接
[root@master ~]#
-R:replace,替換指定鏈上的指定規則;
# 使用-R命令修改拒絕80端口的規則為接受訪問
[root@note1 local]# iptables -R INPUT 2 -p tcp --dport 80 -j ACCEPT
# 查看iptables
[root@note1 local]# iptables -vnL --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 4881 271K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
# 在master節點訪問80端口,可以看到網頁的內容了。
[root@master ~]# curl note1:80
<h2>I'm Note1</h2>
[root@master ~]#
-I:insert, 插入,要指明位置,省略時表示第一條;
# 使用iptables -I不指定位置插入規則。
[root@note1 ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
# 查看iptables,顯示新增加的規則為第一條。
[root@note1 ~]# iptables -vnL INPUT --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
2 616 38140 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
[root@note1 ~]#
#使用iptables -I指定在第二條插入規則。
[root@note1 ~]# iptables -I INPUT 2 -p tcp --dport 443 -j ACCEPT
[root@note1 ~]# iptables -vnL INPUT --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
3 810 50540 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
[root@note1 ~]#
-D:delete,刪除規則按照規則序號或規則本身
[root@note1 ~]# iptables -vnL INPUT --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
3 835 52340 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
[root@note1 ~]# iptables -D INPUT 2
[root@note1 ~]# iptables -vnL INPUT --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
2 882 55100 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
[root@note1 ~]#
[root@note1 ~]# iptables -vnL INPUT --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
2 882 55100 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
[root@note1 ~]# iptables -D INPUT -p tcp --dport 3306 -j ACCEPT
[root@note1 ~]# iptables -vnL INPUT --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 1016 62940 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
[root@note1 ~]#
iptables的每條規則都有兩個計數器:
[root@note1 ~]# iptables -vnL INPUT --line-number
Chain INPUT (policy ACCEPT 11 packets, 774 bytes)
num pkts bytes target prot opt in out source destination
1 1028 63752 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
[root@note1 ~]# iptables -Z INPUT
[root@note1 ~]# iptables -vnL INPUT --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 6 364 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
[root@note1 ~]#
[root@note1 ~]# iptables -vnL INPUT --line-number
Chain INPUT (policy ACCEPT 5 packets, 180 bytes)
num pkts bytes target prot opt in out source destination
1 46 2728 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
[root@note1 ~]# iptables -F INPUT
[root@note1 ~]# iptables -vnL INPUT --line-number
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)
num pkts bytes target prot opt in out source destination
[root@note1 ~]#
無需加載任何模塊,由iptables/netfilter自行提供;
[!] -s, --source
address[/mask][,...]:檢查報文中的源IP地址是否符合此處指定的地址或范圍;
[!] -d, --destination
address[/mask][,...]:檢查報文中的目標IP地址是否符合此處指定的地址或范圍;所有地址:0.0.0.0/0
[!] -p, --protocol
protocol: tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh or "all"
最常用的協議tcp、udp、icmp;
[!] -i, --in-interface
數據報文流入的接口;只能應用于數據報文流入的環節,只能應用于PREROUTING,INPUT和FORWARD鏈;
[!] -o, --out-interface
數據報文流出的接口;只能應用于數據報文流出的環節,只能應用于FORWARD、OUTPUT和POSTROUTING鏈;
[!]中的嘆號表示取反的意思
隱式擴展:不需要手動加載擴展模塊;因為它們是對協議的擴展,所以在使用-p選項指明了特定的協議時,就表示已經指明了要擴展的模塊,無需再同時使用-m選項指明擴展模塊的擴展機制。
[!] --source-port, --sport port[:port]:
匹配報文的源端口;可以是端口范圍;
[!] --destination-port, --dport port[:port]:
匹配報文的目標端口;可以是端口范圍;
[!] --tcp-flags mask comp
mask是我們應該檢查的標志,以逗號分隔,例如 SYN,ACK,FIN,RST
comp是必須設置的標志,例如SYN
例如:“--tcp-flags SYN,ACK,FIN,RST SYN”表示,要檢查的標志位為SYN,ACK,FIN,RST四個,其中SYN必須為1,余下的必須為0;
[!] --syn:用于匹配第一次握手,相當于”--tcp-flags SYN,ACK,FIN,RST SYN“;
[!]嘆號表示取反的意思
[!] --source-port, --sport port[:port]:
匹配報文的源端口;可以是端口范圍;
[!] --destination-port, --dport port[:port]:
匹配報文的目標端口;可以是端口范圍;
[!]嘆號表示取反的意思
[!] --icmp-type {type[/code]|typename}
[!]嘆號表示取反的意思
類型為8:請求回送echo-request(Ping 請求)
類型為0:回送應答echo-reply(Ping 應答)
我們設置INPUT放行icmp-type類型為0的報文,OUTPUT放行icmp-type類型為8的報文,默認規則設置為拒絕,這樣就可以只允許我們ping其他主機,不允許其他主機ping我們。
#因為要增加默認拒絕規則,所以先放行ssh
[root@note1 ~]# iptables -A INPUT -d 176.16.128.1 -p tcp --dport 22 -j ACCEPT
[root@note1 ~]# iptables -A OUTPUT -s 176.16.128.1 -p tcp --sport 22 -j ACCEPT
#增加默認拒絕規則
[root@note1 ~]# iptables -A INPUT -d 176.16.128.1 -j REJECT
[root@note1 ~]# iptables -A OUTPUT -s 176.16.128.1 -j REJECT
[root@note1 ~]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
299 19206 ACCEPT tcp -- * * 0.0.0.0/0 176.16.128.1 tcp dpt:22
0 0 REJECT all -- * * 0.0.0.0/0 176.16.128.1 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
165 15559 ACCEPT tcp -- * * 176.16.128.1 0.0.0.0/0 tcp spt:22
0 0 REJECT all -- * * 176.16.128.1 0.0.0.0/0 reject-with icmp-port-unreachable
#現在我們嘗試ping,由于ping未在iptables中設置所以ping請求無法發送。
[root@note1 ~]# ping 176.16.128.8
PING 176.16.128.8 (176.16.128.8) 56(84) bytes of data.
ping: sendmsg: 不允許的操作
ping: sendmsg: 不允許的操作
ping: sendmsg: 不允許的操作
^C
--- 176.16.128.8 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms
#現在我們在OUTPUT鏈上增加一條允許發送ping請求的規則
[root@note1 ~]# iptables -I OUTPUT 2 -s 176.16.128.1 -p icmp --icmp-type 8 -j ACCEPT
#嘗試ping,發現請求可以發送了,但是未有響應回來
[root@note1 ~]# ping 176.16.128.8
PING 176.16.128.8 (176.16.128.8) 56(84) bytes of data.
#我們使用tcpdump抓包,發現ping請求是有響應回來的。是INPUT鏈沒有放行。
[root@note1 ~]# tcpdump -i eno16777736 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno16777736, link-type EN10MB (Ethernet), capture size 262144 bytes
20:45:00.605683 IP note1 > master: ICMP echo request, id 4276, seq 64, length 64
20:45:00.605962 IP master > note1: ICMP echo reply, id 4276, seq 64, length 64
20:45:01.606935 IP note1 > master: ICMP echo request, id 4276, seq 65, length 64
20:45:01.607533 IP master > note1: ICMP echo reply, id 4276, seq 65, length 64
^C
8 packets captured
8 packets received by filter
0 packets dropped by kernel
[root@note1 ~]#
#我們在iptables的INPUT鏈放行ping請求的響應。
[root@note1 ~]# iptables -I INPUT 2 -d 176.16.128.1 -p icmp --icmp-type 0 -j ACCEPT
#至此我們已經ping通了其他主機。
[root@note1 ~]# ping 176.16.128.8
PING 176.16.128.8 (176.16.128.8) 56(84) bytes of data.
64 bytes from 176.16.128.8: icmp_seq=228 ttl=64 time=0.687 ms
64 bytes from 176.16.128.8: icmp_seq=229 ttl=64 time=0.432 ms
^C
--- 176.16.128.8 ping statistics ---
231 packets transmitted, 4 received, 98% packet loss, time 230101ms
rtt min/avg/max/mdev = 0.432/0.804/1.443/0.382 ms
[root@note1 ~]#
若要允許其他主機也能ping我們。在INPUT鏈中追加一條放行icmp-type類型為8的報文,OUTPUT放行icmp-type類型為0的報文,這樣就都可以ping通了。
顯式擴展:必須使用-m選項指明要調用的擴展模塊的擴展機制;
使用
man iptables-extensions
來查看顯示擴展的用法。
以離散或連續的方式定義多端口匹配條件,最多15個;
[!]--source-ports, --sports port[,port|,port:port]...:指定多個源端口;
[!]--destination-ports, --dports port[,port|,port:port]...:指定多個目標端口;
[!]嘆號表示取反的意思
我們說過iptables要盡量將那些可由一條規則描述的多個規則合并起來,不但可以更簡潔,這樣也可以提高報文通過的效率。
#使用iptables放行21,22,23,80,139,443,445,3306等端口。
iptables -A INPUT -p tcp -m multiport --dports 21:23,80,139,443,445,3306 -j ACCEPT
以連續地址塊的方式來指明多IP地址匹配條件;
[!] --src-range from[-to] #源地址區間
[!] --dst-range from[-to] #目標地址區間
[!]嘆號表示取反的意思
設置放行176.16.128.5-176.16.128.10區間的IP可以訪問主機
[root@note1 init.d]#iptables -I INPUT 2 -p icmp --icmp-type 8 -m iprange --src-range 176.16.128.5-176.16.128.10 -j ACCEPT
[root@note1 init.d]#iptables -I OUTPUT 2 -p icmp --icmp-type 0 -s 176.16.128.1 -j ACCEPT
#使用176.16.128.2 Ping主機,是沒有回應的。
[root@note2 ~]# ping 176.16.128.1
PING 176.16.128.1 (176.16.128.1) 56(84) bytes of data.
^C
--- 176.16.128.1 ping statistics ---
11 packets transmitted, 0 received, 100% packet loss, time 10076ms
[root@note2 ~]#
#使用176.16.128.8 Ping主機,在ip區間內是可以收到回復的。
[root@master ~]# ping 176.16.128.1
PING 176.16.128.1 (176.16.128.1) 56(84) bytes of data.
64 bytes from 176.16.128.1: icmp_seq=1 ttl=64 time=0.539 ms
64 bytes from 176.16.128.1: icmp_seq=2 ttl=64 time=0.922 ms
^C
--- 176.16.128.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1020ms
rtt min/avg/max/mdev = 0.539/0.730/0.922/0.193 ms
[root@master ~]#
指定數據包到達時間/日期范圍的匹配條件。
--timestart hh:mm[:ss]
--timestop hh:mm[:ss]
[!] --weekdays day[,day...]
[!] --monthdays day[,day...]
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--kerneltz:使用內核配置的時區而非默認的UTC;
[!]嘆號表示取反的意思
一般時間或與周幾聯用,或時間與每月幾號聯用。日期一般不常用。
#INPUT鏈放行工作區域176.16.128.5-176.16.128.10的主機在周一至周五的早9點到晚5點可以訪問telnet服務。
iptables -I INPUT 2 -d 176.16.128.1 -p tcp --dport 23 -m iprange --src-range 176.16.128.5-176.16.128.10 -m time --timestart 9:00:00 --timestop 17:00:00 --weekdays 1,2,3,4,5 --kerneltz -j ACCEPT
#OUTPUT鏈放行telnet服務。
iptables -I OUTPUT 2 -s 176.16.128.1 -p tcp --sport 23 -j ACCEPT
該模塊使用某種模式匹配策略來匹配給定的字符串。
--algo {bm|kmp} #匹配算法
[!] --string pattern #要過濾的字符串
[!] --hex-string pattern #要檢查的字符串的十六進制編碼
--from offset #從報文的哪個位置開始檢查
--to offset #從報文的哪個位置結束檢查
[!]嘆號表示取反的意思。
只對明文編碼的協議生效。
# 出棧報文中包含字符串gay拒絕訪問。
iptables -I OUTPUT -m string --algo bm --string "gay" -j REJECT
允許您限制每個客戶端地址與服務器的并行連接數。
--connlimit-upto n #上限 小于等于
--connlimit-above n #下限 大于等于
取決于默認規則是什么,默認規則是拒絕,使用upto,設置低于就允許,不低于就被默認規則所匹配。
# 設置每個客戶端ssh的連接不大于2個。
iptables -I INPUT -p tcp -d 176.16.128.1 --dport 22 -m connlimit --connlimit-upto 2 -j ACCEPT
此模塊使用令牌桶限制請求的速率。
--limit rate[/second|/minute|/hour|/day] #每秒、每分、每小時、每天多少個。
--limit-burst number #一批最多個數、峰值(桶大小)
限制本機某tcp服務接收新請求的速率:--syn, -m limit
# 限制主機Ping請求每分鐘20次,峰值發三次。
[root@note1 sysconfig]# iptables -I INPUT 2 -p icmp --icmp-type 8 -m limit --limit 20/minute --limit-burst 3 -j ACCEPT
[root@note1 sysconfig]# iptables -I OUTPUT 2 -p icmp --icmp-type 0 -j ACCEPT
[root@note1 sysconfig]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
893 57538 ACCEPT tcp -- * * 0.0.0.0/0 176.16.128.1 tcp dpt:22 #conn src/32 <= 2
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 limit: avg 20/min burst 3
0 0 ACCEPT tcp -- * * 0.0.0.0/0 176.16.128.1 multiport dports 80,443,3306
2 104 REJECT all -- * * 0.0.0.0/0 176.16.128.1 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
547 39791 ACCEPT tcp -- * * 176.16.128.1 0.0.0.0/0 multiport sports 22,80,443,3306
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 0
10 848 REJECT all -- * * 176.16.128.1 0.0.0.0/0 reject-with icmp-port-unreachable
[root@note1 sysconfig]#
#Ping主機,觀察應答的時間,得出已經成功限制Ping請求速率。
[root@master ~]# ping 176.16.128.1
PING 176.16.128.1 (176.16.128.1) 56(84) bytes of data.
64 bytes from 176.16.128.1: icmp_seq=1 ttl=64 time=0.692 ms
64 bytes from 176.16.128.1: icmp_seq=2 ttl=64 time=0.684 ms
64 bytes from 176.16.128.1: icmp_seq=3 ttl=64 time=0.722 ms
64 bytes from 176.16.128.1: icmp_seq=4 ttl=64 time=0.706 ms
64 bytes from 176.16.128.1: icmp_seq=7 ttl=64 time=1.10 ms
64 bytes from 176.16.128.1: icmp_seq=10 ttl=64 time=1.89 ms
64 bytes from 176.16.128.1: icmp_seq=13 ttl=64 time=0.983 ms
^C
--- 176.16.128.1 ping statistics ---
14 packets transmitted, 7 received, 50% packet loss, time 13093ms
rtt min/avg/max/mdev = 0.684/0.969/1.893/0.409 ms
[root@master ~]#
state模塊允許訪問此數據包的連接跟蹤狀態。
#僅放行哪些連接的狀態。
[!] --state state
INVALID, ESTABLISHED, NEW, RELATED or UNTRACKED.
NEW: 新連接請求;
ESTABLISHED:已建立的連接;
INVALID:無法識別的連接;
RELATED:相關聯的連接,當前連接是一個新請求,但附屬于某個已存在的連接;
UNTRACKED:未追蹤的連接;
state擴展:
內核模塊裝載:
nf_conntrack
nf_conntrack_ipv4
手動裝載:
nf_conntrack_ftp
追蹤到的連接:
/proc/net/nf_conntrack
調整可記錄的連接數量最大值:
/proc/sys/net/nf_conntrack_max
超時時長:
/proc/sys/net/netfilter/timeout
-j targetname [per-target-options]
ACCEPT 允許
DROP 丟棄
--reject-with type
--log-level
--log-prefix
默認日志保存于/var/log/messages
返回調用者;
自定義鏈做為target:
保存:iptables-save > /PATH/TO/SOME_RULE_FILE
重載:iptabls-restore < /PATH/FROM/SOME_RULE_FILE
-n, --noflush
:不清除原有規則-t, --test
:僅分析生成規則集,但不提交
保存規則:service iptables save
保存規則于/etc/sysconfig/iptables
文件,覆蓋保存;
重載規則:service iptables restart
默認重載/etc/sysconfig/iptables
文件中的規則
配置文件:/etc/sysconfig/iptables-config
(1) 自定義Unit File,進行iptables-restore
(2) firewalld服務;
(3) 自定義腳本;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。