2014-11-16 25 views
4

我試圖理解後的iptables的規則之一:多克的NAT表輸出鏈規則

$ sudo iptables -t nat --list -v 
... 

Chain OUTPUT (policy ACCEPT 618 packets, 31267 bytes) 
pkts bytes target  prot opt in  out  source    destination 
    0  0 DOCKER  all -- any any  anywhere   !127.0.0.0/8   ADDRTYPE match dst-type LOCAL 

... 

所以這個規則試圖匹配目的地址類型爲「本地」,而不是在127.0的範圍內。 0.0/8?

它會匹配什麼地址呢? 這條規則的目的是什麼?

謝謝!

回答

8

該規則將匹配始發於本地計算機的所有數據包(因爲它位於OUTPUT鏈中),其目的地是本地託管的IP地址,該地址不以127.X.X.X開頭。這些數據包被交給DOCKER鏈進行進一步處理。

不以127.X.X.X開頭的本地託管IP地址與爲機器接口定義的每個IP地址相匹配。這也包括動態定義的IP地址,例如通過DHCP分配的IP地址。

通過執行命令ip route show table local type local可以提取機器的本地託管IP地址。


爲了檢查哪些IP地址實際上是由該規則相匹配,日誌記錄規則可以被添加到所述DOCKER鏈的開頭如下:

sudo iptables -t nat -I DOCKER -m limit --limit 2/min -j LOG --log-level 4 --log-prefix 'DOCKER CHAIN ' 

匹配的數據包將在被記錄文件/var/log/syslog

+0

我不認爲這是一個commont ...它應該是「iptables比賽」,我認爲? – otm

+0

我編輯了我的回覆。請檢查它... – Yoel

+0

不,但評論看起來像'/ * addrtype --dst -type LOCAL * /' 並且該規則應該來自類似於: 'iptables -t nat -A OUTPUT -j DOCKER ! -d 127.0.0.0/8 -m addrtype --dst -type LOCAL' – otm