iptables是unix/linux自帶的一款優秀且開源的基於包過濾的防火牆工具。
可以用來做主機防火牆。
可以做區域網共享上網。
可以做ip及埠對映。
iptables分為4表5鏈
表:filter:input,output,forward
nat:postrouting,prerouting,output
mangle:input,output,forward,postrouting,prerouting
raw:prerouting,output
鏈:input:進入主機的資料報。
output: 流出主機的資料報。
forward: 流經主機的資料報。
prerouting: 進入伺服器最先經過的鏈,用來做nat埠或ip對映
postrouting: 流出伺服器最後經過的鏈,nat共享上網。 區域網共享上網。
4個表:filter,nat,mangle,raw,預設表是filter(沒有指定表的時候就是filter表)。表的處理優先順序:raw>mangle>nat>filter。
filter:一般的過濾功能
nat:用於nat功能(埠對映,位址對映等)
mangle:用於對特定資料報的修改
raw:優限級最高,設定raw時一般是為了不再讓iptables做資料報的鏈結跟蹤處理,提高效能
raw 表只使用在prerouting鏈和output鏈上,因為優先順序最高,從而可以對收到的資料報在連線跟蹤前進行處理。一但使用者使用了raw表,在某個鏈 上,raw表處理完後,將跳過nat表和 ip_conntrack處理,即不再做位址轉換和資料報的鏈結跟蹤處理了.
raw表可以應用在那些不需要做nat的情況下,以提高效能。如大量訪問的web伺服器,可以讓80埠不再讓iptables做資料報的鏈結跟蹤處理,以提高使用者的訪問速度。
[root@linux ~]# iptables -a input -p tcp -m tcp --dport 21 -j accept #新增filter表,開放21埠[root@linux ~]# iptables -t nat -a postrouting -s 192.168.10.0/24 -j masquerade #新增nat表,將源位址是 192.168.10.0/24
的資料報進行位址偽裝
[root@linux ~]# iptables -i input 3 -p tcp -m tcp --dport 20 -j accept #新增filter表,開放20埠,並且插入到指定位置
[root@linux ~]# iptables -l -n --line-number
chain input (policy drop)
num target prot opt source destination
1 accept all -- 0.0.0.0/0
0.0.0.0/0
2 drop icmp -- 0.0.0.0/0
0.0.0.0/0 icmp type 8
3 accept tcp -- 0.0.0.0/0
0.0.0.0/0 tcp dpt:20 #-i指定位置插的
4 accept tcp -- 0.0.0.0/0
0.0.0.0/0 tcp dpt:22
5 accept tcp -- 0.0.0.0/0
0.0.0.0/0 tcp dpt:80
6 accept all -- 0.0.0.0/0
0.0.0.0/0
state related,established
7 drop all -- 0.0.0.0/0
0.0.0.0/0
state invalid,new
8 accept tcp -- 0.0.0.0/0
0.0.0.0/0 tcp dpt:21 #-a預設插到最後
chain forward (policy accept)
num target prot opt source destination
chain output (policy accept)
num target prot opt source destination
[root@linux ~]# iptables -l -n --line-number |grep
21 #檢視filter表,--line-number可以顯示規則序號,在刪除的時候比較方便
[root@linux ~]# iptables -t nat -vnl postrouting --line-number #檢視nat表
chain postrouting (policy accept
38 packets, 2297
bytes)
num pkts bytes target prot opt
inout source destination 10
0 masquerade all -- * * 192.168.10.0/24
0.0.0.0/0
[root@linux ~]# iptables -r input 3 -j drop #將規則3改成drop
[root@linux ~]# iptables -d input 3
#刪除input的第3條規則
[root@linux ~]# iptables -t nat -d postrouting 1
#刪除nat表中postrouting的第一條規則
[root@linux ~]# iptables -f input #清空 filter表input所有規則
[root@linux ~]# iptables -f #清空所有規則
[root@linux ~]# iptables -t nat -f postrouting #清空nat表postrouting所有規則
[root@linux ~]# iptables -p input drop #設定filter表input預設規則是 drop
把所有通過eth0這個網絡卡發往位址122.
225.97.111的包都**到區域網的中192.168.1.130這台機器上.它也可以配全--string功能更強大
[root@linux ~]# iptables -t nat -a prerouting -i eth0 -p tcp\
--dst 122.225.97.111 --dport 80 -j dnat --to-destination 192.168.1.130:80
將匹配到img.51yip.com的請求轉到區域網的192.
168.1
.136這台機器上
[root@linux ~]# iptables -t nat -a prerouting -i eth0 -p tcp --dport 80
\-m string --string
"img.51yip.com
" --algo bm -j dnat --to-destination 192.168.1.136:80
snat可以讓本地ip位址偽裝成其他機器的ip位址,或者是公網ip,假如我有三颱機器,一台能上外網,另外二台卻不可以.不能上網的機器可以偽裝成可上網的那機器的ip
[root@linux ~]# iptables -t nat -i postrouting 1 -j snat -s 192.168.10.0/24 --to-destination 192.168.1.108
iptables簡單應用
可以修改 etc rc.d boot.local讓規則重啟後也能生效,如 sbin iptables f sbin iptables a input i eth0 p tcp sport 80 j accept sbin iptables a input i eth0 p tcp j drop sb...
iptables的簡單問題
編輯 etc sysconfig iptables 然後執行 sbin service iptables restart 防火牆規則只有在 iptables 服務執行的時候才能被啟用。要手工啟動服務,使用以下命令 sbin service iptables restart 要確保它在系統引導時啟動,...
iptables的簡單應用
當前主機ip 10.0.0.7 iptables a input d 10.0.0.7 p icmp icmp type 8 j reject當前主機ip 10.0.0.7 iptables a input d 10.0.0.7 p tcp dport 80 m state state new j ...