天天看點

IPTABLES SNAT DNAT

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

IPTABLES SNAT DNAT
# 由上圖可知,需要将 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

IPTABLES SNAT DNAT
# 由上圖可知,目标位址 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
           

繼續閱讀