Thinking in XiaoQiang
          世人皆有悲哀,只有你不明白
          posts - 56,comments - 150,trackbacks - 0
          Linux 網(wǎng)絡(luò)速成指南

          級別: 初級

          Chris Walden
          電子商務(wù)架構(gòu)師, IBM Developer Relations
          2003 年 3 月

          Column iconIBM 電子商務(wù)架構(gòu)師 Chris Walden 將通過他在 developerWorks 上發(fā)表的九篇系列文章來指導(dǎo)您如何在 Linux 環(huán)境中運用您的 Windows 操作技巧。本部分將探討網(wǎng)絡(luò),這是 Linux 做得最好的方面之一。

          在如今這個時代,運行一臺沒有連接到網(wǎng)絡(luò)的計算機幾乎是難以想像的。電子郵件、Web 瀏覽和文件共享像打印和查看屏幕上的信息一樣,都是用戶所期待的。

          幸運的是,Liunx 從一開始就是為網(wǎng)絡(luò)而開發(fā)的。事實上,網(wǎng)絡(luò)是 Linux 做得最好的事情之一。Linux 支持諸如TCP/IP 和 SMB(NetBIOS)等流行的網(wǎng)絡(luò)協(xié)議。Linux 還具有用于監(jiān)控和過濾網(wǎng)絡(luò)流量的成熟工具。諸如 FTP、Windows 文件和打印共享以及 Web 托管等服務(wù)也是可用的。Linux 甚至還提供了用于集中目錄服務(wù)、虛擬專用網(wǎng)(VPN)和遠程過程調(diào)用的工具。

          網(wǎng)絡(luò)硬件
          Linux 能夠使用具有驅(qū)動程序的任何網(wǎng)絡(luò)硬件。Linux 驅(qū)動程序單獨地或以可加載模塊的形式編譯到內(nèi)核中。Linux 內(nèi)核默認支持許多流行的網(wǎng)卡。在選擇網(wǎng)絡(luò)硬件時,最好總是使用“硬件兼容性列表”(參見 參考資料中的鏈接)中列出的設(shè)備。另外還要使用最新的 Linux 發(fā)行版本。

          一般情況下,如果使用的是兼容的網(wǎng)絡(luò)硬件,安裝系統(tǒng)時網(wǎng)卡會自動得到識別。可以使用 ifconfig 命令來檢查系統(tǒng)上的網(wǎng)絡(luò)硬件。默認情況下, ifconfig 顯示活動的網(wǎng)絡(luò)設(shè)備。給這個命令添加一個 -a 開關(guān)就能看到所有設(shè)備。

          清單 1. 使用 ifconfig
          refname: ifconfig-a
          
          [root@cmw-t30 root]#  ifconfig -a 
          eth0      Link encap:Ethernet  HWaddr 00:09:6B:60:8B:1E
                    inet addr:9.41.209.160  Bcast:9.41.209.255  Mask:255.255.255.0
                    UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                    RX packets:47255 errors:0 dropped:0 overruns:0 frame:0
                    TX packets:32949 errors:0 dropped:0 overruns:0 carrier:0
                    collisions:0 txqueuelen:100
                    RX bytes:22140365 (21.1 Mb)  TX bytes:13519623 (12.8 Mb)
                    Interrupt:11 Base address:0xf000
          
          lo        Link encap:Local Loopback
                    inet addr:127.0.0.1  Mask:255.0.0.0
                    UP LOOPBACK RUNNING  MTU:16436  Metric:1
                    RX packets:1308081 errors:0 dropped:0 overruns:0 frame:0
                    TX packets:1308081 errors:0 dropped:0 overruns:0 carrier:0
                    collisions:0 txqueuelen:0
                    RX bytes:183376967 (174.8 Mb)  TX bytes:183376967 (174.8 Mb)
          

          在上面的清單中,系統(tǒng)中只有一塊網(wǎng)卡,標識為 eth0。 lo 適配器是一個回環(huán)(lookback),由 Linux 用來與它自身通信。后面還會進一步討論 ifconfig 命令。

          網(wǎng)絡(luò)設(shè)備名稱
          Linux 網(wǎng)絡(luò)設(shè)備在配置時被賦予別名,該別名由一個描述性的縮略詞和一個編號組成。某種類型的第一個設(shè)備的編號為 0,其他設(shè)備依次被編號為 1、2、3,等等。在給設(shè)備命名時將使用下面的約定。本信息摘自 Linux Network Administrator's Guide(參見本文結(jié)尾處 參考資料 中的鏈接)。

          • eth0, eth1 ...
            這些是以太網(wǎng)卡接口。它們用于大多數(shù)的以太網(wǎng)卡,包括許多并行端口以太網(wǎng)卡。
          • tr0, tr1 ...
            這些是令牌環(huán)網(wǎng)卡接口。它們用于大多數(shù)的令牌環(huán)網(wǎng)卡,包括非 IBM 生產(chǎn)的網(wǎng)卡。
          • s10, s11 ...
            這些是 SLIP 接口 。SLIP 接口與串行線關(guān)聯(lián),關(guān)聯(lián)順序就是它們被分配給 SLIP 的順序。
          • ppp0, ppp1 ...
            這些是 PPP 接口。就像 SLIP 接口一樣,PPP 接口一旦被轉(zhuǎn)換到 PPP 模式,它就與串行線關(guān)聯(lián)。
          • plip0. plip1 ...
            這些是 PLIP 接口。PLIP 接口通過并行線傳輸 IP 數(shù)據(jù)報。這些接口在系統(tǒng)啟動時由 PLIP 驅(qū)動程序分配,并被映射到并行端口。在 2.0.x內(nèi)核中,設(shè)備名稱和并行端口的 I/O 端口之間存在直接的關(guān)系,但是在更新版本的內(nèi)核中,設(shè)備名稱是順序分配的,就像 SLIP 和 PPP 設(shè)備一樣。
          • ax0, ax1 ...
            這些是 AX.25 接口。AX.25 是業(yè)余無線電操作人員使用的主要協(xié)議。AX.25 接口的分配和映射方式與 SLIP 設(shè)備類似。

          還有其他許多可用于其他網(wǎng)絡(luò)驅(qū)動程序的接口類型。我們僅列出了一些最常見的。

          既然以太網(wǎng)是最常見的配置,下面就重點來討論它。欲了解關(guān)于其他種類的連接的更多信息,請參見本文結(jié)尾處的 參考資料

          網(wǎng)絡(luò)配置
          在安裝 Linux 發(fā)行版本時,就得配置網(wǎng)絡(luò)。您或許已經(jīng)有一個來自初始配置的活動 eth0。這個配置對于當前的使用也許足夠,但是您可能需要隨著時間的推移做出更改。下面將介紹與 IP 網(wǎng)絡(luò)相關(guān)的不同配置項,以及用于使用這些配置項的文件和工具。

          Webmin
          Webmin 在 Networking 下的 Network Configuration 中提供一組優(yōu)秀的網(wǎng)絡(luò)配置工具。您可以配置單獨的接口并調(diào)整它們的當前設(shè)置或已保存的設(shè)置。還可以配置路由和網(wǎng)關(guān)、DNS 客戶端設(shè)置以及本地主機地址。在編輯好所有的配置之后,可以單擊 Apply Configuration來應(yīng)用它們,不必重新啟動系統(tǒng)。

          Localhost
          本地主機地址包含在/etc/hosts 中。這個文件和 C:\winnt\system32\drivers\etc\hosts 文件等價。其中的條目顯示 IP 地址的別名,用于在不必查詢 DNS 的情況下指派名稱。

          
          127.0.0.1       localhost.localdomain   localhost
                      
          10.10.10.10 cmw-t30

          不同發(fā)行版本中的工具
          每個發(fā)行版本都有它自己用于配置網(wǎng)絡(luò)設(shè)置的工具。 應(yīng)該參考特定發(fā)行版本的文檔來確定要使用的工具。每種工具提供與 Webmin 工具基本上相同的配置選項。其中有些版本可能提供特定于該發(fā)行版本的選項。

          圖 1. Red Hat 8.x 和 9.x 使用 redhat-config-network 工具
          圖 1. Red Hat 8.x 和 9.x 使用 redhat-config-network 工具

          圖 2. SuSE 和 United Linux 使用 YAST 工具
          圖 2. SuSE 和 United Linux 使用 YAST 工具

          手動配置也是可能的,不過這是一個非常深奧的主題。請參考您的發(fā)行版本文檔和本文結(jié)尾處的 參考資料,以了解關(guān)于手動網(wǎng)絡(luò)配置的更多信息。

          分析和監(jiān)控工具
          Linux 附帶了許多工具來監(jiān)控網(wǎng)絡(luò)任務(wù)。

          ifconfig
          我們在上面使用過 ifconfig 命令來查看以太網(wǎng)卡的狀態(tài)。然而, ifconfig 還可以配置設(shè)備并報告關(guān)于設(shè)備的情況。假設(shè)您要建立一個臨時的網(wǎng)絡(luò)配置以供測試。您可以使用發(fā)行版本中的工具來編輯配置,但是需要注意在完成測試之后,將所有設(shè)置恢復(fù)回去。通過使用 ifconfig ,我們無需影響已保存的設(shè)置,就能夠快速地配置網(wǎng)卡:

          
          ipconfig eth0 192.168.13.13 netmask 255.255.255.0 up
          

          上面這條命令使用一個 C 類 IP 地址將 eth0 設(shè)置到地址 192.168.13.13,并確保它正常運行。

          
          ipconfig eth0 down
          

          上面這條命令將關(guān)閉 eth0 設(shè)備。關(guān)于使用 ifconfig 的完整細節(jié),請參見 info ifconfig 頁面。

          ifup/ifdown
          要使用已保存的配置來激活和禁用網(wǎng)絡(luò)設(shè)備,請分別使用 ifupifdown

          
          # Bring up eth0 using the saved configuration
                    
          ifup eth0

          # Shut down eth0
          ifdown eth0

          netstat
          使用 netstat 控制臺命令來輸出網(wǎng)絡(luò)連接、路由表、接口統(tǒng)計、偽裝連接和組播成員。 netstat 具有多個命令行開關(guān)來控制其功能。下面是其中一些常用的開關(guān):

          輸出網(wǎng)絡(luò)狀態(tài)
          netstat -p 顯示每個套接字所屬的程序的 PID 或名稱
          netstat -a 同時顯示偵聽和非偵聽套接字
          netstat -t 顯示 TCP 連接
          netstat -u 顯示 UDP 連接
          netstat -e 顯示附加信息;使用這個選項兩次,可以獲得最詳細的信息

          下面是 netstat -tp 的一個例子:

          清單 2. 使用 netstat
          
          [root@cmw-t30 root]# netstat -tp
          Active Internet connections (w/o servers)
          Proto Recv-Q Send-Q Local Address           Foreign Address         State
          PID/Program name
          tcp        0      0 localhost.localdo:29000 *:*                     LISTEN
          2389/attvpnctl
          tcp        0      0 *:10000                 *:*                     LISTEN
          5945/perl
          tcp        0      0 *:x11                   *:*                     LISTEN
          1120/X
          tcp        0      0 *:ftp                   *:*                     LISTEN
          724/xinetd
          tcp        0      0 *:ssh                   *:*                     LISTEN
          710/sshd
          tcp        0      0 *:ipp                   *:*                     LISTEN
          797/cupsd
          tcp        0      0 *:505                   *:*                     LISTEN
          1043/rcd
          tcp        0      0 localhost.localdoma:ipp localhost.localdo:32772 ESTABLISHED
          797/cupsd
          tcp        0      0 sig-9-65-39-140.m:44916 sdoprods2.austin.i:1352 TIME_WAIT
          -
          tcp        0      0 10.100.100.101:33020    64.12.29.100:5190       ESTABLISHED
          1433/gaim
          tcp        0      0 localhost.localdo:44954 localhost.localdoma:ipp TIME_WAIT
          -
          tcp        0      0 localhost.localdo:44955 localhost.localdoma:ipp TIME_WAIT
          -
          tcp        0      0 localhost.localdo:44897 localhost.localdoma:ipp TIME_WAIT
          -
          tcp        0      0 localhost.localdo:44902 localhost.localdoma:ipp TIME_WAIT
          -
          tcp        0      0 localhost.localdo:44903 localhost.localdoma:ipp TIME_WAIT
          -
          tcp        0      0 localhost.localdo:44900 localhost.localdoma:ipp TIME_WAIT
          -
          tcp        0      0 localhost.localdo:44901 localhost.localdoma:ipp TIME_WAIT
          -
          tcp        0      0 10.100.100.101:44888    cs9336-61.austin.r:pop3 TIME_WAIT
          -
          tcp        0      0 localhost.localdo:32772 localhost.localdoma:ipp ESTABLISHED
          1246/gnome-cups-man
          tcp        1      0 localhost.localdo:32774 localhost.localdoma:ipp CLOSE_WAIT
          1246/gnome-cups-man
          tcp        0      0 10.100.100.101:33019    cs46.msg.sc5.yahoo:5050 ESTABLISHED
          1433/gaim
          tcp        0      0 sig-9-65-39-140.m:35061 d03nm119.boulder.i:1352 CLOSE_WAIT
          1720/wineserver
          tcp        0      0 10.100.100.101:33021    64.12.30.4:5190         ESTABLISHED
          1433/gaim
          
          

          我最常使用 netstat 命令來查看處于 LISTEN 或 ESTABLISHED 狀態(tài)的連接。LISTEN 是系統(tǒng)上的服務(wù),它接受來自其他機器的連接。ESTABLISHED 是您的機器和其他機器之間的活動連接。請確保您知道正在運行的所有 LISTEN 程序。如果看到某些無法識別的內(nèi)容,它可能就是一個安全顧慮。 netstat 具有許多選項。請在命令行鍵入 info netstat 來獲得該命令的細節(jié)。

          route
          route 控制臺命令允許您顯示和操作 IP 路由表。

          清單 3. 使用 route
          
          [root@cmw-t30 plugins]# route|grep -v ipsec
          Kernel IP routing table
          Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
          204.146.24.42   10.100.100.1    255.255.255.255 UGH   0      0        0 eth1
          10.100.100.0    *               255.255.255.0   U     0      0        0 eth1
          127.0.0.0       *               255.0.0.0       U     0      0        0 lo
          default         10.100.100.1    0.0.0.0         UG    0      0        0 eth1
          

          不帶命令行開關(guān)運行 route 將顯示當前路由表。可以使用 route 對該路由表進行非常精細的修改。

          
          route add default gw 10.10.10.1
          

          上面的命令添加一個默認的路由(它將在沒有其他路由匹配的情況下被使用)。使用這個路由的所有分組都將途經(jīng)網(wǎng)關(guān)“10.10.10.1”。實際將用于該路由的設(shè)備取決于我們?nèi)绾蔚竭_“10.10.10.1”——到“10.10.10.1”的靜態(tài)路由必須預(yù)先設(shè)置好。

          
          route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
          

          上面的命令添加一個通過“eth0”到網(wǎng)絡(luò) 192.56.76.x 的路由。這里的 C 類網(wǎng)絡(luò)掩碼修飾符實際上并不是必需的,因為 192.* 就是一個 C 類 IP 地址。這里的單詞“dev”也可以省略。

          路由選擇是一個非常深奧的主題。關(guān)于 route 選項的完整信息可通過 info route 命令獲得。

          結(jié)束語
          Linux 從一開始就是為網(wǎng)絡(luò)而設(shè)計的。它內(nèi)置了以前僅在高端企業(yè)產(chǎn)品中才可見到的成熟功能。然而,盡管擁有所有這些強大的能力,Linux 網(wǎng)絡(luò)的配置卻遠沒有 Windows 網(wǎng)絡(luò)的配置復(fù)雜。諸如 Webmin、redhat-config-network 和 YAST這樣的工具允許執(zhí)行圖形化的配置。諸如 ifconfigroute 這樣的工具允許通過控制臺或腳本查看和修改網(wǎng)絡(luò)參數(shù)。諸如 netstat 這樣的工具允許查看單獨的網(wǎng)絡(luò)連接,并顯示它們與運行著的進程的關(guān)系。

          參考資料

          關(guān)于作者
          Chris Walden 是位于德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers )的一名電子商務(wù)架構(gòu)師,該公司為 IBM 商業(yè)伙伴提供教育、實現(xiàn)和咨詢。他致力于 Linux 相關(guān)工作,一有機會就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構(gòu)師的職責(zé)之外,他還精通Linux 基礎(chǔ)設(shè)施服務(wù)器的各個領(lǐng)域,包括混合平臺用戶環(huán)境下的文件、打印以及其他應(yīng)用服務(wù)等。Chris 有 10 年的計算機行業(yè)經(jīng)驗,從現(xiàn)場支持到 Web 應(yīng)用開發(fā)和顧問,各個領(lǐng)域他都曾涉足。您可以通過 cmwalden@us.ibm.com與 Chris 聯(lián)系。
          posted on 2005-10-27 09:29 小強 閱讀(282) 評論(0)  編輯  收藏 所屬分類: Linux
          主站蜘蛛池模板: 新泰市| 天祝| 康平县| 龙山县| 临武县| 泊头市| 军事| 新乡县| 凤山市| 三门峡市| 伽师县| 云林县| 滦平县| 纳雍县| 六安市| 云林县| 日土县| 锦州市| 伊通| 文化| 华亭县| 冕宁县| 定远县| 深州市| 青海省| 凤山市| 中牟县| 永济市| 儋州市| 牙克石市| 海南省| 信丰县| 宁夏| 商洛市| 松溪县| 淮阳县| 六枝特区| 塔城市| 文化| 正蓝旗| 崇明县|