<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【轉】Linux iptables 詳解

      轉自:http://www.rzrgm.cn/qwertwwwe/p/9452370.html

      最近搭一個框架需要用到iptables做映射,學習了下iptables的原理,總結下方便以后查~。

      參考并轉載于以下鏈接:
      http://www.rzrgm.cn/metoy/p/4320813.html
      http://www.ha97.com/4093.html

      一、iptables介紹

      iptables是Linux中對網絡數據包進行處理的一個功能組件,就相當于防火墻,可以對經過的數據包進行處理,例如:數據包過濾、數據包轉發等等,一般例如Ubuntu等Linux系統是默認自帶啟動的。

      二、iptables結構

      iptables其實是一堆規則,防火墻根據iptables里的規則,對收到的網絡數據包進行處理。iptables里的數據組織結構分為:表、鏈、規則。

      表(tables)

      表提供特定的功能,iptables里面有4個表: filter表、nat表、mangle表和raw表,分別用于實現包過濾、網絡地址轉換、包重構和數據追蹤處理。
      每個表里包含多個鏈。

      鏈(chains)

      鏈(chains)是數據包傳播的路徑,每一條鏈其實就是眾多規則中的一個檢查清單,每一條鏈中可以有一 條或數條規則。當一個數據包到達一個鏈時,iptables就會從鏈中第一條規則開始檢查,看該數據包是否滿足規則所定義的條件。如果滿足,系統就會根據 該條規則所定義的方法處理該數據包;否則iptables將繼續檢查下一條規則,如果該數據包不符合鏈中任一條規則,iptables就會根據該鏈預先定 義的默認策

      略來處理數據包。

      其整體結構如下圖所示:

      表鏈結構

      1.filter表——三個鏈:INPUT、FORWARD、OUTPUT
      作用:過濾數據包 內核模塊:iptables_filter.

      2.Nat表——三個鏈:PREROUTING、POSTROUTING、OUTPUT
      作用:用于網絡地址轉換(IP、端口) 內核模塊:iptable_nat

      3.Mangle表——五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
      作用:修改數據包的服務類型、TTL、并且可以配置路由實現QOS內核模塊

      4.Raw表——兩個鏈:OUTPUT、PREROUTING
      作用:決定數據包是否被狀態跟蹤機制處理

      數據包流向

      前面介紹了iptables的組織結構,下面一張圖介紹了一個數據包如何依次穿過iptables的各個鏈和表的。

      基本步驟如下:

      1. 數據包到達網絡接口,比如 eth0。
      2. 進入 raw 表的 PREROUTING 鏈,這個鏈的作用是趕在連接跟蹤之前處理數據包。
      3. 如果進行了連接跟蹤,在此處理。
      4. 進入 mangle 表的 PREROUTING 鏈,在此可以修改數據包,比如 TOS 等。
      5. 進入 nat 表的 PREROUTING 鏈,可以在此做DNAT,但不要做過濾。
      6. 決定路由,看是交給本地主機還是轉發給其它主機。

      后面將分為2種情況:

      1. 數據包發送給本地主機,交由本地主機上層應用處理;
      2. 將數據包轉發給其他主機來處理。

      第一種情況,數據包要轉發給其它主機:

      1. 進入 mangle 表的 FORWARD 鏈,這里也比較特殊,這是在第一次路由決定之后,在進行最后的路由決定之前,我們仍然可以對數據包進行某些修改。
      2. 進入 filter 表的 FORWARD 鏈,在這里我們可以對所有轉發的數據包進行過濾。需要注意的是:經過這里的數據包是轉發的,方向是雙向的。
      3. 進入 mangle 表的 POSTROUTING 鏈,到這里已經做完了所有的路由決定,但數據包仍然在本地主機,我們還可以進行某些修改。
      4. 進入 nat 表的 POSTROUTING 鏈,在這里一般都是用來做SNAT ,不要在這里進行過濾。
      5. 進入出去的網絡接口。完畢。

      第二種情況,數據包就是發給本地主機的,那么它會依次穿過:

      1. 進入 mangle 表的 INPUT 鏈,這里是在路由之后,交由本地主機之前,我們也可以進行一些相應的修改。
      2. 進入 filter 表的 INPUT 鏈,在這里我們可以對流入的所有數據包進行過濾,無論它來自哪個網絡接口。
      3. 交給本地主機的應用程序進行處理。
      4. 處理完畢后進行路由決定,看該往那里發出。
      5. 進入 raw 表的 OUTPUT 鏈,這里是在連接跟蹤處理本地的數據包之前。
      6. 連接跟蹤對本地的數據包進行處理。
      7. 進入 mangle 表的 OUTPUT 鏈,在這里我們可以修改數據包,但不要做過濾。
      8. 進入 nat 表的 OUTPUT 鏈,可以對防火墻自己發出的數據做 NAT 。
      9. 再次進行路由決定。
      10. 進入 filter 表的 OUTPUT 鏈,可以對本地出去的數據包進行過濾。
      11. 進入 mangle 表的 POSTROUTING 鏈,同上一種情況的第9步。注意,這里不光對經過防火墻的數據包進行處理,還對防火墻自己產生的數據包進行處理。
      12. 進入 nat 表的 POSTROUTING 鏈,同上一種情況的第10步。
      13. 進入出去的網絡接口。完畢

      三、iptables操作

      參考:http://www.rzrgm.cn/metoy/p/4320813.html
      iptables的指令圖示如下:

      如果使用開機轉發,需要設置參數:
      echo 1 > /proc/sys/net/ipv4/ip_forward

      如果想開機自動設置,配置一下文件:
      /etc/sysctl.conf文件中的 net.ipv4.ip_forward = 1

      iptables的基本語法格式

      iptables [-t 表名] 命令選項 [鏈名] [條件匹配] [-j 目標動作或跳轉
      說明:表名、鏈名用于指定 iptables命令所操作的表和鏈,命令選項用于指定管理iptables規則的方式(比如:插入、增加、刪除、查看等;條件匹配用于指定對符合什么樣 條件的數據包進行處理;目標動作或跳轉用于指定數據包的處理方式(比如允許通過、拒絕、丟棄、跳轉(Jump)給其它鏈處理。

      iptables命令的管理控制選項

      -A 在指定鏈的末尾添加(append)一條新的規則
      -D 刪除(delete)指定鏈中的某一條規則,可以按規則序號和內容刪除
      -I 在指定鏈中插入(insert)一條新的規則,默認在第一行添加
      -R 修改、替換(replace)指定鏈中的某一條規則,可以按規則序號和內容替換
      -L 列出(list)指定鏈中所有的規則進行查看
      -E 重命名用戶定義的鏈,不改變鏈本身
      -F 清空(flush)
      -N 新建(new-chain)一條用戶自己定義的規則鏈
      -X 刪除指定表中用戶自定義的規則鏈(delete-chain)
      -P 設置指定鏈的默認策略(policy)
      -Z 將所有表的所有鏈的字節和數據包計數器清零
      -n 使用數字形式(numeric)顯示輸出結果
      -v 查看規則表詳細信息(verbose)的信息
      -V 查看版本(version)
      -h 獲取幫助(help)

      防火墻處理數據包的四種方式

      ACCEPT 允許數據包通過
      DROP 直接丟棄數據包,不給任何回應信息
      REJECT 拒絕數據包通過,必要時會給數據發送端一個響應的信息。
      LOG 用于針對特定的數據包打log,在/var/log/messages文件中記錄日志信息,然后將數據包傳遞給下一條規則
      TRACE這個只能針對raw中的table,是用來對數據進行追蹤的,用于debug.

      iptables防火墻規則的保存與恢復

      iptables-save把規則保存到文件中,再由目錄rc.d下的腳本(/etc/rc.d/init.d/iptables)自動裝載
      使用命令iptables-save來保存規則。一般用

      iptables-save > /etc/sysconfig/iptables

      生成保存規則的文件 /etc/sysconfig/iptables,也可以用:

      service iptables save

      iptables防火墻常用的策略

      1. 拒絕進入防火墻的所有ICMP協議數據包
      iptables -I INPUT -p icmp -j REJECT
      1. 允許防火墻轉發除ICMP協議以外的所有數據包
      iptables -A FORWARD -p ! icmp -j ACCEPT

      說明:使用“!”可以將條件取反。

      1. 允許本機開放從TCP端口20-1024提供的應用服務。
      iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT 
      iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT
      1. 從一臺主機轉發到另一臺主機

      注意轉發首先需要按照前面的開啟轉發設置

      (相同端口)
      從192.168.0.132:21521(新端口)訪問192.168.0.211:1521端口

      iptables -t nat -I PREROUTING -p tcp --dport 1521 -j DNAT --to 192.168.0.211
      iptables -t nat -I POSTROUTING -p tcp --dport 1521 -j MASQUERADE

      (不同端口)
      不同端口轉發(192.168.0.132上開通21521端口訪問

      iptables -t nat -A PREROUTING -p tcp -m tcp --dport 21521 -j DNAT --to-destination 192.168.0.211:1521
      iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -d 192.168.0.211 -p tcp -m tcp --dport 1521 -j SNAT --to-source 192.168.0.132

      以上兩條等價配置(更簡單[指定網卡]):

      iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 31521 -j DNAT --to 192.168.0.211:1521
      iptables -t nat -A POSTROUTING -j MASQUERADE

      (用iptables做本機端口轉發)

      iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

      其他一些指令可以繼續查看:
      http://www.rzrgm.cn/metoy/p/4320813.html

      我要用到的是將本地qemu仿真的一個虛擬機中的IP:PORT給映射到主機的端口上來對外服務:

      qemu仿真系統IP為192.168.0.1,仿真系統與主機的橋接的網卡上,主機的ip為192.168.0.2,主機對外ip為172.18.236.82,將虛擬機中的80端口映射到主機的8080端口:

      sudo iptables -t nat -A PREROUTING -d 172.18.236.82 -p tcp --dport 8081 -j DNAT --to-destination 192.168.0.1:80
      sudo iptables -t nat -A POSTROUTING -d 192.168.0.1 -p tcp --dport 80 -j SNAT --to 192.168.0.2

      四、python對iptables的操作包

      python中有對iptables的操作包: iptc
      參考主頁:
      https://github.com/ldx/python-iptables

      Linux上安裝:
      針對python的:
      pip install --upgrade python-iptables
      針對python3的:
      pip3 install --upgrade python-iptables

      在python文件中導入:
      import iptc

      官網里面有對該包的介紹和很多例子,但沒有一個所有指令的完整歸納,有些指令參數不知道在iptc包中用什么,后面總結了在加在這~

      五、 iptables的debug

      在對問題進行處理時,我們肯定會遇到debug的需求,針對iptables的debug主要是通過看Log.

      5.1. 打開iptables的log日志

      首先我們需要打開iptables的log記錄功能,讓系統將相應的log輸出。
      默認iptables的日志是輸出到/var/log/message文件中,當然對沒有開啟log功能的時候,不會有任何log輸出。
      為了便于debug,我們將iptables的log輸出到/var/log/iptables.log文件。
      開啟log輸出針對不同系統會不同,主要是以下2種:

      5.1.1 針對用syslog的系統

      如果系統存在以下文件: /etc/syslog.conf, 我們在/etc/syslog.conf中添加以下幾行:

      kern.warning /var/log/iptables.log
      kern.debug /var/log/iptables.log

      然后重啟syslog:
      sudo service syslog restart

      5.1.2 針對用rsyslog的系統

      如果系統存在以下文件: /etc/rsyslog.conf, 我們在/etc/syslog.conf中添加以下幾行:

      kern.warning /var/log/iptables.log
      kern.debug /var/log/iptables.log

      然后重啟syslog:
      sudo service rsyslog restart

      5.2 針對需要查看的數據,添加iptables規則使其打印log

      開啟log輸出后,我們需要添加相應的iptables規則,使其打印我們需要的log信息,主要有2種方法:

      5.2.1 TRACE方法

      在前面的數據包流向圖中,raw表中的鏈是用來對數據包進行追蹤的,我們可以在其鏈中添加TRACE操作規則,使其對相應的流量進行追蹤,例如下面的例子將追蹤進入的目標地址為192.168.0.211的數據包。

      sudo iptables -t raw -I PREROUTING -d 192.168.0.211 -j TRACE

      5.2.2 LOG方法

      如果想在指定的一個表的一個鏈中加入一條規則,當在這個鏈中遇到特定的數據包,則記錄一條log信息。例如下面的指令將使得在nat的PREROUTING鏈中遇到目標地址為100.69.73.114時,則記錄一條log。

      sudo iptables -t nat -I PREROUTING  -d 100.69.73.114 -j LOG --log-level 4

      5.3 查看log信息

      sudo tail -f /var/log/iptables.log
      posted @ 2019-10-16 16:48  菜鳥升級  閱讀(1523)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日韩人妻一区中文字幕| 日韩高清国产中文字幕| 樱花草在线社区www| 人妻日韩精品中文字幕| 四虎影视www在线播放| 午夜国产精品福利一二| 久久精品无码一区二区三区| av色蜜桃一区二区三区| 最新亚洲av日韩av二区| 新版天堂资源中文8在线| 国产精品亚洲国际在线看| 亚洲欧美人成电影在线观看 | 国产精品成人aaaaa网站| 免费人妻av无码专区| 久久精品丝袜高跟鞋| 一二三四中文字幕日韩乱码| 在线亚洲人成电影网站色www| 网友自拍视频一区二区三区| 无码内射成人免费喷射| 日本极品少妇videossexhd| 亚洲区一区二区三区精品| 久久综合香蕉国产蜜臀av| 99久久精品国产一区二区| 99精品国产综合久久久久五月天| 内射中出无码护士在线| 国产精品三级爽片免费看| 亚洲VA欧美VA国产综合| 久久亚洲精品11p| 精品国产AV无码一区二区三区| 小鲜肉自慰网站| 亚洲中文字幕精品第一页| 无套内谢少妇一二三四| 亚洲人亚洲人成电影网站色| 亚洲精品国产男人的天堂| 亚洲精品一区二区三区大桥未久| 日本一区二区三区后入式| 亚洲欧洲精品成人久久曰| 亚洲欧美色综合影院| 成人av专区精品无码国产| 国产高清在线精品一区APP| 无码精品人妻一区二区三区中|