1. 程式人生 > 其它 >Linux-NAT原理總結

Linux-NAT原理總結

NAT

NAT: network address translation,支援PREROUTING,INPUT,OUTPUT,POSTROUTING四個鏈

請求報文:修改源/目標IP,由定義如何修改

響應報文:修改源/目標IP,根據跟蹤機制自動實現

NAT的實現分為下面型別:

  • SNAT:source NAT ,支援POSTROUTING, INPUT,讓本地網路中的主機通過某一特定地址訪問 外部網路,實現地址偽裝,請求報文:修改源IP
  • DNAT:destination NAT 支援PREROUTING , OUTPUT,把本地網路中的主機上的某服務開放給外 部網路訪問(釋出服務和埠對映),但隱藏真實IP,請求報文:修改目標IP
  • PNAT: port nat,埠和IP都進行修改

SNAT

SNAT:基於nat表的target,適用於固定的公網IP

SNAT選項:

  • --to-source [ipaddr[-ipaddr]][:port[-port]]
  • --random
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source ExtIP

注意: 需要開啟 ip_forward

示例:

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! –d 10.0.0.0/24 -j SNAT --tosource 172.18
.1.6-172.18.1.9

MASQUERADE:基於nat表的target,適用於動態的公網IP,如:撥號網路

MASQUERADE選項:

  • --to-ports port[-port]
  • --random
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j MASQUERADE

示例

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j MASQUERADE 

DNAT

DNAT:nat表的target,適用於埠對映,即可重定向到本機,也可以支援重定向至不同主機的不同端 口,但不支援多目標,即不支援負載均衡功能

DNAT選項:

  • --to-destination [ipaddr[-ipaddr]][:port[-port]]

DNAT 格式:

iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --todestination InterSeverIP[:PORT]

注意: 需要開啟 ip_forward

REDIRECT 轉發

REDIRECT,是NAT表的 target,通過改變目標IP和埠,將接受的包轉發至同一個主機的不同埠,可 用於PREROUTING OUTPUT鏈

REDIRECT選項:

--to-ports port[-port]

注意: 無需開啟 ip_forward

示例:

iptables -t nat -A PREROUTING -d 172.16.100.10 -p tcp --dport 80 -j REDIRECT --to-ports 8080