在Linux下配置TCP/IP 本教程首先回顧 TCP/IP 的起源,然後闡述 TCP/IP 發展所依據的 模型,最後還討論 TCP/IP 是如何工作的 — 包括 IP 地址、子網以及路由。打好這些理論 基礎之後,我們將討論 Linux 所需要的各種網路配置文件以及如何初始化網路介面和如何。
關鍵文件和腳本
網路介面初始化的實際過程(有時也稱做「啟動介面」)是由一組配置文件和腳本控制的,這些文件和腳本大多數在/etc 目錄下。這些配置文件告訴 Linux 它的 IP 地址、主機名和域名;腳本則負責網路介面的初始化。 遺憾的是,不同分發版(distribution)中文件位置和命名約定至今還沒有統一的標準。為給本文提供具體的示例,將基於廣泛使用的 Red Hat 7.0 包做出描述。請記住,若您的分發版不是使用 Red Hat 或不是基於 Red Hat 約定(如 Mandrake 分發版),在此所引用的一些文件會位於別的目錄中或有其它的名稱。然而,網路效果和實際效果是一樣的 ? 將存儲在一系列配置文件中的網路信息傳遞給腳本,然後用腳本初始化介面和網路路由。 涉及初始化和配置網路介面的關鍵文件有: /etc/hosts (將主機名映射到 IP 地址) /etc/networks (將域名映射到網路地址) /etc/sysconfig/network (打開或關閉聯網,設置主機名和網關) /etc/resolv.conf (設置名稱伺服器或 DNS 伺服器的 IP 地址) /etc/rc.d/rc3.d/S10network (在引導時激活已配置的乙太網介面,由運行級別目錄 /etc/rc.d/rcN.d/ 中的符號鏈接調用) /etc/sysconfig/network-scripts 中一些文件的集合。這些文件包括用於網路連接的主要配置,以及提供介面狀態和控制功能的符號鏈接。
/etc/hosts
/etc/hosts 是將 IP 地址和主機名聯繫起來的簡單文本文件。 TCP/IP 網路中的每台計算機都必須有唯一的 IP 地址。hosts 文件只允許用戶將主機名與 IP 地址聯繫起來,以便當訪問計算機時使用該名稱,而不用輸入一長串數字。/etc/hosts 中的每一項都依次包含一個 IP 地址、空白和主機名和/或別名。井號(#)表示註釋開始。例如: # /etc/hosts # last updated 12/3/2000
192.168.1.20 phoenix.syroidmanor.com phoenix 192.168.1.15 hydras.syroidmanor.com hydras 在上面顯示的 Hosts 文件中,IP 地址 192.168.1.5 映射到主機 janus.syroidmanor.com ,並且分配給它一個備用主機名(或別名)janus。儘管 DNS 已經取代了這個主機文件,但出於以下原因仍然使用它: 大多數系統都有一個包含本地網路上的關鍵主機的名稱和地址信息的小主機表。當 DNS 未運行時,例如,在最初系統啟動期間,則使用該表。即便本地 DNS 伺服器正在運行,在每個系統上也應該有一個小 hosts 文件,該文件包含一個主機本身項、一個 localhost 項以及區域網上任何主要的網關和伺服器項。 未連接到網際網路或其他網路的小網路不需要 DNS 服務。然而,這些網路上的主機也需要知道如何定位同一網路上的其它主機。
/etc/networks
就如主機有名稱和地址一樣,為方便起見,也可以為網路和子網命名。 /etc/networks 文件在布局上與 /etc/hosts 很相似,只不過名稱和地址互換了一下。 # /etc/networks for syroidmanor.com
localnet 127.0.0.0 #loopback syroid-C1 192.168.1 #development, class C syroid-C2 192.168.2 #support, class C 在上面的示例中,可將網路名稱 syroid-C1 用於腳本或任何命令行實用程序中來引用 192.168.1 這個 C 類網。
netstat 支持一組顯示活動或非活動的套接字的選項:-t、-u、-w 和 -x 分別顯示活動的 TCP、UDP、RAW 或 UNIX 套接字連接。如果加上 -a 標誌,還會顯示等待連接的(換句話說,就是偵聽)套接字。這將為您顯示現在正在系統上運行的所有伺服器。 例如:在主機 phoenix 上輸入 netstat -ta 會顯示下列內容: [tom@phoenix tom]$ netstat -ta Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 40 phoenix.syroidmanor:ssh 192.168.1.5:1132 ESTABLISHED tcp 0 0 *:ssh *:* LISTEN tcp 0 0 phoenix.syroidmano:1028 hydras.syro:netbios-ssn ESTABLISHED tcp 0 0 phoenix.syroidmano:1027 raidserver:netbios-ssn ESTABLISHED tcp 0 0 *:printer *:* LISTEN tcp 0 0 *:auth *:* LISTEN tcp 0 0 *:1024 *:* LISTEN tcp 0 0 *:sunrpc *:* LISTEN 上述輸出顯示大多數的伺服器僅僅在等待到來的連接(LISTEN)。但是,第一行顯示主機 phoenix 和 IP 地址為 192.168.1.5 之間的連接;第三和第四行顯示兩個 netbios 連接(Samba SMB 共享)。
用 netstat 查看路由表
當使用 -r 標誌時,netstat 顯示內核中的路由表,這類似於輸入 /sbin/route : [tom@phoenix tom]$ netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
-n 選項強制 netstat 以點分四組 IP 數字的形式,而不是主機和網路名稱的形式輸出地址。當您不想通過網路(例如,用 DNS 或 NIS 伺服器)進行地址查詢時,這個選項特別有用。 第二列顯示路由項中所指向的網關。如果沒有使用網關,就會顯示星號。第三列是路由的網路掩碼。內核在將信息包的 IP 地址與路由的目的地 IP 地址進行比較之前,將 Genmask 值與信息包的 IP 地址逐位進行「與」操作,從而使路由「通用化」。 第四列顯示路由的標誌:U 表示處於活動狀態,H 表示主機,G 表示網關,D 表示動態路由,而 M 表示已經修改過。