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鏈改變本地產生的包的目的地址。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-number Chain?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_forward 0 [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?stop iptables:?Setting?chains?to?policy?ACCEPT:?nat?filter??????[??OK??] iptables:?Flushing?firewall?rules:?????????????????????????[??OK??] iptables:?Unloading?modules:???????????????????????????????[??OK??] [root@yong?~]#?iptables-restore?<?myipt.rule |
轉載于:https://www.cnblogs.com/yuzhaokai0523/p/4453098.html
總結
以上是生活随笔為你收集整理的linux下iptables讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dedecms 制作模板中使用的全局标记
- 下一篇: hdu 2962 最短路+二分