<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                網絡管理和控制一直是一項比較復雜和專業的工作,由于Linux系統中原本就有一些強大的網絡管理工具,故Netd也毫不猶豫充分利用了它們。目前Netd中最依賴三個網絡管控工具,即iptables、tc和ip。 **1. iptables命令[7][8][9]** iptables是Linux系統中最重要的網絡管控工具。它與Kernel中的netfilter模塊配合工作,其主要功能是為netfilter設置一些過濾(filter)或網絡地址轉換(NAT)的規則。當Kernel收到網絡數據包后,將會依據iptables設置的規則進行相應的操作。舉個最簡單的例子,可以利用iptables設置這樣一條防火墻規則:丟棄來自IP地址為192.168.1.108的所有數據包。 (1)iptables原理 iptables的語法比較復雜,但工作原理較易理解。清楚iptables的前提是理解它的表(Table)、鏈(Chain)和規則(Rule)。三者關系如圖2-10所示。 :-: ![iptables三要素的關系 ](https://box.kancloud.cn/bf291656ba4c38168ad3aee1a458ad67_1150x531.jpg =1150x531) 圖2-10 iptables三要素關系 由圖2-10可知: - iptables內部(其實是Kernel的netfilter模塊)維護著四個Table,分別是filter、nat、mangle和raw,它們對應著不同的功能,稍后將詳細介紹它們的作用。 - Table中定義了Chain。一個Table可以支持多個Chain,Chain實際上是Rule的集合,每個Table都有默認的Chain。例如filter表默認的Chain有INPUT、OUTPUT、FORWARD。用戶可以自定義Chain,也可修改Chain中的Rule。稍后將介紹不同Table中默認Chain方面的知識。 - Rule就是iptables工作的規則。首先,系統將檢查要處理的數據包是否滿足Rule設置的條件,如果滿足則執行Rule中設置的目標(Target),否則繼續執行Chain中的下一條Rule。 由前述內容可知,iptables中的Table和Chain是理解iptables工作的關鍵。表2-1總結了iptables中默認Table及Chain的相關內容。 :-: ![表2-1 iptables默認Table及Chain](https://box.kancloud.cn/6ebbd7e242b042cef1ee870b8f9cbf2b_1268x650.jpg =1268x650) 表2-1 iptables默認Table及Chain 由表2-1可知,有些Table的默認Chain具有相同的名字,導致我們理解起來有些困難。為此,讀者必須結合圖2-11所示的iptables數據包處理流程圖來理解前述內容。由圖可知,不同Table和Chain在此處理流程中起著不同的作用。 :-: ![](https://box.kancloud.cn/500fb159cbfe75231639ae30c7af21ce_412x691.jpg =412x691) 圖2-11 iptables數據包處理流程 (2)iptables Target和常用參數 iptables中的Rule有四個默認定義的Target,如下。 - ACCEPT:接收數據包。 - DROP:直接丟棄數據包。沒有任何信息會反饋給數據源端。 - RETURN:返回到調用Chain,略過后續的Rule處理。 - QUEUE:數據返回到用戶空間去處理。 >[info] **提示** iptables的擴展Target還支持REJECT。相比DROP而言,REJECT會發送反饋信息給數據源端,如主機不可達之類(icmp-host-unreachable)的信息。目前只有INPUT、OUTPUT、FORWARD以及被這三個鏈調用的自定義鏈支持REJECT。 iptables有很多參數,此處先介紹一些常用參數。 ~~~ -t:指定table。如果不帶此參數,則默認為filter表。 -A,--append chain rule-specification:在指定Chain的末尾添加一條Rule,rule-specification指明該Rule的內容。 -D,--delete chain rule-specification:刪除指定Chain中滿足rule-specification的那條Rule。 -I,--insert chain[rule num]rule-specification:為指定Chain插入一條Rule,位置由rule num指定。如果沒有該參數,則默認加到Chain-N:創建一條新Chain。 -L,--list:顯示指定Table的Chain和Rule的信息。 ~~~ Rule-specification描述該Rule的匹配條件以及目標動作,它也有一些參數來指明這些信息。 ~~~ -i:指定接收數據包的網卡名,如eth0、eth1等。 -o:指定發出數據包的網卡名。 -p:指定協議,如tcp、udp等。 -s,--source address[/mask]:指定數據包的源IP地址。 -j,--jump target:跳轉到指定目標,如ACCEPT、DROP等。 ~~~ 以前文提到的設置防火墻為例,其對應的iptables設置參數如下。 ~~~ iptables-t filter-A INPUT-s 192.168.1.108-j DROP ~~~ 如果僅攔截協議為tcp的數據包,則相應參數如下。 ~~~ iptables-t filter-A INPUT-p tcp-s 192.168.1.108-j DROP ~~~ 另外,iptables僅支持IPv4,如果需針對IPv6進行相應設置,則要使用ip6tables工具。 >[info] **提示** iptables的用法非常靈活,如果沒有長期的使用經驗,將很難理解它們的真正作用。 2. tc命令[10][11][12][13] TC是Traffic Control的縮寫。在Linux系統中,流量控制是通過建立數據包隊列(Queue),并控制各個隊列中數據包的發送方式來實現的。Linux流量控制的基本原理如圖2-12所示,該圖描述了Linux系統中網絡數據的處理流程。 :-: ![](https://box.kancloud.cn/916df625ad6f6559fda7713685d230d5_1082x368.jpg =1082x368) 圖2-12 網絡數據處理流程 由圖2-12可知: - 接收包從輸入接口(Input Interface)進來后,將經過輸入流量限制(Ingress Policing)以丟棄不符合規定的數據包。而符合規定的數據包則交給輸入多路選擇器(Input De-Multiplexing)進行判斷選擇。 - 輸入多路選擇器的選擇結果是,如果數據包的目的是本機,將該包送給上層處理,否則需要將數據包交到轉發塊(Forwarding Block)去處理。轉發塊同時也接收來自本機上層(TCP、UDP等)產生的包。 - 轉發塊通過查看路由表,決定處理包的下一跳目的地。然后,轉發塊對數據包進行排列整合以便將它們送到對應的輸出接口(Output Interface)。 一般而言,我們只能限制本機網卡往外發送的數據包,而不能限制網卡接收的數據包。Linux中的流量控制就是在數據包通過輸出接口時,通過改變發送次序等方式來實現控制傳輸速率的。 * * * * * **提示** 也可通過IFB設備在輸入接口進行流量控制。相關內容見2.3.3節。 * * * * * 在具體實現中,系統會建立許多隊列及對應的隊列規則(queuing discipline,簡稱qdisc)。目前系統包括的qdisc分為兩類。 - **無分類的隊列規則(Classless qdisc)**:該規則對進入網卡的數據包不加區分,統一對待。使用這種規定的處理能夠對數據包重新編排、延遲或丟棄。簡而言之,這種類型是針對整個網卡的流量進行調整。常用的qdisc如下。 - fifo(First In First Out,先進先出隊列):最簡單的控制。 - SFQ(Stochastic Fairness Queuing,隨機公平隊列):對發送會話進行重排,這樣每個發送會話都可以公平地發送數據)。 - RED(Random Early Detection,前向隨機丟包):用于模擬流量接近帶寬限制時丟包的情況。 - TBF(Token Bucket Filter,令牌桶過濾器):可較好地使得流量減低到預設值。適合高帶寬的環境。這類qdisc使用的流量控制手段主要是排序、限速和丟包。 - 分類的隊列規定(Classfull qdisc):它對進入網絡設備的數據包根據不同的需求以分類的方式區分對待。數據包進入一個分類的隊列后,它就需要被送到某一個類中進行分類處理。對數據包進行分類的工具是過濾器(filter)。過濾器會返回一個決定,qdisc根據該決定把數據包送入相應的類進行排隊。一個類可以包含多個子類,每個子類可再次使用它們的過濾器進行進一步的分類。當所有分類都處理完后,數據包才進入該類對應的隊列排隊。 簡單言之,如果要利用tc進行流量控制,其主要工作將包含建立隊列、建立分類和建立過濾器三個方面,一般的步驟如下。 - 1)針對網絡物理設備(如以太網卡eth0)綁定一個隊列QDisc; - 2)在該隊列上建立分類class; - 3)為每一分類建立一個基于路由的過濾器filter; - 4)最后與過濾器相配合,建立特定的路由表。 * * * * * **提示** tc命令所涉及的流量控制方面的知識相當復雜,感興趣的讀者可根據章末列出的參考資料做進一步的深入研究。 * * * * * 3. p命令[14] ip命令是Linux系統中另一個強大的網絡管理工具,主要功能如下。 - 可替代ifconfig命令。即通過ip工具可管理系統中的網絡接口,包括配置并查看網絡接口情況、使能或禁止指定網絡接口。 - 可替代route命令。即ip工具支持設置主機路由、網絡路由、網關參數等。 - 可替代arp命令。即ip工具支持查看、修改和管理系統的ARP緩存等。 ip命令的語法為: ~~~ ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]] ~~~ 例如為網絡設備進行配置的ip命令語法如下: ~~~ ip addr[add|del]IFADDR dev STRING //接口eth0賦予地址192.168.0.1,掩碼是255.255.255.0(24代表掩碼中1的個數) //廣播地址是192.168.0.255 ip addr add 192.168.0.1/24 broadcast 192.168.0.255 label eth0 dev eth0 ~~~ * * * * * **提示** 本節對Linux系統中常用的三個網絡管理工具iptables、tc和ip命令進行了一些簡單介紹。其中,iptables用于管理數據包過濾、NAT等方面的工作。tc用于流量控制,其背后涉及的知識較為復雜。ip命令可替代ifconfig、route和arp等命令。ip命令的路由控制示例將在2.3.3節介紹。 * * * * *
                  <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>

                              哎呀哎呀视频在线观看