Docker iptables 詳解

1. 環(huán)境說明

該環(huán)境安裝了docker ,并啟動了一個容器做了端口映射

iptables 里raw书在、mangle 表都是空的


// docker 容器

docker ps| grep 43040d1aba46

43040d1aba46 aylei/aliyun-exporter:0.3.1 "python -u /usr/loca…" 2 months ago Up 2 months 9522/tcp, 0.0.0.0:9525->9525/tcp gallant_lumiere

// iptables filter 表 配置

Chain INPUT (policy ACCEPT)

target prot opt source destination         

Chain FORWARD (policy DROP)

target prot opt source destination         

DOCKER-USER all -- 0.0.0.0/0 0.0.0.0/0           

DOCKER-ISOLATION-STAGE-1 all -- 0.0.0.0/0 0.0.0.0/0           

ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED

DOCKER all -- 0.0.0.0/0 0.0.0.0/0           

ACCEPT all -- 0.0.0.0/0 0.0.0.0/0           

ACCEPT all -- 0.0.0.0/0 0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)

target prot opt source destination         

Chain DOCKER (1 references)

target prot opt source destination         

ACCEPT tcp -- 0.0.0.0/0 172.17.0.6 tcp dpt:9525

Chain DOCKER-ISOLATION-STAGE-1 (1 references)

target prot opt source destination         

DOCKER-ISOLATION-STAGE-2 all -- 0.0.0.0/0 0.0.0.0/0           

RETURN all -- 0.0.0.0/0 0.0.0.0/0           

Chain DOCKER-ISOLATION-STAGE-2 (1 references)

target prot opt source destination         

DROP all -- 0.0.0.0/0 0.0.0.0/0           

RETURN all -- 0.0.0.0/0 0.0.0.0/0           

Chain DOCKER-USER (1 references)

target prot opt source destination         

RETURN all -- 0.0.0.0/0 0.0.0.0/0     

// iptables nat 表配置

Chain INPUT (policy ACCEPT)

target prot opt source destination         

Chain FORWARD (policy DROP)

target prot opt source destination         

DOCKER-USER all -- 0.0.0.0/0 0.0.0.0/0           

DOCKER-ISOLATION-STAGE-1 all -- 0.0.0.0/0 0.0.0.0/0           

ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED

DOCKER all -- 0.0.0.0/0 0.0.0.0/0           

ACCEPT all -- 0.0.0.0/0 0.0.0.0/0           

ACCEPT all -- 0.0.0.0/0 0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)

target prot opt source destination         

Chain DOCKER (1 references)

target prot opt source destination         

ACCEPT tcp -- 0.0.0.0/0 172.17.0.6 tcp dpt:9525

Chain DOCKER-ISOLATION-STAGE-1 (1 references)

target prot opt source destination         

DOCKER-ISOLATION-STAGE-2 all -- 0.0.0.0/0 0.0.0.0/0           

RETURN all -- 0.0.0.0/0 0.0.0.0/0           

Chain DOCKER-ISOLATION-STAGE-2 (1 references)

target prot opt source destination         

DROP all -- 0.0.0.0/0 0.0.0.0/0           

RETURN all -- 0.0.0.0/0 0.0.0.0/0           

Chain DOCKER-USER (1 references)

target prot opt source destination         

RETURN all -- 0.0.0.0/0 0.0.0.0/0           

[root@yunwei_jenkins-dev_1 ~]# 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 ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)

target prot opt source destination         

Chain OUTPUT (policy ACCEPT)

target prot opt source destination         

DOCKER all -- 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)

target prot opt source destination         

MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0           

MASQUERADE tcp -- 172.17.0.6 172.17.0.6 tcp dpt:9525

Chain DOCKER (2 references)

target prot opt source destination         

RETURN all -- 0.0.0.0/0 0.0.0.0/0           

DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9525 to:172.17.0.6:9525

2. 數(shù)據(jù)如何經(jīng)過iptables

接著來梳理灰伟,數(shù)據(jù)經(jīng)過iptables 是如何處理的。首先需要了解iptables 的組成:
iptables 有4表(raw、mangle栏账、nat帖族、filter)5鏈(prerouting、input挡爵、forward竖般、output、postrouting)茶鹃,數(shù)據(jù)經(jīng)過iptables 需要按順序經(jīng)過5鏈進(jìn)行處理涣雕。看下圖:

image.png

1闭翩、首先數(shù)據(jù)經(jīng)過prerouting表挣郭,由于 raw、mangle表都為空疗韵,所以可以直接看nat表的prerouting 鏈:

從這里可以看到通過nat表中的prerouting鏈兑障,將所有訪問本地地址的數(shù)據(jù)都匹配到Docker 鏈;

而Docker 這里有DNAT 規(guī)則蕉汪,將訪問宿主機(jī) 9525端口的數(shù)據(jù)轉(zhuǎn)發(fā)到 172.17.0.6:9525


// nat 表

# 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 ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)

target prot opt source destination         

Chain OUTPUT (policy ACCEPT)

target prot opt source destination         

DOCKER all -- 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)

target prot opt source destination         

MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0           

MASQUERADE tcp -- 172.17.0.6 172.17.0.6 tcp dpt:9525

Chain DOCKER (2 references)

target prot opt source destination         

RETURN all -- 0.0.0.0/0 0.0.0.0/0           

DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9525 to:172.17.0.6:9525

2流译、再到input鏈,其中mangle表為空者疤,直接看nat福澡、filter表中的input鏈:

從【1】可以看到nat 中input鏈以及filter表的input鏈都沒做任何規(guī)則


// filter表

# iptables -t filter -nL

Chain INPUT (policy ACCEPT)

target prot opt source destination         

Chain FORWARD (policy DROP)

target prot opt source destination         

DOCKER-USER all -- 0.0.0.0/0 0.0.0.0/0           

DOCKER-ISOLATION-STAGE-1 all -- 0.0.0.0/0 0.0.0.0/0           

ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED

DOCKER all -- 0.0.0.0/0 0.0.0.0/0           

ACCEPT all -- 0.0.0.0/0 0.0.0.0/0           

ACCEPT all -- 0.0.0.0/0 0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)

target prot opt source destination         

Chain DOCKER (1 references)

target prot opt source destination         

ACCEPT tcp -- 0.0.0.0/0 172.17.0.6 tcp dpt:9525

Chain DOCKER-ISOLATION-STAGE-1 (1 references)

target prot opt source destination         

DOCKER-ISOLATION-STAGE-2 all -- 0.0.0.0/0 0.0.0.0/0           

RETURN all -- 0.0.0.0/0 0.0.0.0/0           

Chain DOCKER-ISOLATION-STAGE-2 (1 references)

target prot opt source destination         

DROP all -- 0.0.0.0/0 0.0.0.0/0           

RETURN all -- 0.0.0.0/0 0.0.0.0/0           

Chain DOCKER-USER (1 references)

target prot opt source destination         

RETURN all -- 0.0.0.0/0 0.0.0.0/0           

3、再接著到output鏈宛渐,raw竞漾、mangle為空,直接查看nat窥翩、filter表中的output 鏈

從上可以看到 nat 表中的output鏈將所有目的地址為非環(huán)回地址的本地地址數(shù)據(jù)匹配到Docker鏈业岁,然后重復(fù)DNAT;

再到filter表中的output鏈沒有做任何規(guī)則

4寇蚊、 最后到postrouting 鏈笔时,mangle 為空,nat 表將目標(biāo)地址為0.0.0.0 數(shù)據(jù)通過SNAT做動態(tài)轉(zhuǎn)發(fā)出去仗岸,而目標(biāo)地址為172.17.0.6 的則轉(zhuǎn)發(fā)到9525 端口

PS:
這是經(jīng)過朋友的講解和自己一些理解允耿,如有錯誤請指正。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扒怖,一起剝皮案震驚了整個濱河市较锡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盗痒,老刑警劉巖蚂蕴,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡骡楼,警方通過查閱死者的電腦和手機(jī)熔号,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸟整,“玉大人引镊,你說我怎么就攤上這事±禾酰” “怎么了弟头?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長兑燥。 經(jīng)常有香客問我亮瓷,道長琴拧,這世上最難降的妖魔是什么降瞳? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蚓胸,結(jié)果婚禮上挣饥,老公的妹妹穿的比我還像新娘。我一直安慰自己沛膳,他們只是感情好扔枫,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锹安,像睡著了一般短荐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叹哭,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天忍宋,我揣著相機(jī)與錄音,去河邊找鬼风罩。 笑死糠排,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的超升。 我是一名探鬼主播入宦,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼室琢!你這毒婦竟也來了乾闰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盈滴,失蹤者是張志新(化名)和其女友劉穎涯肩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡宽菜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年谣膳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铅乡。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡继谚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出阵幸,到底是詐尸還是另有隱情花履,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布挚赊,位于F島的核電站诡壁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏荠割。R本人自食惡果不足惜妹卿,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蔑鹦。 院中可真熱鬧夺克,春花似錦、人聲如沸嚎朽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哟忍。三九已至狡门,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锅很,已是汗流浹背其馏。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留粗蔚,地道東北人尝偎。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像鹏控,于是被迫代替她去往敵國和親致扯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354