Linux 網路速成指南
Chris Walden (cmwalden-at-us.ibm.com)
電子商務架構師,IBM Developer Relations
2004 年 1 月
IBM 電子商務架構師 Chris Walden 將通過他在 developerWorks 上發表的九篇系列文章來指導您如何在 Linux 環境中運用您的 Windows 操作技巧。本部分將探討網路,這是 Linux 做得最好的方面之一。
在如今這個時代,運行一台沒有串連到網路的電腦幾乎是難以想像的。電子郵件、網頁瀏覽和檔案分享權限設定像列印和查看螢幕上的資訊一樣,都是使用者所期待的。
幸運的是,Liunx 從一開始就是為網路而開發的。事實上,網路是 Linux 做得最好的事情之一。Linux 支援諸如TCP/IP 和 SMB(NetBIOS)等流行的網路通訊協定。Linux 還具有用於監控和過濾網路流量的成熟工具。諸如 FTP、Windows 檔案和列印共用以及 虛擬主機等服務也是可用的。Linux 甚至還提供了用於集中目錄服務、虛擬私人網路(VPN)和遠端程序呼叫的工具。
網路硬體
Linux 能夠使用具有驅動程式的任何網路硬體。Linux 驅動程式單獨地或以可載入模組的形式編譯到核心中。Linux 核心預設支援許多流行的網卡。在選擇網路硬體時,最好總是使用“硬體相容性列表”(參見 參考資料 中的連結)中列出的裝置。另外還要使用最新的 Linux 發行版本。
一般情況下,如果使用的是相容的網路硬體,安裝系統時網卡會自動得到識別。可以使用 ifconfig
命令來檢查系統上的網路硬體。預設情況下,ifconfig
顯示活動的網路裝置。給這個命令添加一個 -a
開關就能看到所有裝置。
清單 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:0xf000lo 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)
|
在上面的清單中,系統中只有一塊網卡,標識為 eth0。lo
適配器是一個迴環(lookback),由 Linux 用來與它自身通訊。後面還會進一步討論 ifconfig
命令。
網路裝置名稱
Linux 網路裝置在配置時被賦予別名,該別名由一個描述性的縮減詞和一個編號組成。某種類型的第一個裝置的編號為 0,其他裝置依次被編號為 1、2、3,等等。在給裝置命名時將使用下面的約定。本資訊摘自 Linux Network Administrator's Guide(參見本文結尾處 參考資料 中的連結)。
- eth0, eth1 ...
這些是乙太網路卡介面。它們用於大多數的乙太網路卡,包括許多並行連接埠乙太網路卡。
- tr0, tr1 ...
這些是令牌環網卡介面。它們用於大多數的令牌環網卡,包括非 IBM 生產的網卡。
- s10, s11 ...
這些是 SLIP 介面 。SLIP 介面與串列線關聯,關聯順序就是它們被分配給 SLIP 的順序。
- ppp0, ppp1 ...
這些是 PPP 介面。就像 SLIP 介面一樣,PPP 介面一旦被轉換到 PPP 模式,它就與串列線關聯。
- plip0. plip1 ...
這些是 PLIP 介面。PLIP 介面通過並行線傳輸 IP 資料報。這些介面在系統啟動時由 PLIP 驅動程式分配,並被映射到並行連接埠。在 2.0.x 核心中,裝置名稱和並行連接埠的 I/O 連接埠之間存在直接的關係,但是在更新版本的核心中,裝置名稱是順序分配的,就像 SLIP 和 PPP 裝置一樣。
- ax0, ax1 ...
這些是 AX.25 介面。AX.25 是業餘無線電操作人員使用的主要協議。AX.25 介面的分配和映射方式與 SLIP 裝置類似。
還有其他許多可用於其他網路驅動程式的介面類型。我們僅列出了一些最常見的。
既然乙太網路是最常見的配置,下面就重點來討論它。欲瞭解關於其他種類的串連的更多資訊,請參見本文結尾處的 參考資料。
網路設定
在安裝 Linux 發行版本時,就得配置網路。您或許已經有一個來自初始配置的活動 eth0。這個配置對於當前的使用也許足夠,但是您可能需要隨著時間的推移做出更改。下面將介紹與 IP 網路相關的不同配置項,以及用於使用這些配置項的檔案和工具。
Webmin
Webmin 在 Networking 下的 Network Configuration 中提供一組優秀的網路設定工具。您可以配置單獨的介面並調整它們的當前設定或已儲存的設定。還可以配置路由和網關、DNS 用戶端設定以及本地主機地址。在編輯好所有的配置之後,可以單擊 Apply Configuration 來應用它們,不必重新啟動系統。
Localhost 本地主機地址包含在/etc/hosts 中。這個檔案和 C:/winnt/system32/drivers/etc/hosts 檔案等價。其中的條目顯示 IP 位址的別名,用於在不必查詢 DNS 的情況下指派名稱。 127.0.0.1 localhost.localdomain localhost 10.10.10.10 cmw-t30
|
不同發行版本中的工具
每個發行版本都有它自己用於配置網路設定的工具。 應該參考特定發行版本的文檔來確定要使用的工具。每種工具提供與 Webmin 工具基本上相同的配置選項。 其中有些版本可能提供特定於該發行版本的選項。
圖 1. Red Hat 8.x 和 9.x 使用 RedHat-config-network 工具
工具" src="http://www-900.ibm.com/developerWorks/cn/linux/l-roadmap/part7/redhatconfnet.jpg" width="518">
圖 2. SuSE 和 United Linux 使用 YAST 工具
手動設定也是可能的,不過這是一個非常深奧的主題。請參考您的發行版本文檔和本文結尾處的 參考資料,以瞭解關於手動網路設定的更多資訊。
分析和監控工具
Linux 附帶了許多工具來監控網路任務。
ifconfig
我們在上面使用過 ifconfig
命令來查看乙太網路卡的狀態。然而,ifconfig
還可以配置裝置並報告關於裝置的情況。假設您要建立一個臨時的網路設定以供測試。您可以使用發行版本中的工具來編輯配置,但是需要注意在完成測試之後,將所有設定恢複回去。通過使用 ifconfig
,我們無需影響已儲存的設定,就能夠快速地配置網卡:
ipconfig eth0 192.168.13.13 netmask 255.255.255.0 up
上面這條命令使用一個 C 類別 IP 位址將 eth0 設定到地址 192.168.13.13,並確保它正常運行。
ipconfig eth0 down
上面這條命令將關閉 eth0 裝置。關於使用 ifconfig
的完整細節,請參見 info ifconfig
頁面。
ifup/ifdown
要使用已儲存的配置來啟用和禁用網路裝置,請分別使用 ifup
和 ifdown
。
# Bring up eth0 using the saved configuration
ifup eth0
# Shut down eth0
ifdown eth0
netstat
使用 netstat
控制台命令來輸出網路連接、路由表、介面統計、偽裝串連和組播成員。netstat
具有多個命令列開關來控制其功能。下面是其中一些常用的開關:
輸出網路狀態
netstat -p |
顯示每個通訊端所屬的程式的 PID 或名稱 |
netstat -a |
同時顯示偵聽和非偵聽通訊端 |
netstat -t |
顯示 TCP 串連 |
netstat -u |
顯示 UDP 串連 |
netstat -e |
顯示附加資訊;使用這個選項兩次,可以獲得最詳細的資訊 |
下面是 netstat -tp
的一個例子:
清單 2. 使用 netstat
[root@cmw-t30 root]# netstat -tpActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address StatePID/Program nametcp 0 0 localhost.localdo:29000 *:* LISTEN2389/attvpnctltcp 0 0 *:10000 *:* LISTEN5945/perltcp 0 0 *:x11 *:* LISTEN1120/Xtcp 0 0 *:ftp *:* LISTEN724/xinetdtcp 0 0 *:ssh *:* LISTEN710/sshdtcp 0 0 *:ipp *:* LISTEN797/cupsdtcp 0 0 *:505 *:* LISTEN1043/rcdtcp 0 0 localhost.localdoma:ipp localhost.localdo:32772 ESTABLISHED797/cupsdtcp 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 ESTABLISHED1433/gaimtcp 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 ESTABLISHED1246/gnome-cups-mantcp 1 0 localhost.localdo:32774 localhost.localdoma:ipp CLOSE_WAIT1246/gnome-cups-mantcp 0 0 10.100.100.101:33019 cs46.msg.sc5.yahoo:5050 ESTABLISHED1433/gaimtcp 0 0 sig-9-65-39-140.m:35061 d03nm119.boulder.i:1352 CLOSE_WAIT1720/wineservertcp 0 0 10.100.100.101:33021 64.12.30.4:5190 ESTABLISHED1433/gaim
|
我最常使用 netstat
命令來查看處於 LISTEN 或 ESTABLISHED 狀態的串連。LISTEN 是系統上的服務,它接受來自其他機器的串連。ESTABLISHED 是您的機器和其他機器之間的活動串連。請確保您知道正在啟動並執行所有 LISTEN 程式。如果看到某些無法識別的內容,它可能就是一個安全顧慮。netstat
具有許多選項。請在命令列鍵入 info netstat
來獲得該命令的細節。
route
route
控制台命令允許您顯示和操作 IP 路由表。
清單 3. 使用 route
[root@cmw-t30 plugins]# route|grep -v ipsecKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface204.146.24.42 10.100.100.1 255.255.255.255 UGH 0 0 0 eth110.100.100.0 * 255.255.255.0 U 0 0 0 eth1127.0.0.0 * 255.0.0.0 U 0 0 0 lodefault 10.100.100.1 0.0.0.0 UG 0 0 0 eth1
|
不帶命令列開關運行 route
將顯示當前路由表。可以使用 route
對該路由表進行非常精細的修改。
route add default gw 10.10.10.1
上面的命令添加一個預設的路由(它將在沒有其他路由匹配的情況下被使用)。使用這個路由的所有分組都將途經網關“10.10.10.1”。實際將用於該路由的裝置取決於我們如何到達“10.10.10.1”——到“10.10.10.1”的靜態路由必須預先設定好。
route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
上面的命令添加一個通過“eth0”到網路 192.56.76.x 的路由。這裡的 C 類網路遮罩修飾符實際上並不是必需的,因為 192.* 就是一個 C 類別 IP 位址。這裡的單詞“dev”也可以省略。
路由選擇是一個非常深奧的主題。關於 route
選項的完整資訊可通過 info route
命令獲得。
結束語
Linux 從一開始就是為網路而設計的。它內建了以前僅在高端企業產品中才可見到的成熟功能。然而,儘管擁有所有這些強大的能力,Linux 網路的配置卻遠沒有 Windows 網路的配置複雜。諸如 Webmin、redhat-config-network 和 YAST這樣的工具允許執行圖形化的配置。諸如 ifconfig
和 route
這樣的工具允許通過控制台或指令碼查看和修改網路參數。諸如 netstat
這樣的工具允許查看單獨的網路連接,並顯示它們與運行著的進程的關係。
參考資料
- 閱讀 Windows 到 Linux 之旅系列文章 的其他部分(developerWorks, 2003 年 11 月)。
- 線上的 Linux Network Administrator's Guide, Second Edition 是在 Liunx 環境中進行網路管理的通用參考指南。初學者和有經驗的使用者,都能夠從中找到關於幾乎每個重要管理活動的資訊,這些活動是管理 Linux 網路設定所必需的。
- Linux Ethernet HOWTO 包含了關於哪些乙太網路裝置可用於 Linux,以及如何設定它們的資訊(重點放在硬體和乙太網路卡的低級驅動程式方面)。
- “Linux 文檔計劃”也有一個 分類 HOWTO 列表,協助您容易地尋找相關文檔。
- “硬體控制列表”包括 Red Hat 硬體搜尋網頁面、SuSE Linux 元件資料庫 和 UnitedLinux 認證和相容的硬體。
- 在 IBM developerWorks 教程“LPI certification 102 exam prep, Part 3: Networking”中,您會找到關於網路基礎的更多資訊。
- IBM developerWorks 教程“LPI certification 102 exam prep, Part 4: Secure shell and file sharing”介紹了檔案分享權限設定和安全。
- 系統安全是一個廣博而複雜的主題,但是在互連的世界中,它影響著每個人。幸運的是,現在開始著手加強系統安全還不算太早也不算太遲。文檔 Adding Security to Common Linux Distributions 和 Strategies for Keeping a Secure Server(這是前面提到過的 Linux Administration Made Easy guide 一書的第 12 章 )將協助您加強系統安全。
- IBM developerWorks 文章“Linux 硬體穩定性指南”展示了如何診斷和修複許多潛在的硬體問題。
- 在 IBM developerWorks 文章“在 Linux(或異構)網路上共用電腦”中學習更多關於網路的知識。
- 遵循 IBM developerWorks 文章“在 Linux 上構建網路路由器”的指導來類比 Cisco 路由器的行為。
- 採用更好的安全性 —— IBM developerWorks 文章“使用 ssh 進行安全的串連”展示了如何?這一點。
- 對那些從 Windows 轉向 Linux 的讀者來說,另一個重要的參考資料是 Linux 使用者技術 FAQ。
- 要開始在 Linux 上使用 IBM 的軟體產品,為您的 Linux 應用開發加油提速 將為您提供最好的參考資料。您可以找到關於 DB2、Lotus Domino、WebSphere Application Server、WebSphere Studio 等多種應用軟體的安裝提示和參考資料。您還可以登入獲得免費的 Linux Software Evaluation Kit,裡面有試用軟體和培訓資料。
- 在 developerWorks Linux 專區可以找到更多 為 Linux 開發人員準備的參考資料。
關於作者 Chris Walden 是位於德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers)的一名電子商務架構師,該公司為 IBM 商業夥伴提供教育、實現和諮詢。他致力於 Linux 相關工作,一有機會就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構師的職責之外,他還精通 Linux 基礎設施伺服器的各個領域,包括混合平台使用者環境下的檔案、列印以及其他應用服務等。Chris 有 10 年的電腦行業經驗,從現場支援到 Web 應用程式開發和顧問,各個領域他都曾涉足。您可以通過 cmwalden-at-us.ibm.com 與 Chris 聯絡。 |