<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ann
    冰是沒有未來的,因為它的永恒
    posts - 107,comments - 34,trackbacks - 0

    原理簡介


    安裝運行


    特殊介紹

    1.iptables的3個表:

     filter: 顧名思義,用于過濾的時候

    nat: 顧名思義,用于做NAT 的時候

    manager:見下

    2.iptables的5條鏈

     INPUT: 匹配目的IP 是本機的數據包

    OUPUT: 匹配源IP是本機的數據包

    FORWARD: 匹配穿過本機的數據包

    PREROUTING: 用于修改目的地址(DNAT)

    POSTROUTING:用于修改源地址(SNAT)

    3.manager簡介

      這個表主要用來mangle數據包。我們可以改變不同的包及包頭的內容,比如 TTL,TOS或MARK。 注意MARK并沒有真正地改動數據包,
    它只是在內核空間為包設了一個標記。防火墻內的其他的規則或程序(如tc)可以使用這種標記對包進行過濾或高級路由。這個表有五個內建的鏈:
    PREROUTING,POSTROUTING,OUTPUT,INPUT和 FORWARD。

      PREROUTING在包進入防火墻之后、路由判斷之前改變 包,POSTROUTING是在所有路由判斷之后。 OUTPUT在確定包的目的之前更改數據包。INPUT在包被路由到本地之后,但在用戶空間的程序看到它之前改變包。注意,mangle表不能做任何 NAT,它只是改變數據包的TTL,TOS或MARK,而不是其源目的地址。NAT是在nat表中操作的,以下是mangle表中僅有的幾種操作:  
    ◆ TOS  
    ◆ TTL
    ◆ MARK  
    TOS操作用來設置或改變數據包的服務類型域。這常用來設置網絡上的數據包如何被路由等策略。

       注意這個操作并不完善,有時得不所愿。它在Internet上還不能使用,而且很多路由器不會注意到這個域值。換句話說,不要設置發往Internet的包,除非你打算依靠TOS來路由,比如用iproute2。  

      TTL操作用來改變數據包的生存時間域,我們可以讓所有數據包只有一個特殊的TTL。它的存在有一個很好的理由,那就是我們可以欺騙一些ISP。為什么要欺騙他們呢?因為他們不愿意讓我們共享 一個連接。  
    那些ISP會查找一臺單獨的計算機是否使用不同的TTL,并且以此作為判斷連接是否被共享的標志。 
    MARK用來給包設置特殊的標記。iproute2能識別這些標記,并根據不同的標記(或沒有標記) 決定不同的路由。用這些標記我們可以做帶寬限制和基于請求的分類。


     語法概述


    -t

    -t 要操作的表
    如果不加-t則用默認表filter
    例如:
    iptables -t nat
    對nat表進行操作


    -A

    -A <鏈名> APPEND,追加一條規則(放到最后)
    例如:
    iptables -t filter -A INPUT -j DROP
    在filter 表的INPUT 鏈里追加一條規則(作為最后一條規則)
    匹配所有訪問本機IP 的數據包,匹配到的丟棄


     -I

    -I <鏈名> [規則號碼] INSERT,插入一條規則
    例如:
    iptables -I INPUT -j DROP
    在filter 表的INPUT 鏈里插入一條規則(插入成第1 條)
    iptables -I INPUT 3 -j DROP
    在filter 表的INPUT 鏈里插入一條規則(插入成第3 條)
    注意:
    1、-t filter 可不寫,不寫則自動默認是filter 表
    2、-I 鏈名[規則號碼],如果不寫規則號碼,則默認是1
    3、確保規則號碼≤ (已有規則數+ 1),否則報錯


     -D

    -D <鏈名> <規則號碼| 具體規則內容> DELETE,刪除一條規則
    例如:
    iptables -D INPUT 3(按號碼匹配)
    刪除filter 表INPUT 鏈中的第三條規則(不管它的內容是什么)
    iptables -D INPUT -s 192.168.0.1 -j DROP(按內容匹配)
    刪除filter 表INPUT 鏈中內容為“-s 192.168.0.1 -j DROP”的規則(不管其位置在哪里)
    注意:
    1、若規則列表中有多條相同的規則時,按內容匹配只刪除序號最小的一條
    2、按號碼匹配刪除時,確保規則號碼≤ 已有規則數,否則報錯
    3、按內容匹配刪除時,確保規則存在,否則報錯


     -R

    -R <鏈名> <規則號碼> <具體規則內容> REPLACE,替換一條規則
    例如:
    iptables -R INPUT 3 -j ACCEPT
    將原來編號為3 的規則內容替換為“-j ACCEPT”
    注意:
    確保規則號碼≤ 已有規則數,否則報錯


    -P

    -P <鏈名> <動作> POLICY,設置某個鏈的默認規則
    例如:
    iptables -P INPUT DROP
    設置filter 表INPUT 鏈的默認規則是DROP
    注意:
    當數據包沒有被規則列表里的任何規則匹配到時,按此默認規則處理。動作前面不能加–j,這也是唯一一種匹配動作前面不加–j 的情況。


     -F

    -F [鏈名] FLUSH,清空規則
    例如:
    iptables -F INPUT
    清空filter 表INPUT 鏈中的所有規則
    iptables -t nat -F PREROUTING
    清空nat 表PREROUTING 鏈中的所有規則
    注意:
    1、-F 僅僅是清空鏈中規則,并不影響-P 設置的默認規則
    2、-P 設置了DROP 后,使用-F 一定要小心!!!
    3、如果不寫鏈名,默認清空某表里所有鏈里的所有規則

    -[vxn]L

    -L [鏈名] LIST,列出規則
    v:顯示詳細信息,包括每條規則的匹配包數量和匹配字節數
    x:在v 的基礎上,禁止自動單位換算(K、M)
    n:只顯示IP 地址和端口號碼,不顯示域名和服務名稱
    例如:
    iptables -L
    粗略列出filter 表所有鏈及所有規則
    iptables -t nat -vnL
    用詳細方式列出nat 表所有鏈的所有規則,只顯示IP 地址和端口號
    iptables -t nat -vxnL PREROUTING
    用詳細方式列出nat 表PREROUTING 鏈的所有規則以及詳細數字,不反解


     匹配條件

    -i

    -i <匹配數據進入的網絡接口>
    例如:
    -i eth0
    匹配是否從網絡接口eth0 進來
    -i ppp0
    匹配是否從網絡接口ppp0 進來


     -o

    -o 匹配數據流出的網絡接口
    例如:
    -o eth0
    -o ppp0


    -s

    -s <匹配來源地址>
    可以是IP、NET、DOMAIN,也可空(任何地址)
    例如:
    -s 192.168.0.1 匹配來自192.168.0.1 的數據包
    -s 192.168.1.0/24 匹配來自192.168.1.0/24 網絡的數據包
    -s 192.168.0.0/16 匹配來自192.168.0.0/16 網絡的數據包


    -d

    -d <匹配目的地址>
    可以是IP、NET、DOMAIN,也可以空
    例如:
    -d 202.106.0.20 匹配去往202.106.0.20 的數據包
    -d 202.106.0.0/16 匹配去往202.106.0.0/16 網絡的數據包
    -d www.abc.com 匹配去往域名www.abc.com 的數據包


    -p

    -p <匹配協議類型>
    可以是TCP、UDP、ICMP 等,也可為空
    例如:
    -p tcp
    -p udp
    -p icmp --icmp-type 類型
    ping: type 8 pong: type 0


     --sport

    --sport <匹配源端口>
    可以是個別端口,可以是端口范圍
    例如:
    --sport 1000 匹配源端口是1000 的數據包
    --sport 1000:3000 匹配源端口是1000-3000 的數據包(含1000、3000)
    --sport :3000 匹配源端口是3000 以下的數據包(含3000)
    --sport 1000: 匹配源端口是1000 以上的數據包(含1000)
    注意:--dport 必須配合-p 參數使用


    --dport

    --dport <匹配目的端口>
    可以是個別端口,可以是端口范圍
    例如:
    --dport 80 匹配目的端口是80 的數據包
    --dport 6000:8000 匹配目的端口是6000-8000 的數據包(含6000、8000)
    --dport :3000 匹配目的端口是3000 以下的數據包(含3000)
    --dport 1000: 匹配目的端口是1000 以上的數據包(含1000)
    注意:--dport 必須配合-p 參數使用


    動作(處理方式)


    ACCEPT

    -j ACCEPT
    通過,允許數據包通過本鏈而不攔截它,類似Cisco 中ACL 里面的permit
    例如:
    iptables -A INPUT -j ACCEPT
    允許所有訪問本機IP 的數據包通過


    DORP

    -j DROP
    丟棄,阻止數據包通過本鏈而丟棄它,類似Cisco 中ACL 里的deny
    例如:
    iptables -A FORWARD -s 192.168.80.39 -j DROP
    阻止來源地址為192.168.80.39 的數據包通過本機


     DNAT

    -j DNAT --to IP[-IP][:端口-端口](nat 表的PREROUTING 鏈)目的地址轉換,DNAT 支持轉換為單IP,也支持轉換到IP 地址池(一組連續的IP 地址)
    例如:
    iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1
    把從ppp0 進來的要訪問TCP/80 的數據包目的地址改為192.168.0.1
    iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81 -j DNAT --to 192.168.0.2:80
    iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1-192.168.0.10


     SNAT

    -j SNAT --to IP[-IP][:端口-端口](nat 表的POSTROUTING 鏈)源地址轉換,SNAT 支持轉換為單IP,也支持轉換到IP 地址池(一組連續的IP 地址)
    例如:
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
    將內網192.168.0.0/24 的原地址修改為1.1.1.1,用于NAT
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10
    同上,只不過修改成一個地址池里的IP


    MASQUERADE

    -j MASQUERADE 動態源地址轉換(動態IP 的情況下使用)
    例如:
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
    將源地址是192.168.0.0/24 的數據包進行地址偽裝


     附加模塊


     state

    -m state --state 狀態
    狀態:NEW、RELATED、ESTABLISHED、INVALID
    NEW:有別于tcp 的syn
    ESTABLISHED:連接態
    RELATED:衍生態,與conntrack 關聯(FTP)
    INVALID:不能被識別屬于哪個連接或沒有任何狀態
    例如: iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


    mac

    -m mac --mac-source MAC 匹配某個MAC 地址
    例如:
    iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
    阻斷來自某MAC 地址的數據包,通過本機
    注意:
    報文經過路由后,數據包中原有的mac 信息會被替換,所以在路由后的iptables 中使用mac 模塊是沒有意義的


    limit

    -m limit --limit 匹配速率[--burst 緩沖數量]用一定速率去匹配數據包
    例如:
    iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT
    iptables -A FORWARD -d 192.168.0.1 -j DROP
    注意:
    limit 英語上看是限制的意思,但實際上只是按一定速率去匹配而已,要想限制的話后面要再跟一條DROP


    multiport

    -m multiport <--sports|--dports|--ports> 端口1[,端口2,..,端口n]一次性匹配多個端口,可以區分源端口,目的端口或不指定端口
    例如:
    iptables -A INPUT -p tcp -m multiport --dports 21,22,25,80,110 -j ACCEPT
    注意:
    必須與-p 參數一起使用

    posted on 2009-12-04 13:42 冰是沒有未來的,因為它的永恒 閱讀(255) 評論(0)  編輯  收藏 所屬分類: linux

    當下,把心放下 放下如果是可能的,那一定是在當下,
    不在過去,也不在未來。
    當下放下。唯有活在當下,你的問題才能放下。

    主站蜘蛛池模板: 久久久久久噜噜精品免费直播| 成人免费视频77777| 毛片免费观看的视频在线| 亚洲成人一级电影| 在线观看人成视频免费| 曰韩无码AV片免费播放不卡| 日韩在线看片免费人成视频播放| 午夜亚洲WWW湿好爽| 亚洲无线码一区二区三区| 小草在线看片免费人成视久网| 亚洲国产精品专区| 亚洲精品美女久久久久99| 成人免费无码大片A毛片抽搐色欲| 亚洲日韩av无码| 亚洲欧美日韩中文无线码 | 国产成人无码免费视频97| 99久久成人国产精品免费| 亚洲人成图片网站| 亚洲日本中文字幕区| 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 男人进去女人爽免费视频国产| 亚洲国产成人精品无码区二本 | 亚洲中久无码永久在线观看同| 色窝窝免费一区二区三区| 日韩毛片免费一二三| 亚洲国产欧美国产综合一区| a毛片免费全部播放完整成| 久久久高清免费视频| 成人黄色免费网站| 成年女人毛片免费观看97| 亚洲国产综合专区电影在线| 国产亚洲漂亮白嫩美女在线 | 亚洲成在人线在线播放无码| 中文字幕天天躁日日躁狠狠躁免费| 污网站在线免费观看| 免费无码AV片在线观看软件| 永久亚洲成a人片777777| 特黄aa级毛片免费视频播放| 一级做a爰片久久免费| 免费无遮挡无码永久视频| 成人免费大片免费观看网站|