現代化小白也要嘗試的容器手札 - Docker 進階網路深入探討(二)
Day20. Docker 進階網路深入探討(二) 進階網路深入探討(二) 觀念五 Iptables 容器所有到外部網路的連接,來源地址都會被NAT轉址成宿主機的IP,而其中的手腳就是來自於 iptables 。 iptables的 NAT Table ,透過此表來實行主機上的路由轉送的動作,重申在linux中IP並非專屬任一實體網卡,而是屬於linux內可被轉址,平時所用的軟體路由是基於linux內核iptables實現,使用NAT前需開啟轉發才能產生作用。 透過以下iptables程序鏈的封包過濾圖 INPUT : 應用於進入本主機的網路封包。 OUTPUT : 應用於由本主機送出的網路封包。 FORWARD : 應用於經由本主機轉送的網路封包。 PREROUTING : 應用於進行路由前的網路封包。 POSTORTING : 應用於被送出前的網路封包。 並非每種表格都有所有鏈結,各功能內建鏈結對照如下: filter table:INPUT,OUTPUT,FORWARD。 nat table:PREROUTING,OUTPUT,POSTROUTING。 mangle table:INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING。 raw table:OUTPUT,PREROUTING。 security table:INPUT,OUTPUT,FORWARD。 一般如果不啟動NAT功能,只要使用 filter table的INPUT,OUTPUT 鏈已足夠。 如需啟用NAT,除過濾功能本身外,最重要就是 FORWARD轉送 功能,並用位址轉換表格的POSTROUTING,將封由內網私有 IP偽裝(MASQUERADE) 成NAT對外IP,才能連上Internet。 iptables -t nat -nL Chain PREROUTING (policy ACCEPT) target prot opt source destination DOCKER all -- 0.0.0.0/0 0.0.0.0/0 Chain INPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot