• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    探討 Linux 2.4 內核中的iptables 的各種新增功能和使用方法

    發布: 2007-7-04 12:06 | 作者: admin | 來源:  網友評論 | 查看: 11次 | 進入軟件測試論壇討論

    領測軟件測試網 Redhat Linux 7.1自帶的模塊化內核,專線連接互聯網,兩塊網卡的防火墻,內部網段為10.0.0.0/255.255.255.0, 防火墻外部網卡接口地址為1.2.3.4。

    Linux 2.4內核中新增功能指南 --------------------------------------------------------------------------------[日期:2005-5-3 2:16:55 來源: 編輯: 點擊:109]//雙擊滾屏 12  一 本文目的   本文主要是探討 Linux 2.4 內核中的iptables 的各種新增功能和使用方法,如何有效地使用這些新增的功能設置企業的防火墻規則,舉例說明了新增功能在企業中的應用。   二 操作環境   Redhat Linux 7.1自帶的模塊化內核,專線連接互聯網,兩塊網卡的防火墻,內部網段為10.0.0.0/255.255.255.0, 防火墻外部網卡接口地址為1.2.3.4。   三 iptables與ipchains的不同之處   1. 內置規則的重新定義,簡單化規則管理Linux 內核中內置的INPUT,OUTPUT,FORWARD規則在新的iptables中,任何一個包僅僅只在這三個規則中的任何一個上應用,或者被INPUT規則擊中,或者被FORWARD規則或者OUTPUT規則擊中,不象在ipchains中任何一個包如果是穿過這臺防火墻總要同時擊中三個規則。   為了說明這種改變,請看下面的代碼! ncoming / Outgoing   -->[Routing ]--->|FORWARD|------->   [Decision] _____/ ^   | |   v ____   ___ /   / Linux防火墻 |OUTPUT|   |INPUT| ____/   ___/ ^   | |   ----> Local Process ----   a. 首先,當一個包進來的時候,也就是從以太網卡進入防火墻,內核首先根據路由表決定包的目標。   b. 如果目標主機就是本機,則如上圖直接進入INPUT鏈,再由本地正在等待該包的進程接收,結束。   c. 否則,如果從以太網卡進來的包目標不是本機,再看是否內核允許轉發包(可用echo 1> /proc/sys/net/ipv4/ip_forward 打開轉發功能)如果不允許轉發,則包被DROP掉,如果允許轉發,則送出本機,結束。這當中決不經過INPUT或者OUTPUT鏈,因為路由后的目標不是本機,只被轉發規則應用   d. 最后,該linux防火墻主機本身能夠產生包,這種包只經過OUTPUT鏈出去。   注意: echo 1 > /proc/sys/net/ipv4/ip_forward 和 FORWARD 鏈的區別  前者的意思是是否打開內核的轉發功能,后者是轉發鏈規則只有內核打開轉發功能,一個包才可能被送到轉發鏈上去逐項檢查規則。   如果一臺防火墻沒有打開前者的IP轉發功能,則根防火墻相連的兩邊的網絡是完全隔離的,如果是一端連到internet上,則只能通過代理防問internet,不可能通過IP偽裝的方式防問! ∵@樣,任何一個包只可能應用INPUT/OUTPUT/FORWARD中的一個規則,這種巨大的改進同時也簡單化了防火墻規則管理。   2. iptables 是有狀態的(stateful)。   有狀態的意思是指如果一個包是對從防火墻原先發出去的包的回復,則自動不用檢查任何規則就立即允許回復包進入并返回給請求者,這樣我們不用設置許多規則定義就可實現應有的功能,在新的內核中使用這種有狀態的能力是強烈地被推薦的,那么如何打開并使用這種功能呢?  我們假定某公司有如下圖所示的典型的internet連接方案:   _______   10.0.0.2 | |   |PC | (10.0.0.1)eth1| |eth0(1.2.3.4)   B|___|_ ___________________|防火墻 |---------Internet   (LAN: 10.0.0.0/24) | A |   |_______|   可使用下面的規則集使用iptables的有狀態的能力并打開IP偽裝功能。   1 modprobe ip_tables   2 echo 1 > /proc/sys/net/ipv4/ip_forward   3 iptables -F INPUT   4 iptables -F FORWARD   5 iptables -F POSTROUTING -t nat   6 iptables -P FORWARD DROP   7 iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT   8 iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j   ACCEPT   9 iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE   10 iptables -A INPUT -p tcp -i eth0 --syn --dport 80 -j ACCEPT   11 iptables -A INPUT -p tcp -i eth0 --syn -j DROP   注:   1. 當使用redhat 的模塊化內核時,裝入ip_tables模塊后,以后的命令將根據需要自行裝入需要的模塊。   另外注意,如果你裝入了ipchains或者ipfwadm模塊,則不能再裝入iptables模塊,可用rmmod命令移走它 們再裝入iptables模塊。在redhat下,可用ntsysv移走ipchains和iptables標記重啟后運行上面的命令! 』蛘叻湃/etc/rc.d/rc.local中自動運行。   2. 第二行打開IP轉發功能。   3. 第三四五行清除INPUT,FORWARD和POSTROUTING鍵規則   4. 第六行設置默認轉發策略是DROP,當一個包被轉發轉則應用但不能應用到任何一條轉發規則上則應用默認 規則。   5. 第七行轉發本網段的機器到任何地方去的包。   6. 第八行利用了有狀態的能力,只要是對先前從防火墻外部接口出去的請求包的回復,允許。   ESTABLISHED是指TCP連接,RELATED是指象主動FTP,ICMP ping請求等,當回復包到達時,實際上是檢查文 件 /proc/net/ip_conntrack看是否在里面,如果在表中,則不檢查任何鏈,包允許通過。   7. 第九行打開IP偽裝能力,從eth0出去的包被重寫源地址后偽裝出去,是源地址SNAT的特例。這里要注意的是 -o eth0, 而不是 -i eth0,在iptables中,從一個接口出去的包用 -o,進來的包用 -i  8. 第十行說明如果這臺防火墻也是WEB服務器,則允許外部的新建立的請求且目標端口為80的包可以進入   9. 第十一行對不是目標端口是80的所求TCP新的連接請求包,拒絕進入。   注: NAT 與 FORWARD 鏈的關系   a. 不管執行任何NAT,對包過濾規則看到的源和目的地址是真實的源和目的地址,盡管在執行IP偽裝(DNAT)時 會對包進行地址重寫,這一點你可以從文件/proc/net/ip_conntrack中看到。   b. 如果我們沒有利用iptables的有狀態的能力,象上面的情況,要是允許網段10.0.0.0/24中的機器可以IP偽裝的話,我們不得不加上一條轉發規則 iptables -AFORWARD -d 10.0.0.0/24 -j ACCEPT,否則對偽裝包的回復不會通過轉發鏈回復給內部機器,因為回復包需要通過轉發鏈。   注: 如何證明僅僅一個規則鏈被應用了?   在以前的ipchains中一個包要經過input,forward,output鏈才能從防火墻送出到internet,現在使用iptables,僅僅一個鏈被應用,你可以加入下面的規則測試  iptables -A INPUT -s 10.0.0.2/24 -j DROP   上面的這行在iptables中僅僅是指任何本網段的機器當目標就是防火墻時被拒絕,但絕不影響NAT和轉發包,這在以前的ipchains中是不可能的。   3. 透明代理和端口轉發功能的輕松實現   a. 端口轉發   在linux 2.4內核中,NAT分為 SNAT(源NAT)和DNAT(目的NAT)。我們可以利用SNAT和DNAT輕松地實現透明代理,重定向和端口轉發功能。   假定某公司的網絡結構如下:   10.0.0.2 | |   |PC | (10.0.0.1)eth1| |eth0(1.2.3.4), eth0:0(1.2.3.5)   B|___|_ ___________________|防火墻 |---------Internet   (LAN: | 10.0.0.0/24) | A |   | |_______|   |   _____   | |   | C | Linux POP3 server   |_____| IP: 10.0.0.3 gw: 10.0.0.1   當一個包被路由,轉發后送出之前進行源地址改寫,源地址改為1.2.3.5(防火墻上的別名IP)   iptables -t nat -A POSTROUTING -s 10.0.0.3 -o eth0 -j SNAT --to 1.2.3.5   IP偽裝是SNAT的特例,當需要偽裝時,其實不需要外界主動對源地址進行請求。而上面的例子是指局域網內部有一臺Linux POP3服務器,IP為10.0.0.3, 網關為10.0.0.1,且在防火墻外部網卡上綁定一個IP別名1.2.3.5,作為該POP3服務器對外界聯系的出去的源IP地址。對外部用戶來說(公司員工在外出差),這個IP 1.2.3.5就是POP3服務器的IP地址,當向這個IP請求時我們用DNAT送到10.0.0.3上從而實現端口轉發的功能。   iptables -t nat -A PREROUTING -i eth0 -d 1.2.3.5 -j DNAT --to 10.0.0.3   則這兩行規則即可實現端口轉發的功能。   b. 透明代理(重定向)   最常見的透明代理的使用是結合開放源代理軟件Squid,實現局域網內用戶在不用設置任 何瀏覽器代理的條件下透明地使用代理上網。 如果我們的Squid的HTTP端口運行在 3333,則使用下面的規則:   iptables -t nat -A PREROUTING -i eth1 -p tcp -s 10.0.0.0/24 --dport 80 -j   DNAT --to 10.0.0.1:3333   而且還必須設置Squid 2.3 或者2.4 版本中的squid.conf如下:   http_port 3333   httpd_accel_host virtual   httpd_accel_port 80   httpd_accel_with_proxy on   httpd_accel_uses_host_header on   這樣,局域網內的用戶即使不設置任何代理,也同樣是利用了Squid的代理上網。   四、常見問題解答   a. 在運行中的防火墻規則如何保存下來,供redhat的ntsysv中的iptables服務使用?   使用 iptables-save和iptables-restore保存為文件/etc/sysconfig/iptables,再用ntsysv啟動iptables服務使用   b. 我能同時使用ipchains和iptables嗎?   不行。在使用iptalbes之前,你必須停止ipchains及任何內存中的與ipchains相關的模 塊,用/sbin/lsmod 檢查所有ipchains模塊,用/sbin/rmmod逐一刪除,最后再運行 iptables規則。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>