歡迎您光臨本站 註冊首頁

Linux主機用作網關

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
   根據最近的統計,Linux系統已經成為小型網際網路服務供應商(1SP)採用的最流行的操作系統。儘管目前的Linux系統在易用性、應用軟體(辦公、圖形、遊戲等)、軟硬體維護支持等方面與Windows系統相比仍然有一定差距,但在中小型企事業單位、小型ISP與ICP的網路伺服器應用領域中,Linux系統完全可以與Windows NT系統媲美而且工作更穩定。Linux系統特別適合作為一種網際網路伺服器平台,諸如實現網際網路電子郵件服務、萬維網服務、路由支持、IP防火牆支持、撥號上網和更多的服務程序,通常都可以作為Linux操作系統經銷產品的一部分免費獲取。
  本文的內容就介紹LINUX系統是如何發揮其中之一的網路功能???利用安裝Linux系統的主機來實現網關的功能。本文不但介紹網關概念、理論,也介紹具體的配置,相信讀者能從中找到所需的東東。



  概念、原理:

  1、網關概念:網關是在使用不同通信協議、數據格式化結構、語言或體系結構的兩個系統里,充當轉換器角色的計算機系統或其它設備。網關和網橋不一樣,網橋只在兩個系統之間傳遞數據,不執行轉換操作。網關重新打包信息,或者更改它的語法,使其符合目的地系統的要求。網關也可能是內部網路和外部網路的連接點。此設備從主機取出信息包,檢查其地址,並把他們傳遞到下一個路由器或主機系統。網關工作在OSI的應用層。

  2、TCP/IP路由:路由決定一個分組從它的源通過網路到達它的目的地所經過的路徑;它是網路間傳輸信息的方法。路由協議有靜態路由、RIP、OSPF等。

  3、靜態路徑表:由系統管理員事先設置好固定的路徑表稱之為靜態(static)路徑表,一般是在系統安裝時就根據網路的配置情況預先設定的,當網路結構的改變時需管理員手工改動相應的表項。  

  4、動態路徑表:動態(Dynamic)路徑表是路由器根據網路系統的運行情況而自動調整的路徑表。路由器根據路由選擇協議(RoutingProtocol)提供的功能,自動學習和記憶網路運行情況,在需要時自動計算數據傳輸的最佳路徑。

  5、命令ping:它檢查網路是否連通、並測試訪問計算機或網路的反應速度的工具。ping所作的就是向目的主機發出一個名為Internet Control Message Protocol (ICMP) Echo Request packet的32個位元組的信息包。ICMP信息包是特殊的IP控制信息,它用於在兩個主機之間發送網路信息,然後,它將響應時間記錄下來。   當然,用戶還需要了解除了以上5項以外的網路互聯的TCP/IP協議以及一些基本的理論,本文不再聱述。



  開始工作:

  在筆者所在單位的網路結構中,存在兩個子網,其網路地址分別是166.166.64.0和166.166.128.0,子網掩碼為255.255.192.0。要使屬於兩個子網中的計算機可以相互訪問,必須在兩個子網中間建立一個網關。筆者採用一台安裝了RedLinux系統的主機來作網關的Linux伺服器,整個設置過程分「兩步走」。必須注意的一點是,以下命令的執行需要具有Linux系統的root許可權。

  1、 網卡配置   顯然,用作網關的Linux伺服器需要安裝兩塊網卡,下面介紹兩塊網卡的配置。   在 Linux 中,第一塊網卡設備名為 eth0,以後依次為 eth1,eth2……。一般Linux能自動檢測到第一塊網卡首先。對於第二塊,一般只需在/etc/lilo.conf文件中的第一行加上這麼一句append=「ether=irq,io,eth1「 就可以找到第二塊網卡了(irq,io填網卡的IRQ,IO,若填0,0可以自動測試)。 另外好多PCI的網卡kernel都能自動測到, 無需加內核參數。然後運行重啟lilo。在你重新啟動時, Linux就能識別你的第二個Ethernet網卡了。

  在確省的情況下, 一般的Linux內核只檢測一個Ethernet網卡, 發現了第一個網卡后, 測試就中止了。 通常有以下三種不同的方法,讓Linux系統去檢測其餘的網卡:   A 在內核啟動時告訴內核網卡的設置參數;   B 配置你的啟動裝載文件, 使得內核自動獲得這些參數;   C 修改網卡測試表drivers/net/Space.c。   對大多數Linux用戶來說, 第二種方法是最合適的——用你的啟動裝載文件來傳遞參數:



  在下面的說明中, 我們假設你使用了Linux的標準裝載程序「LILO「。在啟動的時候,Linux識別一定的參數。這些參數通常說明一些在啟動時不知道的情況。 對網卡來說,應該使用如下的參數:

  ether=,,,,   其中有效的數值必須是10進位的, 或8進位(以「0「開頭), 或16進位(以「0x「開頭)的。第一個非數值參數是為你的設備取一個名字(NAME)。空參數被認為是0。   IRQ   這個參數指明你的網卡所使用的中斷號。 但參數為0時, 這意味著將從你的網卡上讀取中斷號(如果你的網卡支持這一功能), 或使用自動中斷號(如果你的網卡不提供讀取中斷號的功能的話)。   IO-ADDR   這個參數指明檢測時使用的基地址。 如果基地址是0, 則檢測程序將檢測所有可能使用的地址。一般來說, 檢測程序將使用保留地址表來決定這一區域是否要進行檢測。如果你指明了參數, 則檢測程序將不使用保留地址表. 可以使用「reserve=「告訴檢測程序不檢測某一IO空間。   PARAM1, PARAM2   最初是用來指明你的網卡所使用的共享內存區域, 象WD8013網卡一樣. 隨著新網卡的出現, 它們被用於提供一些網卡的信息。   NAME   用來指明你預定義的設備名。一般內核使用「eth0「, 「eth1「, 「eth2「...... 之類的名字. 沒有說明特殊的意義.

  LILO提供了兩種傳遞參數的方法。最常見的是在啟動時立即鍵入這些參數。下面的例子, 激活了兩個網卡::   linux ether=0,0,eth0 ether=0,0,eth1   當然在每次啟動時都鍵入這些參數是相當麻煩的, 而且不能做到自動啟動。你可以永久的在你的LILO配置文件/etc/lilo.conf中加上一行「append「, 然後運行LILO來升級你的配置:   append = 「ether=0,0,eth1 ether=0,0,eth2「



  2、網路連接   要使這兩塊網卡與相應的網路相連,需要使用ifconfig命令;在本例中,可以這樣配置:   # ifconfig 166.166.64.1 255.255.192.0 eth0 up   # ifconfig 166.166.128.1 255.255.192.0 eth1 up   其中,ifconfig命令使Linux內核知道軟體回送和乙太網這樣一些網路介面,使得Linux可以使用它們。這兩行命令的含義便是,將IP地址166.166.64.1分配給網卡eth0,子網掩碼為255.255.192.0;將IP地址166.166.128.1分配給網卡eth1,子網掩碼為255.255.192.0;參數up表示配置立時生效。(命令行開頭的「#」為Linux系統下超級用戶的命令輸入提示符)

  網卡參數配置好了之後,還需要正確配置系統路由表,並啟動IP轉發功能。   在Linux系統中,用戶可以採用多種路由協議;為了簡單起見,本文只介紹靜態路由的配置。配置路由表時,首先應使用router -n 命令列出當前路由表的內容,刪除所有不正確的路由;然後使用route add命令來添加靜態路由。

  刪除路由的命令為:   # route del -net | -host name netmask netmask_name;   其中 -net 為刪除到網路的路由,-host刪除到主機的路由;這兩個參數根據需要選擇其中一個。name為所要刪除的網路或者主機的IP地址;netmask_name為子網掩碼的IP地址。

  然後添加以下兩項:   # route add -net 166.166.64.0 netmask 255.255.192.0 eth0   # route add -net 166.166.128.0 netmask 255.255.192.0 eth1   這兩行命令就會使得所有發往166.166.64.0網路的數據包都應通過網卡eth0發出去,而發往166.166.128.0網路的數據包都應通過網卡eth1發出去。

  最後使用命令:# echo 1> /proc/sys/net/ipv4/ip_forward來啟動系統的IP轉發功能。如果希望關閉IP轉發,則把前面命令中的參數1換成0即可。

  現在,網關配置大功告成。筆者多次分別在這兩個子網中的某幾台計算機上使用ping命令(如ping 166.166.192.5 -t)、查找網上鄰居的方法進行測試;結果都能Ping通網路中的其他機器,也能很快找到網路上的計算機。這證明網關設置正確。如果讀者Ping不能成功,則應該仔細檢查網路的硬體如網線、HUB、網卡等是否正常。


[火星人 ] Linux主機用作網關已經有294次圍觀

http://coctec.com/docs/linux/show-post-70008.html