Linux防火墻的iptables五鏈

Linux防火墻很多年的產(chǎn)品迭代過(guò)程是ipfw->ipchains->iptables>nftables(4.0)狭吼。而我們現(xiàn)在用的是iptables這代產(chǎn)品。

iptables說(shuō)明

是一種功能強(qiáng)大的信息包過(guò)濾工具邑滨,可用于添加、編輯和除去規(guī)則叶眉,這些規(guī)則是在做信息包過(guò)濾決定時(shí)慷妙,防火墻所遵循和組成的規(guī)則僻焚。這些規(guī)則存儲(chǔ)在專用的信息包過(guò)濾表中,而這些表集成在 Linux 內(nèi)核中膝擂。在信息包過(guò)濾表中虑啤,規(guī)則被分組放在鏈(chain)中。

Linux在內(nèi)核中設(shè)置了五個(gè)位置能實(shí)現(xiàn)包處理猿挚,任何報(bào)文到達(dá)這五個(gè)位置都要檢查和我們?cè)O(shè)置的規(guī)則是否相符咐旧,是否滿足驶鹉,滿足以后怎么處理绩蜻,如沒(méi)有符合的條件就按照默認(rèn)處理機(jī)制去處理。因用戶是不能操作內(nèi)核的室埋,內(nèi)核中的所有接口都是通過(guò)系統(tǒng)調(diào)用向外提供的办绝,所以Linux開(kāi)發(fā)了一個(gè)在用戶空間專門讓用戶通過(guò)系統(tǒng)調(diào)用操作內(nèi)核的工具伊约,可以用這個(gè)工具寫內(nèi)容送到內(nèi)核這五個(gè)位置上,幫我們來(lái)生成規(guī)則孕蝉,這個(gè)工具在用戶空間上叫做iptables,在內(nèi)核空間上叫做netfilter屡律。

iptables五鏈

Linux內(nèi)核中五個(gè)能過(guò)濾報(bào)文的位置稱為五個(gè)鉤子,分別是 prerouting降淮、input超埋、output、forward佳鳖、postrouting霍殴,此后在鉤子上定義規(guī)則。當(dāng)iptables引用這些鉤子時(shí)不能使用鉤子名稱系吩,要使用與鉤子名同名的全大寫字母——鏈来庭。

這五個(gè)鏈分別是

  • PREROUTING:報(bào)文進(jìn)入路由表之前
  • INPUT:通過(guò)路由表后目標(biāo)IP為本機(jī)
  • FORWARD:通過(guò)路由表后目標(biāo)IP不為本機(jī)
  • OUTPUT:由本機(jī)產(chǎn)生,向外轉(zhuǎn)發(fā)
  • POSTROUTING:發(fā)送到網(wǎng)卡接口之前
圖片.png

流入的報(bào)文數(shù)據(jù)先在PREROUTING上做一些處理穿挨,然后在路由決策上判斷報(bào)文中目標(biāo)IP是本機(jī)還是其他主機(jī)月弛,如果是本機(jī)發(fā)送到INPUT處理,是其他主機(jī)發(fā)送到FORWARD進(jìn)行轉(zhuǎn)發(fā)科盛,到這一步的全部流程我們稱之為前半場(chǎng)或上半場(chǎng)帽衙。之后本機(jī)處理好報(bào)文數(shù)據(jù)向外發(fā)送時(shí),或者本機(jī)進(jìn)程主動(dòng)訪問(wèn)外部主機(jī)發(fā)送報(bào)文時(shí)都要發(fā)給OUTPUT來(lái)處理土涝,無(wú)論是通過(guò)FORWARD進(jìn)行報(bào)文轉(zhuǎn)發(fā)或是來(lái)自O(shè)UTPUT過(guò)濾后的本機(jī)報(bào)文都要在次通過(guò)路由決策來(lái)判斷經(jīng)由主機(jī)的哪塊網(wǎng)卡發(fā)送報(bào)文佛寿,每一塊網(wǎng)卡都有下一條,都有下一臺(tái)主機(jī)但壮,路由來(lái)決策一條最佳的路線冀泻。路由過(guò)后,數(shù)據(jù)報(bào)文還在本地之前蜡饵,可通過(guò)POSTROUTING對(duì)數(shù)據(jù)最后做一次處理弹渔。從上半場(chǎng)之后的全部步驟稱為后半場(chǎng)或下半場(chǎng)。

按照?qǐng)?bào)文流向區(qū)分:

  • 流入本機(jī):PREROUTING --> INPUT
  • 由本機(jī)流出:OUTPUT --> POSTROUTING
  • 轉(zhuǎn)發(fā):PREROUTING --> FORWARD --> POSTROUTING

iptables四表

上面的五鏈?zhǔn)前凑説ook鉤子來(lái)區(qū)分的溯祸,而四表是按照對(duì)數(shù)據(jù)包的操作來(lái)區(qū)分肢专。4個(gè)表:filter,nat,mangle,raw,默認(rèn)表是filter(沒(méi)有指定表的時(shí)候就是filter表)焦辅。表的處理優(yōu)先級(jí):raw>mangle>nat>filter博杖。

  • filter:過(guò)濾,防火墻
    PREROUTING筷登, OUTPUT
  • nat:修改源IP端口或目標(biāo)IP或端口
    PREROUTING剃根,[INPUT,]OUTPUT前方,POSTROUTING
  • mangle:拆解修改報(bào)文再封裝
    PREROUTING狈醉,INPUT廉油,F(xiàn)ORWARD,OUTPUT苗傅,POSTROUTING
    raw:關(guān)閉nat表上的連接追蹤機(jī)制
    PREROUTING抒线, OUTPUT

iptables數(shù)據(jù)包流程

圖片.png

基本步驟如下:

  1. 數(shù)據(jù)包到達(dá)網(wǎng)絡(luò)接口,比如 eth0渣慕。
  2. 進(jìn)入 raw 表的 PREROUTING 鏈嘶炭,作用是在連接跟蹤之前事先處理數(shù)據(jù)包。
  3. 如果進(jìn)行了連接跟蹤逊桦,在此處理旱物。
  4. 進(jìn)入 mangle 表的 PREROUTING 鏈,在此可以修改數(shù)據(jù)包卫袒,比如 TOS 等宵呛。
  5. 進(jìn)入 nat 表的 PREROUTING 鏈,可以在此做DNAT夕凝,但不要做過(guò)濾宝穗。
  6. 決定路由,看是交給本地主機(jī)還是轉(zhuǎn)發(fā)給其它主機(jī)码秉。

這里分兩種不同的情況逮矛,一種是數(shù)據(jù)包轉(zhuǎn)發(fā)給其它主機(jī),這時(shí)候它會(huì)依次經(jīng)過(guò):

  1. 進(jìn)入 mangle 表的 FORWARD 鏈转砖,這里也比較特殊须鼎,這是在第一次路由決定之后,在進(jìn)行最后的路由決定之前府蔗,我們?nèi)匀豢梢詫?duì)數(shù)據(jù)包進(jìn)行某些修改晋控。
  2. 進(jìn)入 filter 表的 FORWARD 鏈,在這里我們可以對(duì)所有轉(zhuǎn)發(fā)的數(shù)據(jù)包進(jìn)行過(guò)濾姓赤。需要注意的是:經(jīng)過(guò)這里的數(shù)據(jù)包是轉(zhuǎn)發(fā)的赡译,方向是雙向的。
  3. 進(jìn)行路由決定不铆。
  4. 進(jìn)入 mangle 表的 POSTROUTING 鏈蝌焚,到這里已經(jīng)做完了所有的路由決定,但數(shù)據(jù)包仍然在本地主機(jī)誓斥,我們還可以進(jìn)行某些修改只洒。
  5. 進(jìn)入 nat 表的 POSTROUTING 鏈,在這里一般都是用來(lái)做 SNAT 劳坑,不要在這里進(jìn)行過(guò)濾毕谴。
  6. 進(jìn)入出去的網(wǎng)絡(luò)接口。完畢。

另一種情況是析珊,數(shù)據(jù)包就是發(fā)給本地主機(jī)的,那么它會(huì)依次穿過(guò):

  1. 進(jìn)入 mangle 表的 INPUT 鏈蔑穴,這里是在路由之后忠寻,交由本地主機(jī)之前,我們也可以進(jìn)行一些相應(yīng)的修改存和。
  2. 進(jìn)入 filter 表的 INPUT 鏈奕剃,在這里我們可以對(duì)流入的所有數(shù)據(jù)包進(jìn)行過(guò)濾,無(wú)論它來(lái)自哪個(gè)網(wǎng)絡(luò)接口捐腿。
  3. 交給本地主機(jī)的應(yīng)用程序進(jìn)行處理纵朋。
  4. 處理完畢后進(jìn)行路由決定,看該往那里發(fā)出茄袖。
  5. 進(jìn)入 raw 表的 OUTPUT 鏈操软,這里是在連接跟蹤處理本地的數(shù)據(jù)包之前。
  6. 連接跟蹤對(duì)本地的數(shù)據(jù)包進(jìn)行處理宪祥。
  7. 進(jìn)入 mangle 表的 OUTPUT 鏈聂薪,在這里我們可以修改數(shù)據(jù)包,但不要做過(guò)濾蝗羊。
  8. 進(jìn)入 nat 表的 OUTPUT 鏈藏澳,可以對(duì)防火墻自己發(fā)出的數(shù)據(jù)做 NAT 。
  9. 進(jìn)入 filter 表的 OUTPUT 鏈耀找,可以對(duì)本地出去的數(shù)據(jù)包進(jìn)行過(guò)濾翔悠。
  10. 再次進(jìn)行路由決定。
  11. 進(jìn)入 mangle 表的 POSTROUTING 鏈野芒,同上一種情況的第9步蓄愁。注意,這里不光對(duì)經(jīng)過(guò)防火墻的數(shù)據(jù)包進(jìn)行處理狞悲,還對(duì)防火墻自己產(chǎn)生的數(shù)據(jù)包進(jìn)行處理涝登。
  12. 進(jìn)入 nat 表的 POSTROUTING 鏈,同上一種情況的第10步效诅。
  13. 進(jìn)入出去的網(wǎng)絡(luò)接口胀滚。完畢。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乱投,一起剝皮案震驚了整個(gè)濱河市咽笼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌戚炫,老刑警劉巖剑刑,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡施掏,警方通過(guò)查閱死者的電腦和手機(jī)钮惠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)七芭,“玉大人素挽,你說(shuō)我怎么就攤上這事±瓴担” “怎么了预明?”我有些...
    開(kāi)封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)耙箍。 經(jīng)常有香客問(wèn)我撰糠,道長(zhǎng),這世上最難降的妖魔是什么辩昆? 我笑而不...
    開(kāi)封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任阅酪,我火速辦了婚禮,結(jié)果婚禮上汁针,老公的妹妹穿的比我還像新娘遮斥。我一直安慰自己,他們只是感情好扇丛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布术吗。 她就那樣靜靜地躺著,像睡著了一般帆精。 火紅的嫁衣襯著肌膚如雪较屿。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天卓练,我揣著相機(jī)與錄音隘蝎,去河邊找鬼。 笑死襟企,一個(gè)胖子當(dāng)著我的面吹牛嘱么,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播顽悼,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼曼振,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蔚龙?” 一聲冷哼從身側(cè)響起冰评,我...
    開(kāi)封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎木羹,沒(méi)想到半個(gè)月后甲雅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體解孙,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年抛人,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弛姜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妖枚,死狀恐怖廷臼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盅惜,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布忌穿,位于F島的核電站抒寂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏掠剑。R本人自食惡果不足惜屈芜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望朴译。 院中可真熱鬧井佑,春花似錦、人聲如沸眠寿。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)盯拱。三九已至盒发,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間狡逢,已是汗流浹背宁舰。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奢浑,地道東北人蛮艰。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像雀彼,于是被迫代替她去往敵國(guó)和親壤蚜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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

  • 今天上午去看的兩個(gè)展廳徊哑,風(fēng)格較為不同仍律。第一個(gè)南山安全教育體驗(yàn)館,面向個(gè)體(中小學(xué)生实柠、中青年群體)水泉,較為注重現(xiàn)場(chǎng)的交...
    莎莎了啦閱讀 292評(píng)論 0 0
  • 窗外 涂了橘色的云 云下的城市 我們?nèi)缤N蟻 而我卻拼命地想你 那些摩托車的聲音 人們吵嚷的聲音 炒菜的香味 和著...
    漠北青云閱讀 254評(píng)論 0 1
  • 在家陪父母。閑敲棋子落燈花。
    神奇魔刀小姐姐閱讀 129評(píng)論 0 0
  • 這幾天忙著收拾東西草则,即使在家钢拧,專心跟小妞兒待在一起的時(shí)間也很少,常常是她追著我炕横,拼命喊:要媽媽源内,要媽媽! 我下意識(shí)...
    山間竹音閱讀 236評(píng)論 0 0