<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                在閱讀這篇文章之前,請確保你已經閱讀了如下文章,如下文章總結了iptables的相關概念,是閱讀這篇文章的基礎。 [圖文并茂理解iptables](http://www.zsythink.net/archives/1199) 如果你是一個新手,在閱讀如下文章時,請堅持讀到最后,讀的過程中可能會有障礙,但是在讀完以后,你會發現你已經明白了。 ![](https://img.kancloud.cn/47/8a/478a6b0a2a4d94451fa4dc1eb58bbb10_344x264.png) 在進行iptables實驗時,請務必在測試機上進行。 之前在iptables的概念中已經提到過,在實際操作iptables的過程中,是以"表"作為操作入口的,如果你經常操作關系型數據庫,那么當你聽到"表"這個詞的時候,你可能會聯想到另一個詞----"增刪改查",當我們定義iptables規則時,所做的操作其實類似于"增刪改查",那么,我們就先從最簡單的"查"操作入手,開始實際操作iptables。 在之前的文章中,我們已經總結過,iptables為我們預定義了4張表,它們分別是raw表、mangle表、nat表、filter表,不同的表擁有不同的功能。 filter負責過濾功能,比如允許哪些IP地址訪問,拒絕哪些IP地址訪問,允許訪問哪些端口,禁止訪問哪些端口,filter表會根據我們定義的規則進行過濾,filter表應該是我們最常用到的表了,所以此處,我們以filter表為例,開始學習怎樣實際操作iptables。 怎樣查看filter表中的規則呢?使用如下命令即可查看。 ![](https://img.kancloud.cn/28/28/28280428bb211edb2bf24e39bc09bde4_1000x337.png) 上例中,我們使用-t選項,指定要操作的表,使用-L選項,查看-t選項對應的表的規則,-L選項的意思是,列出規則,所以,上述命令的含義為列出filter表的所有規則,注意,上圖中顯示的規則(綠色標注的部分為規則)是Centos6啟動iptables以后默認設置的規則,我們暫且不用在意它們,上圖中,顯示出了3條鏈(藍色標注部分為鏈),INPUT鏈、FORWARD鏈、OUTPUT鏈,每條鏈中都有自己的規則,前文中,我們打過一個比方,把"鏈"比作"關卡",不同的"關卡"擁有不同的能力,所以,從上圖中可以看出,INPUT鏈、FORWARD鏈、OUTPUT鏈都擁有"過濾"的能力,所以,當我們要定義某條"過濾"的規則時,我們會在filter表中定義,但是具體在哪條"鏈"上定義規則呢?這取決于我們的工作場景。比如,我們需要禁止某個IP地址訪問我們的主機,我們則需要在INPUT鏈上定義規則。因為,我們在理論總結中已經提到過,報文發往本機時,會經過PREROUTING鏈與INPUT鏈(如果你沒有明白,請回顧前文),所以,如果我們想要禁止某些報文發往本機,我們只能在PREROUTING鏈和INPUT鏈中定義規則,但是PREROUTING鏈并不存在于filter表中,換句話說就是,PREROUTING關卡天生就沒有過濾的能力,所以,我們只能在INPUT鏈中定義,當然,如果是其他工作場景,可能需要在FORWARD鏈或者OUTPUT鏈中定義過濾規則。 話說回來,我們繼續聊怎樣查看某張表中的規則。 剛才提到,我們可以使用iptables -t filter -L命令列出filter表中的所有規則,那么舉一反三,我們也可以查看其它表中的規則,示例如下。 iptables -t raw -L iptables -t mangle -L iptables -t nat -L 其實,我們可以省略-t filter,當沒有使用-t選項指定表時,默認為操作filter表,即iptables -L表示列出filter表中的所有規則。 我們還可以只查看指定表中的指定鏈的規則,比如,我們只查看filter表中INPUT鏈的規則,示例如下(注意大小寫)。 ![](https://img.kancloud.cn/58/e7/58e7e66a0ab76fd154bbd69f3905515c_990x205.png) 上圖中只顯示了filter表中INPUT鏈中的規則(省略-t選項默認為filter表),當然,你也可以指定只查看其他鏈,其實,我們查看到的信息還不是最詳細的信息,我們可以使用-v選項,查看出更多的、更詳細的信息,示例如下。 ![](https://img.kancloud.cn/b2/51/b25199e8d676d4ad02bb9b0bd360a474_1039x161.png) 可以看到,使用-v選項后,iptables為我們展示的信息更多了,那么,這些字段都是什么意思呢?我們來總結一下,看不懂沒關系,等到實際使用的時候,自然會明白,此處大概了解一下即可。 其實,這些字段就是規則對應的屬性,說白了就是規則的各種信息,那么我們來總結一下這些字段的含義。 **pkts**:對應規則匹配到的報文的個數。 **bytes**:對應匹配到的報文包的大小總和。 **target**:規則對應的target,往往表示規則對應的"動作",即規則匹配成功后需要采取的措施。 **prot**:表示規則對應的協議,是否只針對某些協議應用此規則。 **opt**:表示規則對應的選項。 **in**:表示數據包由哪個接口(網卡)流入,我們可以設置通過哪塊網卡流入的報文需要匹配當前規則。 **out**:表示數據包由哪個接口(網卡)流出,我們可以設置通過哪塊網卡流出的報文需要匹配當前規則。 **source**:表示規則對應的源頭地址,可以是一個IP,也可以是一個網段。 **destination**:表示規則對應的目標地址。可以是一個IP,也可以是一個網段。 細心如你一定發現了,上圖中的源地址與目標地址都為anywhere,看來,iptables默認為我們進行了名稱解析,但是在規則非常多的情況下如果進行名稱解析,效率會比較低,所以,在沒有此需求的情況下,我們可以使用-n選項,表示不對IP地址進行名稱反解,直接顯示IP地址,示例如下。 ![](https://img.kancloud.cn/08/1e/081ee3bbf8aa0b844551176db2ac630d_1038x258.png) 如上圖所示,規則中的源地址與目標地址已經顯示為IP,而非轉換后的名稱。 當然,我們也可以只查看某個鏈的規則,并且不讓IP進行反解,這樣更清晰一些,比如 iptables -nvL INPUT 如果你習慣了查看有序號的列表,你在查看iptables表中的規則時肯定會很不爽,沒有關系,滿足你,使用--line-numbers即可顯示規則的編號,示例如下。 ![](https://img.kancloud.cn/11/f6/11f69c67ff5f8f6df90e8b94cc039931_541x188.png) \--line-numbers選項并沒有對應的短選項,不過我們縮寫成--line時,centos中的iptables也可以識別。 ? ? 我知道你目光如炬,你可能早就發現了,表中的每個鏈的后面都有一個括號,括號里面有一些信息,如下圖紅色標注位置,那么這些信息都代表了什么呢?我們來看看。 ![](https://img.kancloud.cn/2e/a7/2ea7ff28f60432e7519ca185822dab2c_533x186.png) 上圖中INPUT鏈后面的括號中包含policy ACCEPT ,0 packets,0bytes 三部分。 **policy**表示當前鏈的默認策略,policy ACCEPT表示上圖中INPUT的鏈的默認動作為ACCEPT,換句話說就是,默認接受通過INPUT關卡的所有請求,所以我們在配置INPUT鏈的具體規則時,應該將需要拒絕的請求配置到規則中,說白了就是"黑名單"機制,默認所有人都能通過,只有指定的人不能通過,當我們把INPUT鏈默認動作設置為接受(ACCEPT),就表示所有人都能通過這個關卡,此時就應該在具體的規則中指定需要拒絕的請求,就表示只有指定的人不能通過這個關卡,這就是黑名單機制,**但是**,你一定發現了,上圖中所顯示出的規則,大部分都是接受請求(ACCEPT),并不是想象中的拒絕請求(DROP或者REJECT),這與我們所描述的黑名單機制不符啊,按照道理來說,默認動作為接受,就應該在具體的規則中配置需要拒絕的人,但是上圖中并不是這樣的,之所以出現上圖中的情況,是因為IPTABLES的工作機制導致到,上例其實是利用了這些"機制",完成了所謂的"白名單"機制,并不是我們所描述的"黑名單"機制,我們此處暫時不用關注這一點,之后會進行詳細的舉例并解釋,此處我們只要明白policy對應的動作為鏈的默認動作即可,或者換句話說,我們只要理解,policy為鏈的默認策略即可。 **packets**表示當前鏈(上例為INPUT鏈)默認策略匹配到的包的數量,0 packets表示默認策略匹配到0個包。 **bytes**表示當前鏈默認策略匹配到的所有包的大小總和。 其實,我們可以把packets與bytes稱作"計數器",上圖中的計數器記錄了默認策略匹配到的報文數量與總大小,"計數器"只會在使用-v選項時,才會顯示出來。 當被匹配到的包達到一定數量時,計數器會自動將匹配到的包的大小轉換為可讀性較高的單位,如下圖所示。 ![](https://img.kancloud.cn/28/17/281702303339d7ebd3cceff0a2e6795b_521x40.png) 如果你想要查看精確的計數值,而不是經過可讀性優化過的計數值,那么你可以使用-x選項,表示顯示精確的計數值,示例如下。 ![](https://img.kancloud.cn/04/c5/04c578c6b4a0e8578a3f8a860f1de1b4_541x41.png) 每張表中的每條鏈都有自己的計數器,鏈中的每個規則也都有自己的計數器,沒錯,就是每條規則對應的pkts字段與bytes字段的信息。 ## 命令小節 好了,我們已經會使用命令簡單的查看iptables表的規則了,為了方便以后回顧,我們將上文中的相關命令總結一下。 Shell iptables?-t?表名?-L 1iptables&nbsp;-t&nbsp;表名&nbsp;-L 查看對應表的所有規則,-t選項指定要操作的表,省略"-t 表名"時,默認表示操作filter表,-L表示列出規則,即查看規則。 Shell iptables?-t?表名?-L?鏈名 1iptables&nbsp;-t&nbsp;表名&nbsp;-L&nbsp;鏈名 查看指定表的指定鏈中的規則。 Shell iptables?-t?表名?-v?-L 1iptables&nbsp;-t&nbsp;表名&nbsp;-v&nbsp;-L 查看指定表的所有規則,并且顯示更詳細的信息(更多字段),-v表示verbose,表示詳細的,冗長的,當使用-v選項時,會顯示出"計數器"的信息,由于上例中使用的選項都是短選項,所以一般簡寫為iptables -t 表名 -vL Shell iptables?-t?表名?-n?-L 1iptables&nbsp;-t&nbsp;表名&nbsp;-n&nbsp;-L 表示查看表的所有規則,并且在顯示規則時,不對規則中的IP或者端口進行名稱反解,-n選項表示不解析IP地址。 Shell iptables?--line-numbers?-t?表名?-L 1iptables&nbsp;--line-numbers&nbsp;-t&nbsp;表名&nbsp;-L 表示查看表的所有規則,并且顯示規則的序號,--line-numbers選項表示顯示規則的序號,注意,此選項為長選項,不能與其他短選項合并,不過此選項可以簡寫為--line,注意,簡寫后仍然是兩條橫杠,仍然是長選項。 Shell iptables?-t?表名?-v?-x?-L 1iptables&nbsp;-t&nbsp;表名&nbsp;-v&nbsp;-x&nbsp;-L 表示查看表中的所有規則,并且顯示更詳細的信息(-v選項),不過,計數器中的信息顯示為精確的計數值,而不是顯示為經過可讀優化的計數值,-x選項表示顯示計數器的精確值。 實際使用中,為了方便,往往會將短選項進行合并,所以,如果將上述選項都糅合在一起,可以寫成如下命令,此處以filter表為例。 Shell iptables?--line?-t?filter?-nvxL 1iptables&nbsp;--line&nbsp;-t&nbsp;filter&nbsp;-nvxL 當然,也可以只查看某張表中的某條鏈,此處以filter表的INPUT鏈為例 Shell iptables?--line?-t?filter?-nvxL?INPUT 1iptables&nbsp;--line&nbsp;-t&nbsp;filter&nbsp;-nvxL&nbsp;INPUT 好了,怎樣使用iptables命令進行基本的查看操作,就先總結到這里吧,下一篇文章會總結iptables規則的"增、刪、改"操作,直達鏈接如下: [iptables規則管理](http://www.zsythink.net/archives/1517) 如果你是一個新手,希望這篇文章能對你有所幫助。 快來評論、快來點贊啊~~各位親~~快來收藏~~快來推薦啊~~么么噠~~。 ![](https://img.kancloud.cn/cf/da/cfda703baeeb14b5d6dafef0b0d77ead_100x100.png) **我的微信公眾號** 關注"實用運維筆記"微信公眾號,當博客中有新文章時,可第一時間得知哦~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看