Docker前傳之linux iptables

如果要深入了解docker的網(wǎng)絡(luò)配置局荚,那就得先了解iptables轮傍。本文接下來(lái)會(huì)從0到1的說(shuō)說(shuō)iptables挥下。

什么是iptables

iptables是linux自帶的一款開(kāi)源的內(nèi)核級(jí)基于數(shù)據(jù)包過(guò)濾的防火墻偎蘸。利用iptables可以實(shí)現(xiàn)諸如數(shù)據(jù)包過(guò)濾、轉(zhuǎn)發(fā)等功能迷雪。

基本概念

iptables包含表限书,表中包含鏈,鏈中包含規(guī)則章咧。(規(guī)則指的是一條條用于過(guò)濾數(shù)據(jù)包的語(yǔ)句)
iptables共有四個(gè)表五個(gè)鏈倦西,簡(jiǎn)稱(chēng)四表五鏈。
四表指的是filter, nat, mangle, raw赁严。其中前2個(gè)是用的最多的扰柠,后面2個(gè)用的較少,raw可以說(shuō)基本不怎么使用疼约。
五鏈指的是INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING卤档。(注意,鏈名用大寫(xiě)程剥。)

下表列出了三個(gè)常用表中包含的鏈:


表和鏈的關(guān)系.png

下面介紹常用的filter表和nat表劝枣。

filter表

過(guò)濾數(shù)據(jù)包,用于本機(jī)防火墻织鲸,這是默認(rèn)表舔腾。
包含的三個(gè)鏈,
INPUT 鏈:用于過(guò)濾所有目標(biāo)地址是本機(jī)的數(shù)據(jù)包
OUTPUT 鏈:用于過(guò)濾所有本機(jī)產(chǎn)生的數(shù)據(jù)包
FORWARD鏈:用于過(guò)濾所有路過(guò)本機(jī)的數(shù)據(jù)包

nat表

網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation)搂擦。
包含的三個(gè)動(dòng)作稳诚,
DNAT:改變數(shù)據(jù)包的目的地址使包能重路由到某臺(tái)機(jī)器,使公網(wǎng)能夠訪(fǎng)問(wèn)局域網(wǎng)內(nèi)的服務(wù)器
SNAT: 改變數(shù)據(jù)包的源地址盾饮,使局域網(wǎng)能訪(fǎng)問(wèn)公網(wǎng)
MASQUERADE:假如當(dāng)前系統(tǒng)用的是ADSL動(dòng)態(tài)撥號(hào)方式采桃,那么每次撥號(hào)懒熙,出口IP都會(huì)改變丘损,SNAT就無(wú)法使用。而MASQUERADE作用就是將IP偽裝成為封包出去的那塊裝置上的IP工扎,MASQUERADE會(huì)自動(dòng)讀取ip地址然后做SNAT出去徘钥。
包含的三個(gè)鏈,
PREROUTING鏈:數(shù)據(jù)包到達(dá)防火墻時(shí)改變包的目的地址肢娘。
OUTPUT鏈:改變本地產(chǎn)生數(shù)據(jù)包的目標(biāo)地址呈础。
POSTROUTING:在數(shù)據(jù)包離開(kāi)防火墻時(shí)改變數(shù)據(jù)包的源地址舆驶。

原理淺析

如下圖,當(dāng)請(qǐng)求主機(jī)的某個(gè)服務(wù)時(shí)而钞,需要經(jīng)過(guò)iptables中的匹配規(guī)則沙廉,由上到下層層過(guò)濾。


工作原理.png

下圖描述了一個(gè)數(shù)據(jù)包在linux內(nèi)核的處理流程臼节。


數(shù)據(jù)包處理.png

對(duì)于收到的每個(gè)數(shù)據(jù)包撬陵,都從A點(diǎn)進(jìn)來(lái),經(jīng)過(guò)路由判決(分析數(shù)據(jù)包的目的地址)网缝,如果是發(fā)送給本機(jī)的就經(jīng)過(guò)B點(diǎn)巨税,然后傳遞給進(jìn)程處理;否則就經(jīng)過(guò)C點(diǎn)粉臊,然后順著E點(diǎn)將該包轉(zhuǎn)發(fā)出去草添。
對(duì)于發(fā)送的每個(gè)數(shù)據(jù)包,也有一個(gè)路由判決扼仲,以確定該包是從哪個(gè)接口出去远寸,然后經(jīng)過(guò)D點(diǎn),最后也是順著E點(diǎn)將該包發(fā)送出去犀盟。
圖中ABCDE五個(gè)點(diǎn)就是上面提到的五個(gè)鏈而晒,如下圖:


五鏈.png

再詳細(xì)點(diǎn),在上圖中添加表阅畴,那就變?yōu)橄聢D:
表和鏈.png

從該圖可以總結(jié)出:

  1. 四表其實(shí)是對(duì)鏈進(jìn)一步劃分出了4類(lèi)倡怎,且每類(lèi)在執(zhí)行上有著不同的優(yōu)先級(jí)。對(duì)于一個(gè)數(shù)據(jù)包贱枣,四個(gè)表中的規(guī)則處理的優(yōu)先級(jí):raw>mangle>nat>filter监署。
  2. 真正讓防火墻起作用的是規(guī)則,而五表其實(shí)是5個(gè)hook點(diǎn)纽哥,規(guī)則在這5個(gè)點(diǎn)執(zhí)行钠乏。

為了精簡(jiǎn),將該圖中不太常用的mangle表去掉春塌,剩下的表和鏈也是最常用的晓避,如下圖:


表和鏈.png

上圖中,上面的弧線(xiàn)所在的路徑只壳,常用來(lái)配置主機(jī)防火墻俏拱,而下面的從左到右的直線(xiàn),是用來(lái)做nat的吼句,docker默認(rèn)的網(wǎng)絡(luò)配置即通過(guò)該路徑锅必。

總結(jié)一下iptables的用途:
利用filter表作為主機(jī)防火墻;
利用nat表的POSTROUTING鏈惕艳,使局域網(wǎng)內(nèi)的機(jī)器上網(wǎng)搞隐;
利用nat表的PREROUTING鏈驹愚,將外部socket映射為內(nèi)部socket;

下一節(jié)中將描述docker默認(rèn)的nat網(wǎng)絡(luò)配置劣纲。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逢捺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子癞季,更是在濱河造成了極大的恐慌蒸甜,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件余佛,死亡現(xiàn)場(chǎng)離奇詭異柠新,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)辉巡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)恨憎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人郊楣,你說(shuō)我怎么就攤上這事憔恳。” “怎么了净蚤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵钥组,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我今瀑,道長(zhǎng)程梦,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任橘荠,我火速辦了婚禮屿附,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哥童。我一直安慰自己挺份,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布贮懈。 她就那樣靜靜地躺著匀泊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪朵你。 梳的紋絲不亂的頭發(fā)上各聘,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音撬呢,去河邊找鬼伦吠。 笑死妆兑,一個(gè)胖子當(dāng)著我的面吹牛魂拦,可吹牛的內(nèi)容都是我干的毛仪。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼芯勘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼箱靴!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起荷愕,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤衡怀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后安疗,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體抛杨,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年荐类,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了怖现。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡玉罐,死狀恐怖屈嗤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吊输,我是刑警寧澤饶号,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站季蚂,受9級(jí)特大地震影響茫船,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扭屁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一透硝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疯搅,春花似錦濒生、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至礁蔗,卻和暖如春觉义,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浴井。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工晒骇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓洪囤,卻偏偏與公主長(zhǎng)得像徒坡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瘤缩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容