iptables 指令基本參數和用法
iptables –[ A | I 鍊] [ -i | o 網絡接口 ] [ -p 協定 ] [ -s 來源ip/網域 ] [ -d 目标ip/網域 ] –j [ ACCEPT | DROP ]
參數 | 作用 |
-P | 設定預設政策:iptables -P INPUT (DROP|ACCEPT) |
-F | 清空規則鍊 |
-L | 檢視規則鍊 |
-A | 在規則鍊的末尾加入新規則 |
-I num | 在規則鍊的頭部加入新規則 |
-D num | 删除某一條規則 |
-s | 比對來源位址IP/MASK,加歎号"!"表示除這個IP外。 |
-d | 比對目标位址 |
-i 網卡名稱 | 比對從這塊網卡流入的資料 |
-o 網卡名稱 | 比對從這塊網卡流出的資料 |
-p | 比對協定,如tcp,udp,icmp |
--dport num | 比對目标端口号 |
--sport num | 比對來源端口号 |
NAT(Network AddressTranslation網絡位址轉換)
首先說說區域網路内封包的傳送,
1. 先經過 NAT table 的 PREROUTING 鍊;
2. 經路由判斷确定這個封包是要進入本機與否,若不進入本機,則下一步;
3. 再經過 Filter table 的 FORWARD 鍊;
4. 通過 NAT table 的 POSTROUTING 鍊,最後傳送出去。
SNAT 和 DNAT 是 iptables 中使用 NAT 規則相關的的兩個重要概念。如下圖所示,如果内網主機通路外網而經過路由時,源 IP 會發生改變,這種變更行為就是 SNAT;反之,當外網的資料經過路由發往内網主機時,資料包中的目的 IP (路由器上的公網 IP) 将修改為内網 IP,這種變更行為就是 DNAT
SNAT:即源位址轉換
能夠讓多個内網使用者通過一個外網位址上網,解決了IP資源匮乏的問題,路由器也就使用此技術,使用 POSTROUTING
# 由上圖可知,需要将 192.168.10.10 轉換為 111.196.211.212,iptables指令如下:
iptables -t nat -A POSTROUTING -s 192.168.10.10 -o eth1 -j SNAT --to-source 111.196.221.212
# 外網IP位址不穩定的情況即可使用MASQUERADE(動态僞裝),能夠自動的尋找外網位址并改為目前正确的外網IP位址
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
DNAT:目地位址轉換
則能夠讓外網使用者通路區域網路内不同的伺服器。使用 PREROUTING
# 由上圖可知,目标位址 192.168.10. 6 在路由前就轉換成 61.240.149.149
iptables -t nat -A PREROUTING -i eth1 -d 61.240.149.149 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.6:80
将外網通路80端口的資料轉發到8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080