Linux 網絡速成指南
Chris Walden
電子商務架構師, IBM Developer Relations
2003 年 3 月
IBM 電子商務架構師 Chris Walden 將通過他在 developerWorks 上發表的九篇系列文章來指導您如何在 Linux 環境中運用您的 Windows 操作技巧。本部分將探討網絡,這是 Linux 做得最好的方面之一。
在如今這個時代,運行一臺沒有連接到網絡的計算機幾乎是難以想像的。電子郵件、Web 瀏覽和文件共享像打印和查看屏幕上的信息一樣,都是用戶所期待的。
幸運的是,Liunx 從一開始就是為網絡而開發的。事實上,網絡是 Linux 做得最好的事情之一。Linux 支持諸如TCP/IP 和 SMB(NetBIOS)等流行的網絡協議。Linux 還具有用于監控和過濾網絡流量的成熟工具。諸如 FTP、Windows 文件和打印共享以及 Web 托管等服務也是可用的。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: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)
|
在上面的清單中,系統中只有一塊網卡,標識為 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 工具
圖 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,并確保它正常運行。
上面這條命令將關閉 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 -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 狀態的連接。LISTEN 是系統上的服務,它接受來自其他機器的連接。ESTABLISHED 是您的機器和其他機器之間的活動連接。請確保您知道正在運行的所有 LISTEN 程序。如果看到某些無法識別的內容,它可能就是一個安全顧慮。 netstat
具有許多選項。請在命令行鍵入 info netstat
來獲得該命令的細節。
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
|
不帶命令行開關運行 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
這樣的工具允許查看單獨的網絡連接,并顯示它們與運行著的進程的關系。
參考資料
關于作者 Chris Walden 是位于德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers )的一名電子商務架構師,該公司為 IBM 商業伙伴提供教育、實現和咨詢。他致力于 Linux 相關工作,一有機會就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構師的職責之外,他還精通Linux 基礎設施服務器的各個領域,包括混合平臺用戶環境下的文件、打印以及其他應用服務等。Chris 有 10 年的計算機行業經驗,從現場支持到 Web 應用開發和顧問,各個領域他都曾涉足。您可以通過 cmwalden@us.ibm.com與 Chris 聯系。 |
posted on 2005-10-27 09:29
小強 閱讀(278)
評論(0) 編輯 收藏 所屬分類:
Linux