linux下iptables讲解
iptables(netfilter網(wǎng)絡過濾器)
iptables是linux上特有的防火墻機制,功能非常強大。CentOS默認是沒有iptables規(guī)則。
iptables命令可用于配置Linux的包過濾規(guī)則,常用于實現(xiàn)防火墻、NAT。
常用選項:
iptables -nvL 查看規(guī)則(-n為數(shù)字顯示輸出的ip地址和端口 -v 為可視化顯示 -L為列出所有的規(guī)則)
iptables -F 清除規(guī)則(flush清除);清除只是臨時的,重啟系統(tǒng)或者重啟iptables服務后還會加載已經(jīng)保存的規(guī)則。清除之后要保存規(guī)則。
/etc/init.d/iptables save 或 service iptables save 保存規(guī)則
防火墻規(guī)則保存在配置文件 /etc/sysconfig/iptables
iptables -Z 計數(shù)器清零(zero)
service iptables stop 暫停防火墻服務,并清除防火墻規(guī)則,但是重啟后會讀取/etc/sysconfig/iptables 從而啟動防火墻。即使我們停止防火墻,但是一旦添加任何一條規(guī)則,它也會開啟。
iptables -t 指定表名(table),默認不加-t 則是filter表;
直觀圖便于理解,4個表,5個鏈;
filter 這個表主要用于過濾包的,是系統(tǒng)預設的表,內建三個鏈INPUT、OUTPUT以及FORWARD。INPUT作用于進入本機的包;OUTPUT作用于本機送出的包;FORWARD作用于那些跟本機無關的包。
nat 主要用處是網(wǎng)絡地址轉換、端口映射,也有三個鏈。PREROUTING 鏈的作用是在包剛剛到達防火墻時改變它的目的地址,如果需要的話。OUTPUT鏈改變本地產(chǎn)生的包的目的地址。POSTROUTING鏈在包就要離開防火墻之前改變其源地址。
mangle 主要用于修改數(shù)據(jù)包的TOS(Type Of Service,服務類型)、TTL(Time ToLive,生存周期)值以及為數(shù)據(jù)包設置Mark標記,以實現(xiàn)Qos (Quality of Service,服務質量)調整以及策略路由等應用,由于需要相應的路由設備支持,因此應用并不廣泛。 五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
raw 對報文設置一個標志,決定數(shù)據(jù)包是否被狀態(tài)跟蹤機制處理 只有兩個鏈:OUTPUT、PREROUTING
iptables規(guī)則相關:
查看規(guī)則 iptables -t nat -nvL
清除規(guī)則 iptables -t nat -F
增加/刪除規(guī)則 iptables -A/-D INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP
插入規(guī)則 iptables -I INPUT -s 1.1.1.1 -j DROP/ACCEPT/REJECT
iptables -nvL --line-numbers 查看規(guī)則帶有id號
iptables -D INPUT 1 根據(jù)規(guī)則的id號刪除對應規(guī)則
iptables -P INPUT DROP 用來設定默認規(guī)則,默認是ACCEPT ,一旦設定為DROP后,只能使用 iptables -P ACCEPT 才能恢復成原始狀態(tài),而不能使用-F參數(shù);
把ip為192.168.20.0網(wǎng)段所有數(shù)據(jù)包都丟掉
|
1
|
[root@yong ~]# iptables -I INPUT -s 192.168.20.0 -j DROP |
刪除規(guī)則的話,要與添加規(guī)則的后綴一樣才可以;
|
1
|
[root@yong ~]# iptables -D INPUT -s 192.168.20.0 -j DROP |
把1.1.1.1 訪問本地tcp協(xié)議80端口的所有數(shù)據(jù)包都丟掉;
|
1
|
[root@yong ~]# iptables -I INPUT -s 1.1.1.1 -p tcp --dport 80 -j DROP |
把發(fā)送到10.0.1.14的22端口的所有數(shù)據(jù)包丟掉;
|
1
|
[root@yong ~]# iptables -I OUTPUT -p tcp --dport 22 -d 10.0.1.14 -j DROP |
使用這個命令查看規(guī)則帶有id號顯示;
|
1
2
3
4
5
|
[root@yong ~]# iptables -nvL --line-numberChain INPUT (policy ACCEPT 84 packets, 5944 bytes)num pkts bytes target prot opt in out source destination 1 0 0 DROP tcp -- * * 1.1.1.1 0.0.0.0/0 tcp dpt:80 2 0 0 DROP all -- * * 192.168.20.0 0.0.0.0/0 |
然后刪除的時候使用iptables -D INPUT 1 刪除上面的1規(guī)則,不用寫很長的后綴。
禁止別人ping你的主機,你可以ping別人;只需要添加一條規(guī)則;icmp-type 8 可以實現(xiàn);
[root@yong ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP
示例,編一個腳本,針對filter表,所有的INPUT鏈DROP,其他兩個鏈ACCEPT,然后針對192.168.20.0/24網(wǎng)段開通22端口可以連接主機;對所有網(wǎng)段開放80端口;對所有網(wǎng)段開通21端口;
|
1
2
3
4
5
6
7
8
9
10
|
[root@yong ~]# vim iptables.sh #! /bin/bash ipt="/sbin/iptables"$ipt -F$ipt -P INPUT DROP$ipt -P OUTPUT ACCEPT$ipt -P FORWARD ACCEPT$ipt -A INPUT -s 192.168.20.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 |
|
1
|
[root@yong ~]# sh iptables.sh |
運行腳本即可,如果想開機運行防火墻規(guī)則的話,在/etc/rc.d/rc.local 添加一行“/bin/sh /root/iptables.sh”
nat表應用:
路由器就是使用iptables的nat原理實現(xiàn).
假設您的機器上有兩塊網(wǎng)卡eth0和eth1,其中eth0的IP為192.168.4.11,eth1的IP為192.168.20.1 。eth0連接了internet 但eth1沒有連接,現(xiàn)在有另一臺機器(192.168.20.10)和eth1是互通的,那么如何設置也能夠讓連接eth1的這臺機器能夠連接internet?
|
1
2
3
4
|
[root@yong ~]# cat /proc/sys/net/ipv4/ip_forward0[root@yong ~]# echo "1" > /proc/sys/net/ipv4/ip_forward [root@yong ~]# iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o eth0 -j MASQUERADE |
/proc/sys/net/ipv4/ip_forward 為內核參數(shù)相關的文件,默認為0,1為打開路由轉發(fā)功能。
第2條命令為iptables對nat表做了一個IP轉發(fā)的操作,-o 后面跟設備名,表示出口的網(wǎng)卡。MASQUERADE表示偽裝的意思;讓192.168.20.0網(wǎng)段通過eth0偽裝出去連接上網(wǎng)。
iptables規(guī)則備份與恢復:
service iptables save 這樣會保存到/etc/sysconfig/iptables ,如果以后遇到備份防火墻規(guī)則的任務,就是拷貝一份這個文件的副本。
iptables-save > myipt.rule 可以把防火墻規(guī)則保存到指定文件中;
iptables-restore < myipt.rule 這樣可以恢復指定的規(guī)則;
|
1
2
3
4
5
6
|
[root@yong ~]# iptables-save > myipt.rule[root@yong ~]# service iptables stopiptables: Setting chains to policy ACCEPT: nat filter [ OK ]iptables: Flushing firewall rules: [ OK ]iptables: Unloading modules: [ OK ][root@yong ~]# iptables-restore < myipt.rule |
總結
以上是生活随笔為你收集整理的linux下iptables讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CRMEasy知识库访问权限
- 下一篇: linux 开启 自动挂载U盘 权限的设