基於Linux的路由器和防火牆配置

來源:互聯網
上載者:User

基於Linux的路由器和防火牆配置

作者:何立強

  隨著Internet應用的日益普及,免費網路作業系統Linux受到越來越多的網路愛好者的關注。通過簡單的安裝,人們就可以獲得Linux提供的多項網路服務,諸如網域名稱服務 (DNS)、電子郵件、匿名FTP服務等。同時,它還提供了圖形工作站所具有的Xwindows系統。可以說,Linux已經具備了網路伺服器的所有功能。在此,筆者想結合自己的工作經驗,談談Linux在另一方面的用途,即將Linux作為路由器串連兩個不同的網段,並在其上配置防火牆,以實現網路的存取存取控制和流量統計的功能。

  要想使一台裝有Linux的PC具有路由器的功能,首先要進行硬體設定。名為Router的PC上裝有Linux系統,並配有兩塊網卡,每塊網卡串連一個不同的網段,該機作為路由器在兩個網段間轉寄IP資料包。為了防止兩塊網卡的中斷髮生衝突,需要網路卡驅動程式將中斷分別設為不同值。筆者在實踐時將其中斷號和I/O地址分別設定為:3,0x300H 和4,0x320H。

  硬體設定完畢,還需要在軟體上做相應的配置。在通常的安裝模式下,Linux系統不具備路由器的功能,因此,必須重新安裝Linux核心。以Slackware版的Linux為例,其重新設定核心的過程為:

   1. #cd/usr/src/linux

  /*進入Linux的原始碼目標*/

   2. #make config

  /*進行編譯選項的配置*/

  在該步中,系統會提供編譯過程中的一些選項,供使用者根據自己的實際情況進行選擇。對於無法確定的選項,使用者可選擇系統預設值。在網路部分編譯的詢問中,會出現如下的提示:

  network firewall[y/n/N]?

  /*核心是否支援防火牆*/

  ……

  TCP/IP networking[n/y/Y]?

  /*主機是否串連TCP/IP網路*/

  IP: forwarding/gatewaying [n/y/Y]?

  /*主機是否轉寄資料庫或作為網關*/

  ……

  IP:firewalling[y/n/N]?

  /*是否在TCP/IP網路內設定防火牆*/

  IP:firewall packet logging[y/n/N]?

  /*是否在防火牆上登記資料包*/

  ……

  IP:accounting[y/n/N]?

  /*是否對資料包計帳*/

  IP:optimize as router not host[y/n/N]?

  /*是否將主機設定為路由器*/

  ……

  IP:multicats routig [y/n/N]?

  /*路由器是否向外廣播路由資訊*/

因為我們要將此主機配置為路由器,並在其上設定防火牆,故對這些選項統一選"y"。

   3.#make dep

  /*根據編譯選項做編譯前的準備工作*/

   4.#make zlmage

  /*開始編譯核心並命名編譯後的核心檔案名稱為zlmage*/

  編譯後的核心存於"/usr/src/linux/arch/i386/boot"目錄。在系統原核心備份後, 使用者可將該檔案拷貝到根目錄下,並改名為"vmlinuz",運行"lilo",使其在下次啟動時生效。

   重構核心後,需對兩塊網卡的TCP/IP部分進行設定,使其能有效地串連兩個不同的網段,並能在兩個網段進行IP資料包的轉寄。設定步驟為:

   1.對於NE2000相容的網卡,修改"/etc/rc.d/rc.modules"檔案;

  /sbin/modprobe ne io=0x300,0x320

  /*識別兩塊網卡*/

   2.修改"/etc/rc.d/rc.inetl"檔案,設定兩網卡的IP地址、掩碼及到兩網卡的路由

  資訊;

  IPADDR="202.207.0.27"

  NETWORK="202.207.0.0"

  BROADCAST="202.207.0.255"

  IPADDR1="202.207.7.2"

  NETWORK1="202.207.7.0"

  BROADCAST1="202.207.7.255"

  NETMASK="255.255.255.0"

  /sbin/ifconfig eth0 ${IPADDR} broadcast${BROADCAST} netmask${NETMASK}

  /sbin/ifconfig eth1 ${IPADDR1} broadcast${BROADCAST1} netmask${NETMASK}

  /sbin/route add-net ${NETWORK} netmask${NETMASK} eth0

  /sbin/route add-net ${NETWORK1} netmask ${NETMASK} eth1

  3.修改"/etc/rc.d/rc.inet2"檔案,開啟關於"Routed Server"的注釋,使其可以與其它路由器交換路由資訊,並轉寄IP資料包。

  ## Start the Routed server

  if[-f ${NET}/routed];then

  echo -n"routed"

  ${NET}/routed -g -s

  /*啟動程式*/

  fi

   4.在"/etc/lilo.conf"檔案中增加一行,使其在啟動時識別第二塊網卡。

  append="ether=0,0x320,ethl"

  完成上面的設定後,應重新啟動電腦,系統會識別到兩塊網卡,並按照"/etc/rc.d/ rc.intel"檔案中的說明對網卡的IP地址、掩碼進行設定。啟動完成後,以超級使用者root的身份進入系統,鍵入下面的命令即可看到關於網卡和路由的資訊。

  #ifconfig /*顯示網卡的詳細資料*/

  #route

  /*顯示系統的路由表*/

  筆者曾將學生機房區域網路內的PC通過Linux路由器與校園網相接,並進一步通過校園網進入Internet。此外,筆者又在Linux路由器上配置了防火牆。實踐證明,防火牆有效地控制住了學生對非法IP地址的訪問,並成功地記錄下每個IP地址的網路流量,為計費和網 管提供了依據。Linux的防火牆配置可以通過簡單的命令逐條進行,也可編寫shell程式放 到系統的啟動目錄下自動執行。其命令格式非常簡單,現舉例如下:

  #ipfwadm -A

  /*對通過路由器的所有資料包進行計帳*/

  #ipfwadm -I -a accept -S 162.105.0.0/16

  /*接受來自162.105.0.0網路的所有資料包*/

  #ipfwadm -I -a deny -S 159.226.0.0/16

  /*丟掉來自159.226.0.0網路的所有資料包/

  #ipfwadm -O -a reject -S 210.32.0.0/12

  /*丟掉發往210.32.0.0網路的所有資料包,並發送拒絕資訊包給要求者*/

  讀者可根據實際需要進行防火牆的配置,以達到期望的效果。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.