iptables的NAT

網絡防火牆

NAT(network address translation)網絡地址轉換,又分爲SNAT、DNAT和PNAT

SNAT:NAT轉換時請求報文替換了源地址,響應報文替換了目標地址,所以又爲SNAT


DNAT:當外網用戶訪問局域網內的站點時,網關收到請求報文並將請求報文內的目標地

址和端口更換爲局域網內的地址和端口,局域網內的站點收到請求報文後將響應報文發送

給網關,網關再將響應報文中的源地址替換爲外網地址,將報文發送回外網用戶


PNAT:以http服務爲例,外網用戶要訪問內網的http服務請求的端口是80,而內網的httpd服

務工作在非標準的端口8080上,此時內網的http服務器就需要將發送給本機80端口的數據報文

重新重定向至本機的8080端口,這就叫做PNAT 也叫端口重定向


環境要求:三臺主機

充當路由器的主機開啓ip_forward

echo net.ipv4.ip_forward >> /etc/sysctl.conf

sysctl -p

網絡配置安裝圖中配置,

SNAT:

image.png

假設左側NAT網卡連接的部分爲內網,本地公網ip172.16.12.7,172.16.12.6不配置網關

直接在本地pc   ping  172.16.12.6是不通的,因爲數據報文到達B,B查看和A不在同一網段,又沒有網關,只能收到來自

A的請求報文沒有迴應

image.png

用SNAT解決這種情況

SNAT又分爲二種情況

(1)固定的本地公網ip

iptables -t nat -A POSTROUTING -s 192.168.12.0/24 -j SNAT --to-source 172.16.12.7

數據包可能是從防火牆本身發出或者由內部主機發出,所以由 POSTROUTING彙總後轉發,因此添加在POSTROUTING

(2)撥號上網公網ip不固定,其實這種寫法也適用於固定ip

iptables  -t nat -A POSTROUTING -s 192.168.12.0/24 -j MASQUERADE


DNAT:

image.png

通過互聯訪問本地公網ip172.16.12.7從而將請求發給本地pc,類似於調度器

iptables -t nat -A PREROUTING -d 172.16.12.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.12.17:80

應該加在PREROUTING上,以httpd爲例,數據報文傳送過來如果經過PREROUTING到達INPUT沒有找到對應服務,

報文直接被丟棄

在B上訪問172.16.12.7,訪問日誌源ip還是172.16.12.6

image.png

iptables -t nat -F
iptables -t nat -A PREROUTING -d 172.16.12.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.12.17:8080

將本地公網ip80端口映射成內網的8080,一個本地公網ip的80只能映射成1個端口,

PNAT:

外網訪問本地pc80端口,自動轉到8080,需要將httpd服務端口修改爲8080

在本地pc添加端口轉發規則

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

   image.png 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章