18.6. 手動設定網路連線

網路軟體的手動組態應該永遠是最後的替代方案。建議使用 YaST。不過,這個有關網路組態的背景資訊也可協助您使用 YaST。

所有內建的網路卡以及熱插式網路卡 (PCMCIA、USB、一些 PCI 卡) 會透過熱插方式進行偵測到並加以設定。系統是透過下列兩種不同的方法來偵測網路卡:第一種是以實體設備,第二種則是以介面。插入設備或偵測到設備時則會觸發熱插事件。此熱插事件使用程序檔 hwup 觸發設備的起始化。起始化網路卡作為新的網路介面時,核心會產生另一個熱插事件,使用 /ifup 觸發介面的設定。

核心根據介面名稱註冊的暫時順序加以編號。起始化順序是指定名稱的決定因素。如果數個網路卡中的一個失敗,所有依序起始化網路卡的編號就會改變。對於真正的可熱插式網路卡,設備連接的順序才是決定因素。

為了讓組態具有彈性,已經分開設備 (硬體) 及介面的組態,而且不再以介面名稱來管理組態與設備和介面之間的對應。設備組態位於 /etc/sysconfig/hardware/hwcfg-*。介面組態位於 /etc/sysconfig/network/ifcfg-*。組態名稱是以描述設備及其關聯介面的方式來指定的。因為之前驅動程式與介面名稱的對應需要靜態介面名稱,所以此對應不再發生於 /etc/modprobe.conf。在這種新的概念中,此檔案中的別名項目造成不想要的副作用。

組態名稱 (hwcfg-ifcfg- 之後的任何項目) 都可以透過插槽、裝置專用 ID 或介面名稱來描述設備。例如,PCI 卡的組態名稱可以是 bus-pci-0000:02:01.0 (PCI 插槽) 或 vpid-0x8086-0x1014-0x0549 (廠商和產品 ID)。相關聯介面的名稱可以是 bus-pci-0000:02:01.0wlan-id-00:05:4e:42:31:7a (MAC 位址)。

若要指定特定網路組態到任何特定類型的卡 (一次僅能插入一種) 而不是特定卡,請選取較不特定的組態名稱。例如,bus-pcmcia 可以用於所有 PCMCIA 卡。在另一方面,之前的介面類型會限制名稱。例如,wlan-bus-usb 可以指定給連接到 USB 埠的 WLAN 卡。

系統永遠使用最佳描述介面或提供介面之設備的組態。搜尋最適用組態是由 getcfg 處理的。getcfg 的輸出會傳達可以用來描述設備的所有資訊。有關組態名稱規格的詳細資料,請參閱 getcfg 的手冊頁。

透過描述的方法,即使網路設備不一定永遠以相同的順序起始化,網路介面還是可以具有正確的組態設定。不過,介面的名稱仍然取決於起始化順序。有兩種方式可以確保確實存取特定網路卡介面:

ifup 需要現有介面,因為它不會起始化硬體。硬體的起始化是由指令 hwup (由 hotplugcoldplug 執行) 處理的。起始化設備時,會透過 hotplug 自動為新介面執行 ifup,如果開始模式是 onboothotplugauto,就會設定介面,而且會啟動 network 服務。之前,是使用指令 ifup interfacename 來觸發硬體起始化。現在已經反轉此程序。首先,會起始化硬體元件,接著是所有其他的動作。採取這種方式,則永遠可以使用現有的組態集,儘可能以最佳的方式設定不同數目的設備。

表格 18.5, "手動網路組態程序檔" 總結了與網路組態相關的最重要程序檔。只要可能,會依硬體和介面區分程序檔。

表格 18.5. 手動網路組態程序檔

組態階段

指令

功能

硬體

hw{up,down,status}

hw* 程序檔由熱插式子系統執行,用來起始化設備、復原起始化、或查詢設備狀態。詳細資訊請參閱 hwup 的手冊頁。

介面

getcfg

getcfg 可以用來查詢與組態名稱或硬體描述相關聯的介面名稱。詳細資訊請參閱 getcfg 的手冊頁。

介面

if{up,down,status}

if* 程序檔會開啟現有網路介面或傳回指定介面的狀態。詳細資訊請參閱 ifup 的手冊頁。

有關熱插拔和永久設備名稱的詳細資訊,請參閱 章 12, 使用 udev 的動態核心裝置管理

18.6.1. 組態檔

本節提供網路組態檔的概觀,並說明其用途和使用的格式。

18.6.1.1. /etc/syconfig/hardware/hwcfg-*

這些檔案包含網路卡及其他設備的硬體組態;其中包含所需的參數,如核心模組、啟動模式和程序檔關聯。詳細資訊請參閱 hwup 的手冊頁。無論現有硬體為何,啟動 coldplug 時會套用 hwcfg-static-* 組態。

18.6.1.2. /etc/sysconfig/network/ifcfg-*

這些檔案包含網路介面的組態;其中包含啟動模式和 IP 位址等資訊。可以使用的參數請參閱 ifup 的手冊頁。此外,如果一般設定僅用於一個介面,則檔案 dhcpwirelessconfig 中的所有變數都可以用於 ifcfg-* 檔案。

18.6.1.3. /etc/sysconfig/network/config、dhcp、wireless

檔案 config 包含 ifupifdown、和 ifstatus 行為的一般設定;dhcp 則包含無線區域網路介面卡之 DHCP 和 wireless 的設定。所有三個組態檔中的變數都已註解,而且可以在 ifcfg-* 檔案中使用,以更高優先順序處理。

18.6.1.4. /etc/sysconfig/network/routes,ifroute-*

TCP/IP 封包的靜態路由在此決定。各種系統工作所需的所有靜態路由可以在 /etc/sysconfig/network/routes 檔案中輸入:路由至主機、透過閘道的路由至主機,及路由至網路。針對需要個別路由的每個介面,定義其他的組態檔:/etc/sysconfig/network/ifroute-*。以介面的名稱取代 *。在路由組態檔中的項目看起來就像這樣:

# Destination     Dummy/Gateway     Netmask            Device
#
127.0.0.0         0.0.0.0           255.255.255.0      lo
204.127.235.0     0.0.0.0           255.255.255.0      eth0
default           204.127.235.41    0.0.0.0            eth0
207.68.156.51     207.68.145.45     255.255.255.255    eth1
192.168.0.0       207.68.156.51     255.255.0.0        eth1

路由的目的地是在第一個資料欄。這個資料欄可能包含網路或主機的 IP 位址,這是指「可到達的」名稱伺服器、完整合格的網路或主機名稱。

第二個資料欄包含預設的閘道或是可以存取主機或網路的閘道。第三個資料欄包含在閘道後面的網路或主機的網路遮罩。例如,遮罩為 255.255.255.255,供在閘道後面的主機使用。

第四欄只與連線至本地主機的網路相關,例如迴路、乙太網路、ISDN、PPP 以及虛擬設備。必須在這裏輸入設備名稱。

第五欄 (可選) 可指定路由的類型。不需要的欄位必須包含 - 減號,以確保解析程式可正確解譯指令。如需詳細資訊,請參閱 routes(5) 線上文件。

18.6.1.5. /etc/resolv.conf

主機所屬的領域指定於此檔案 (關鍵字 search);另外也會列出要存取的名稱伺服器位址的狀態 (關鍵字 nameserver)。可以指定多個領域名稱。解析不完整的名稱時,會嘗試附加個別 search 項目產生一個名稱。 透過輸入數行且每行都以 nameserver 開頭的方法,可使用多個名稱伺服器。在註解前加上 # 符號。YaST 在此檔案中輸入指定名稱伺服器。範例 18.5, "/etc/resolv.conf" 顯示出 /etc/resolv.conf 有可能的樣子。

範例 18.5. /etc/resolv.conf


# Our domain
search example.com
#
# We use sun (192.168.0.20) as nameserver
nameserver 192.168.0.20

一些如 pppd (wvdial)、ipppd (isdn)、dhcp (dhcpcddhclient)、pcmciahotplug 之類的服務會修改檔案 /etc/resolv.conf,方法是使用程序檔 modify_resolvconf。如果檔案 /etc/resolv.conf 已經由此程序檔暫時修改,它會包含預先定義的註解,提供的資訊包含修改它的服務、原始檔案的備份位置以及如何關閉自動修改機制。如果數次修改 /etc/resolv.conf,檔案會以巢狀形式包含所作的修改。即使反轉時使用與修改順序不同的順序,還是可以完全反轉此程序。需要這種彈性的服務包括 isdnpcmciahotplug

如果沒有以正常的方式終止服務,可以使用 modify_resolvconf 還原原始檔。另外,在系統開機時,會執行檢查,看看是否有沒有清理、已修改的 resolv.conf (例如,系統當機後),在這種情況下,會還原原始 (未修改) 的 resolv.conf

YaST 使用指令 modify_resolvconf check 找出是否已修改 resolv.conf,接著將警告使用者還原檔案會遺失所有變更。除此之外,YaST 不會依靠 modify_resolvconf,意即會透過 YaST 變更 resolv.conf 的影響與手動變更的影響是一樣的。無論是哪種情形,變更永遠是有效的。上述提及的服務所需的修改只是暫時的。

18.6.1.6. /etc/hosts

在此檔中 (請參閱 範例 18.6, "/etc/hosts"),IP 位址是指定給主機名稱。如果沒有執行任何名稱伺服器,將使用此 IP 連線設定的所有主機將列示於此。對於每個主機,分別在檔案中輸入一行包含 IP 位址、完整主機名稱及主機名稱的項目。IP 位址必須在行的開頭,然後以空格和定位點分隔這些項目。註解的前面永遠是 # 符號。

範例 18.6. /etc/hosts


127.0.0.1 localhost
192.168.0.20 sun.example.com sun
192.168.0.0 earth.example.com earth

18.6.1.7. /etc/networks

在此檔中,網路名稱會轉換為網路位址。格式與 hosts 檔案格式相似,但是網路名稱在位址前面。請參閱 範例 18.7, "/etc/networks"

範例 18.7. /etc/networks


loopback     127.0.0.0
localnet     192.168.0.0

18.6.1.8. /etc/host.conf

名稱解析--透過解析器庫分析主機和網路的名稱--由此檔案收集。該檔案僅用於與 libc4 或 libc5 連結的程式。對於目前的 glibc 程式,請參閱 /etc/nsswitch.conf 中的設定。每個參數必須永遠是獨立一行。註解的前面是 # 符號。表格 18.6, "/etc/host.conf 的參數" 顯示出可用的參數。/etc/host.conf 範例是顯示在 範例 18.8, " /etc/host.conf "

表格 18.6. /etc/host.conf 的參數

order hosts, bind

指定針對名稱解析存取服務的順序。可用的引數為 (以空格或是逗號分隔):

hosts:搜尋 /etc/hosts 檔案

bind:存取名稱伺服器

NIS:使用 NIS

multi on/off

定義在 /etc/hosts 中所輸入的主機是否可以有多個 IP 位址。

nospoof on spoofalert on/off

這些參數會影響名稱伺服器 spoofing,但除此之外,並不會對網路組態有任何影響。

trim domainname

指定的領域名稱在主機名稱解析後會與主機名稱分隔 (只要主機名稱包括領域名稱)。只有在本地領域分離出來的名稱位於 /etc/hosts 檔案,但是仍然使用附加的領域名稱進行辨識時,這個選項才有用。

範例 18.8. /etc/host.conf


# We have named running
order hosts bind
# Allow multiple addrs
multi on

18.6.1.9. /etc/nsswitch.conf

GNU C Library 2.0 的介紹伴隨名稱服務切換 (NSS,Name Service Switch) 的介紹。詳細資訊請參閱 nsswitch.conf(5) 一文和GNU C Library 參考手冊

查詢的順序定義於檔案 /etc/nsswitch.confnsswitch.conf 範例是顯示在 範例 18.9, "/etc/nsswitch.conf"。註解從 # 符號開始。在此範例中,hosts 資料庫下的項目表示要求是透過 DNS 傳送到 /etc/hosts (files) (請參閱 章 20, 領域名稱系統)。

範例 18.9. /etc/nsswitch.conf


passwd:     compat
group:      compat

hosts:      files dns
networks:   files dns

services:   db files
protocols:  db files

netgroup:   files
automount:  files nis

NSS 上可用的「資料庫」列示於 表格 18.7, "透過 /etc/nsswitch.conf 的可用資料庫"。此外,將來應該還有 automountbootparamsnetmasks、和 publickey NSS 資料庫的組態選項是列在 表格 18.8, "NSS「資料庫」的組態選項"

表格 18.7. 透過 /etc/nsswitch.conf 的可用資料庫

aliases

sendmail 所執行的郵件別名;請參閱 man 5 aliases

ethers

乙太網路位址。

group

getgrent 所使用的使用者群組。請參閱 group 的 man 頁面。

hosts

gethostbyname 及類似功能所使用的主機名稱與 IP 位址。

netgroup

在網路中有效的主機與使用者清單,以利控制存取權限,請參閱 netgroup(5) 一文。

networks

getnetent 所使用的網路名稱與位址。

passwd

getpwent 所使用的使用者密碼;請參閱 passwd(5) 一文。

protocols

getprotoen 所使用的網路通訊協定;請參閱 protocols(5) 一文。

rpc

getrpcbyname 及類似功能所使用的遠端程序呼叫名稱與位址。

services

getservent 使用的網路服務。

shadow

getspnam 所使用的使用者遮蔽密碼;請參閱 shadow(5) 一文。

表格 18.8. NSS「資料庫」的組態選項

files

直接存取檔案,例如 /etc/aliases

db

透過資料庫存取

nisnisplus

NIS,請參閱 章 21, 使用 NIS

dns

只能做為 hostsnetworks 的延伸

compat

只能做為 passwdshadow 以及 group 的延伸

18.6.1.10. /etc/nscd.conf

此檔案用來設定 nscd (名稱服務快取精靈)。請參閱 nscd(8)nscd.conf(5)。 依預設,passwdgroups 的系統項目是由 nscd 快取。這對於目錄服務 (如 NIS 和 LDAP) 的效能而言是很重要的,否則每次存取名稱或群組時都需要使用網路連線。預設是不會快取 hosts,因為 nscd 快取主機的機制會造成本地系統無法信任轉寄以及反向查詢檢查。不要要求 nscd 快取名稱,而是設定快取 DNS 伺服器。

如果啟用 passwd 的快取,通常需要 15 秒,才能辨識新增的本地使用者。使用指令 rcnscd restart 重新啟動 nscd,以縮短這段等待時間。

18.6.1.11. /etc/HOSTNAME

這是沒有附加領域名稱的主機名稱。機器開機時數個程序檔會讀取該檔案。它可以只包含一行,其中設定了主機名稱。

18.6.2. 啟動程序檔

除了上述的組態檔之外,還有在機器開機時載入網路程式的各種程序檔。只要系統切換到其中一個 multiuser runlevels,就會啟動這些程序檔。在 表格 18.9, "網路程式的一些啟動程序檔" 中提供了一些程序檔的說明。

表格 18.9. 網路程式的一些啟動程序檔

/etc/init.d/network

此程序檔會處理網路介面的組態。硬體必須先由 /etc/init.d/coldplug (透過 hotplug) 起始化。如果沒有啟動 network 服務,透過熱插拔插入網路介面時,將無法執行它們。

/etc/init.d/inetd

啟動 xinetd。xinetd 可用來使伺服器服務供系統使用。例如,只要開啟 FTP 連線,它即可啟動 vsftpd。

/etc/init.d/portmap

啟動 RPC 伺服器所需的 portmapper,例如 NFS 伺服器。

/etc/init.d/nfsserver

啟動 NFS 伺服器。

/etc/init.d/sendmail

控制傳送郵件的程序。

/etc/init.d/ypserv

啟動 NIS 伺服器。

/etc/init.d/ypbind

啟動 NIS 用戶端。