iptables之二 什麼是」表「和什麼是」鏈「

2021-10-24 02:12:02 字數 2196 閱讀 3463

前一篇文章,介紹了iptables的基本資訊和資料報過濾原理。雖然已經比較簡單了,但還是有點雲裡霧裡的。那麼這次就從另乙個角度再說一下。

先簡單回顧一下,iptalbes主要由「三表五鏈」組成,分別為:

表:filter表,nat表,mangle表

鏈:prerouting,input,output,forward,postroutiing

很多人對這些名詞感覺不明覺厲,那這次就說說:為什麼叫「表」和「鏈」

和資料庫中的表一樣,這裡也是用來存資料的,只不過這裡只儲存一種資料:rule,即規則。

所謂規則,簡單說就是:遇到什麼情況,就做什麼事。

根據表的用途不同,儲存了不同的規則。例如:

filter table,儲存的是資料過濾規則。

nat table,儲存的是資料**規則。

mangle table,儲存的是資料」整容「規則。

所以,你把這三張表理解為乙個資料庫,甚至是乙個excel檔案都可以。他們的作用很單一:儲存規則。

乍一看這個」鏈「就讓人摸不著頭腦。這到底是個什麼意思?為什麼叫鏈?它又鏈結的是什麼?為什麼又和」表「扯在了一起?

這裡的」鏈「其實是英文chain直譯過來的。通俗點說,不應該叫鏈,而應該叫站點。為什麼沒這麼說呢?這裡要從防火牆的作用說起。

防火牆的本質,就是對出入系統的資料報的控制,更準確說,是對出入核心的資料報的控制。這裡的控制就涉及到兩個問題:1. 在**控制?2. 怎麼控制?

首先第乙個問題,在**控制?

資料報進入核心的入口又很多,我們通常想到的就是網口,如:eth0等等,防火牆對這些入口設定了統一的資料檢查站,第一時間對想要進入核心的資料報進行盤查,這裡的站點就是:prerouting chain了,即:prerouting鏈。

經過第乙個站點檢查後,如果確認是發給本機的,就交給下乙個站點進行處理,這個站點就是:input chain,即:input鏈。經過這個站點的盤查之後,如果是我需要的,就可以進入使用者空間的對應應用程式;如果不是我需要的,就丟棄或者做其他操作。

當使用者空間的應用程式處理完資料報,需要向外傳送資料報的時候,經過的第乙個檢查點就是output chain,即:output鏈了,經過這個站點的一系列檢查之後就可以上路了。

於是資料報來到了出核心的最後乙個檢查站:postroutiing chain,即:postroutiing鏈,這裡也會對資料進行一些操作,然後把資料就可以踏上征途了。

在通過第乙個站點檢查時,如果prerouting發現這個資料報只是路過的,那就會交給forward chain,即:forward鏈進行處理,在這裡處理完之後,也會交給postroutiing鏈,最後傳送出去。

以上就是防火牆iptables對資料進行控制的全部流程,流經核心的所有的資料報,都在防火牆設定的這五個檢察站點的掌控之中。

下面是第二個問題:怎麼控制?

以上的五個站點,能對資料報做哪些操作,取決於他們可以呼叫的工具,這些工具存放在不同的工具箱中。這裡的工具箱就是前面提到的」表「,工具就是」規則「。

對於五個站點來說,所不同的是,每個站點可以使用的工具箱多少不一樣,即可以調取的規則類別不一樣。如:

input站點可以呼叫mangle表,nat表和filter表中的工具;而postroutiing站點則只能呼叫mangle表和nat表中的工具。

但是……但是,以上這些站點可以呼叫的」表「都只是工具所在的工具箱而已,而對應的工具箱裡是否這個站點可用的工具就不一定了。

打個比方,我安排包括你在內的5個人去完成一項工作,交給你們3個工具箱,並且告訴你們,你們的所有工具都在這3個工具箱裡,每個人使用指定給自己的工具,工具箱裡的工具有多少用多少。

然後你們就去幹活了,到了幹活的地方,你開啟工具箱一看,3個工具箱都沒有你可用的工具。這也是有可能的。

到這裡再多說一點,雖然工具箱裡沒有給你的工具,但是你至少還可以做兩件事,即:全部拒絕或者全部放行。這也就是每個站點的預設規則了。

一般預設規則都是全部放行的。畢竟……讓我幹活,連工具都不給,我才懶得管呢。對吧?

希望以上的講解對大家理解三表五鏈有幫助。

IPtables之二 基礎規則編寫

linux的防火牆包含了2部分,分別是存在於核心空間的netfilte和使用者空間的iptables 而iptable可以定義4類規則 filter 防火牆核心所在 nat 位址轉換 mangle 實現資料報修改 如ttl raw 不常用,這裡不做多解釋 優先順序次序 raw mangle nat ...

Rails3 入門之二 什麼是rails

rails 是基於ruby語言的web 開發框架。通過每個開發者開始的時候rails做的假設,能夠使web應用程式開發更加簡單,它可以讓你寫更少的 而完成的功能超過許多其他語言和其他框架。有rails的開發經驗者說它讓web應用程式更有趣。rails是乙個比較自我的框架。它假設有乙個 最佳 的做事方...

什麼是雜湊表

1 基本原理 我們使用乙個下標範圍比較大的陣列來儲存元素。可以設計乙個函式 雜湊函式,也叫做雜湊函式 使得每個元素的關鍵字都與乙個函式值 即陣列下標 相對應,於是用這個陣列單元來儲存這個元素 也可以簡單的理解為,按照關鍵字為每乙個元素 分類 然後將這個元素儲存在相應 類 所對應的地方。但是,不能夠保...