網路軟體的手動組態應該永遠是最後的替代方案。建議使用 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.0
或 wlan-id-00:05:4e:42:31:7a
(MAC 位址)。
若要指定特定網路組態到任何特定類型的卡 (一次僅能插入一種) 而不是特定卡,請選取較不特定的組態名稱。例如,bus-pcmcia
可以用於所有 PCMCIA 卡。在另一方面,之前的介面類型會限制名稱。例如,wlan-bus-usb
可以指定給連接到 USB 埠的 WLAN 卡。
系統永遠使用最佳描述介面或提供介面之設備的組態。搜尋最適用組態是由 getcfg 處理的。getcfg 的輸出會傳達可以用來描述設備的所有資訊。有關組態名稱規格的詳細資料,請參閱 getcfg 的手冊頁。
透過描述的方法,即使網路設備不一定永遠以相同的順序啟始化,網路介面還是可以具有正確的組態設定。不過,介面的名稱仍然取決於啟始化順序。有兩種方式可以確保確實存取特定網路卡介面:
getcfg-interface
傳回相關聯網路介面的名稱。因此,可以輸入一部份的組態名稱 (例如,防火牆、dhcpd、路由、各種虛擬網路介面 (通道)),取代介面名稱,因為這種名稱並不是永久不變的。
configuration name
永久介面名稱會自動指定給每個介面。您可以自行調整以符合您的需要。建立介面名稱時,請依照 /etc/udev/rules.d/30-net_persistent_names.rules
中概述的方式執行。然而,永久名稱 pname
不能與核心自動指定的名稱相同。所以,不允許 eth*
、tr*
、wlan*
、qeth*
、iucv*
等名稱。相反地,請使用 net*
或是 external
、internal
、dmz
之類的描述名稱。必須確定不要重複使用相同的介面名稱。介面名稱中可用的字元僅限於 [a-zA-Z0-9]
。永久名稱僅能在註冊後立即指定給介面,這表示必須重新載入網路卡的驅動程式或執行 hwup
。針對此用途,僅使用指令 rcnetwork device description
restart
是不夠的。
![]() | 使用永久介面名稱 |
---|---|
永久介面名稱的使用尚未測試於所有方面。因此,一些應用程式可能無法自由地處理選取的介面名稱。 |
ifup 需要現有介面,因為它不會啟始化硬體。硬體的啟始化是由指令 hwup (由 hotplug 或 coldplug 執行) 處理的。啟始化設備時,會透過 hotplug 自動為新介面執行 ifup,如果開始模式是 onboot
、hotplug
或 auto
,就會設定介面,而且會啟動 network 服務。之前,是使用指令 ifup
來觸發硬體啟始化。現在已經反轉此程序。首先,會啟始化硬體元件,接著是所有其他的動作。採取這種方式,則永遠可以使用現有的組態集,儘可能以最佳的方式設定不同數目的設備。
interfacename
表格 30.5 「手動網路組態程序檔」總結了與網路組態相關的最重要程序檔。只要可能,會依硬體和介面區分程序檔。
表格 30.5. 手動網路組態程序檔
組態階段 | 指令 | 函數 |
---|---|---|
硬體 | hw{up,down,status} |
|
介面 | getcfg |
getcfg 可以用來查詢與組態名稱或硬體描述相關聯的介面名稱。詳細資訊請參閱 |
介面 | if{up,down,status} |
|
有關熱插拔和永久設備名稱的詳細資訊,請參閱第 24 章「使用 udev 進行動態核心設備管理」。
本節提供網路組態檔的綜覽,並說明其用途和使用的格式。
這些檔案包含網路卡及其他設備的硬體組態;其中包含所需的參數,如核心模組、啟動模式和程序檔關聯。詳細資訊請參閱 hwup 的手冊頁。無論現有硬體為何,啟動 coldplug 時會套用 hwcfg-static-*
組態。
這些檔案包含網路介面的組態;其中包含啟動模式和 IP 位址等資訊。可以使用的參數請參閱 ifup
的手冊頁。此外,如果一般設定僅用於一個介面,則檔案 dhcp
、wireless
和 config
中的所有變數都可以用於 ifcfg-*
檔案。
►zseries:
IBM System z 不支援 USB。介面檔名稱和網路別名包含 qeth
等 System z 專屬元件。
◄
檔案 config
包含 ifup、ifdown、和 ifstatus 行為的一般設定;dhcp
則包含無線區域網路介面卡之 DHCP 和 wireless
的設定。所有三個組態檔中的變數都已註解,而且可以在 ifcfg-*
檔案中使用,以更高優先順序處理。
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)
線上文件。
主機所屬的網域指定於此檔案 (關鍵字 search
);另外也會列出要存取的名稱伺服器位址的狀態 (關鍵字 nameserver
)。可以指定多個領域名稱。解析不完整的名稱時,會嘗試附加個別 search
項目產生一個名稱。透過輸入數行且每行都以 nameserver
開頭的方法,可使用多個名稱伺服器。在註解前加上 #
符號。YaST 在此檔案中輸入指定名稱伺服器。範例 30.5 「/etc/resolv.conf
」 顯示出 /etc/resolv.conf
可能的樣子。
範例 30.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 (dhcpcd 和 dhclient)、pcmcia 及 hotplug 之類的服務會修改檔案 /etc/resolv.conf
,方法是使用程序檔 modify_resolvconf
。如果檔案 /etc/resolv.conf
已經由此程序檔暫時修改,它會包含預先定義的註解,提供的資訊包含修改它的服務、原始檔案的備份位置以及如何關閉自動修改機制。如果數次修改 /etc/resolv.conf
,檔案會以巢狀形式包含所作的修改。即使反轉時使用與修改順序不同的順序,還是可以完全反轉此程序。需要這種彈性的服務包括 isdn、pcmcia、hotplug。
如果沒有以正常的方式終止服務,可以使用 modify_resolvconf
還原原始檔。另外,在系統開機時,會執行檢查,看看是否有沒有清理、已修改的 resolv.conf
(例如,系統當機後),在這種情況下,會還原原始 (未修改) 的 resolv.conf
。
YaST 使用指令 modify_resolvconf check
找出是否已修改 resolv.conf
,接著將警告使用者還原檔案會遺失所有變更。除此之外,YaST 不會依靠 modify_resolvconf
,意即會透過 YaST 變更 resolv.conf
的影響與手動變更的影響是一樣的。無論是哪種情形,變更永遠是有效的。上述提及的服務所需的修改只是暫時的。
在此檔中 (請參閱 範例 30.6 「/etc/hosts
」),IP 位址是指定給主機名稱。如果沒有執行任何名稱伺服器,將使用此 IP 連接設定的所有主機將列示於此。對於每個主機,分別在檔案中輸入一行包含 IP 位址、完全合法的主機名稱及主機名稱的項目。IP 位址必須在行的開頭,然後以空格和定位點分隔這些項目。註解的前面永遠是 #
符號。
範例 30.6. /etc/hosts
127.0.0.1 localhost 192.168.0.20 sun.example.com sun 192.168.0.1 earth.example.com earth
名稱解析,即透過解析程式庫 (Resolver Library) 翻譯主機及網路名稱,是由此檔案控制的。該檔案僅用於與 libc4 或 libc5 連結的程式。對於目前的 glibc 程式,請參閱 /etc/nsswitch.conf
中的設定。每個參數必須永遠是獨立一行。註解的前面是 #
符號。表格 30.6 「/etc/host.conf 的參數」 顯示出可用的參數。
/etc/host.conf
範例是顯示在 範例 30.8 「
/etc/host.conf
」。
表格 30.6. /etc/host.conf 的參數
order hosts, bind | 指定名稱解析時服務的存取順序。可用的引數有 (以空格或逗號分隔): |
hosts:搜尋 | |
bind:存取名稱伺服器 | |
nis:使用 NIS | |
multi on/off | 定義在 |
nospoof on spoofalert on/off | 這些參數會影響名稱伺服器 spoofing,但除此之外,並不會對網路組態有任何影響。 |
trim domainname |
指定的網域名稱在主機名稱解析後會與主機名稱分隔 (只要主機名稱包括網域名稱)。只有在本地網域分離出來的名稱位於 |
GNU C Library 2.0 的介紹伴隨名稱服務切換 (NSS,Name Service Switch) 的介紹。詳細資訊請參閱 nsswitch.conf(5)
一文和GNU C Library 參考手冊。
查詢的順序定義於檔案 /etc/nsswitch.conf
。nsswitch.conf
範例是顯示在 範例 30.9 「/etc/nsswitch.conf
」。註解從 #
符號開始。在此範例中,hosts
資料庫下的項目表示要求是透過 DNS 傳送到 /etc/hosts
(files
) (請參閱第 33 章「網域名稱系統」)。
範例 30.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 上可用的「資料庫」列示於 表格 30.7 「透過 /etc/nsswitch.conf 的可用資料庫」。此外,將來應該還有 automount
、bootparams
、netmasks
、和 publickey
。 NSS 資料庫的組態選項將列於表格 30.8 「NSS「資料庫」的組態選項」。
表格 30.7. 透過 /etc/nsswitch.conf 的可用資料庫
|
|
| 乙太網路位址。 |
|
|
|
|
|
在網路中有效的主機與使用者清單,以利控制存取權限,請參閱 |
|
|
|
|
|
|
|
|
|
|
|
|
表格 30.8. NSS「資料庫」的組態選項
|
直接存取檔案,例如 |
| 透過資料庫存取 |
| NIS,請參閱第 35 章「使用 NIS」 |
|
只能做為 |
|
只能做為 |
此檔案用來設定 nscd (名稱服務快取精靈)。請參閱 nscd(8)
與 nscd.conf(5)
。依預設,passwd
與 groups
的系統項目是由 nscd 快取。這對於目錄服務 (如 NIS 和 LDAP) 的效能而言是很重要的,否則每次存取名稱或群組時都需要使用網路連線。預設是不會快取 hosts
,因為 nscd 快取主機的機制會造成本地系統無法信任轉寄以及反向查詢檢查。不要要求 nscd 快取名稱,而是設定快取 DNS 伺服器。
如果啟用 passwd
的快取,通常需要 15 秒,才能辨識新增的本地使用者。使用指令 rcnscd restart
重新啟動 nscd,縮短這段等待時間。
將組態寫入您的組態檔案之前,可先進行測試。若要設定測試組態,請使用 ip 指令。若要測試連接,請使用 ping 指令。同時也可使用較舊的組態工具,如 ifconfig 和 route。
ip、ifconfig 和 route 等指令會以不儲存組態檔案的方式直接變更網路組態。除非您將組態輸入正確的組態檔案,否則重新開機之後網路組態的變更就會遺失。
ip 這個工具可顯示設定路由、網路設備、原則路由和通道。它是用來取代 ifconfig 和 route 等舊工具用的。
ip 是非常複雜的工具。其一般語法是 ip
。您可使用下列物件:options
object
command
此物件代表網路設備。
此物件代表設備的 IP 位址。
此物件代表 ARP 或 NDISC 快取項目。
此物件代表路由表格項目。
此物件代表路由原則資料庫中的規則。
此物件代表多重廣播位址。
此物件代表多重廣播路由快取項目。
此物件表示 IP 上的通道。
若未提供指令,會使用預設指令,通常是 list。
您可使用 ip link set device_name
command
指令變更設備狀態。例如,若要停用設備 eth0,請輸入 ip link set eth0 down
。若要重新啟用,請使用 ip link set eth0 up
。
啟用設備之後,就可加以設定。若要設定 IP 位址,請使用 ip addr add
。例如,若要將介面 eth0 的 IP 位址以標準廣播 (選項 ip_address
+ dev device_name
brd
) 設定為 192.168.12.154/30,請輸入 ip addr add 192.168.12.154/30 brd + dev eth0
。
若要具備作用中連接,必須設定預設閘道。若要為您的系統設定閘道,請輸入 ip route get gateway_ip_address
。若要轉換某個 IP 位址,請使用 nat: ip route add nat ip_address
via other_ip_address
。
若要顯示所有設備,請使用 ip link ls。若只希望顯示運作中介面,請使用 ip link ls up。若要列印設備的介面統計值,請輸入 ip -s link ls device_name
。若要檢是您設備的位址,請輸入 ip addr。在 ip addr 的輸出中同時也可找到您設備的 MAC 位址相關資訊。若要顯示所有路由,請使用 ip route show。
如需使用 ip 的詳細資訊,請輸入 ip help
或參閱 ip(8)
線上文件。help
選項也適用於所有 ip 物件。例如,假設您要閱讀 ip addr
的說明,請輸入 ip addr help
。請在 /usr/share/doc/packages/iproute2/ip-cref.pdf
中尋找 ip 的手冊。
ping 指令是測試 TCP/IP 連接運作的標準工具。其使用 ICMP 通訊協定,將小型資料封包 ECHO_REQUEST 傳送至目的地主機,要求立即回應。如果有作用,ping 會顯示訊息,指示網路連結基本上是正常的。
ping 所做的不僅止於測試兩台電腦之間的連接狀態,它還可以提供某些有關於連接品質的基本資訊。您可在 範例 30.10 「指令 ping 的輸出」 中看到 ping 輸出的一些範例。倒數第二行包含已傳送封包數、遺失封包數、執行 ping 總時間等資訊。
對於目的地,可使用主機名稱或 IP 位址,例如 ping example.com
或 ping 130.57.5.75
。程式會持續傳送封包,直到您按下 Ctrl+C 為止。
若您只需要檢查連接功能性,您可以 -c
選項限定封包數目。例如,若要將 ping 限制在三個封包,請輸入 ping -c 3 192.168.0
。
範例 30.10. 指令 ping 的輸出
ping -c 3 example.com PING example.com (130.57.5.75) 56(84) bytes of data. 64 bytes from example.com (130.57.5.75): icmp_seq=1 ttl=49 time=188 ms 64 bytes from example.com (130.57.5.75): icmp_seq=2 ttl=49 time=184 ms 64 bytes from example.com (130.57.5.75): icmp_seq=3 ttl=49 time=183 ms --- example.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2007ms rtt min/avg/max/mdev = 183.417/185.447/188.259/2.052 ms
兩個封包之間的預設間隔為一秒。若要變更間隔,ping 提供了選項 -i
。例如,若要將 ping 間隔增加到十秒,請輸入 ping -i 10 192.168.0
。
在具備多網路設備的系統中,透過特定介面位址傳送 ping 非常實用。若要執行此功能,請使用所選設備名稱加上 -i
選項,例如 ping -I wlan1 192.168.0
。
如需使用 ping 的選項與詳細資訊,請輸入 ping -h
或參閱 ping (8)
線上文件。
ifconfig 是傳統網路設定工具。與 ip 相反,此指令只能用於介面組態。若您希望設定路由,請使用 route。
![]() | ifconfig 和 ip |
---|---|
ifconfig 這個程式已過時。請改用 ip。 |
無疑的,ifconfig 會顯示目前作用中介面的狀態。如同您在 範例 30.11 「ifconfig 指令的輸出」 中所見,ifconfig 具有排列整齊而詳盡的輸出。輸出第一行亦包含您設備的 MAC 位址、HWaddr
數值等資訊。
範例 30.11. ifconfig 指令的輸出
eth0 Link encap:Ethernet HWaddr 00:08:74:98:ED:51 inet6 addr: fe80::208:74ff:fe98:ed51/64 Scope:Link UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:634735 errors:0 dropped:0 overruns:4 frame:0 TX packets:154779 errors:0 dropped:0 overruns:0 carrier:1 collisions:0 txqueuelen:1000 RX bytes:162531992 (155.0 Mb) TX bytes:49575995 (47.2 Mb) Interrupt:11 Base address:0xec80 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:8559 errors:0 dropped:0 overruns:0 frame:0 TX packets:8559 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:533234 (520.7 Kb) TX bytes:533234 (520.7 Kb) wlan1 Link encap:Ethernet HWaddr 00:0E:2E:52:3B:1D inet addr:192.168.2.4 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::20e:2eff:fe52:3b1d/64 Scope:Link UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 RX packets:50828 errors:0 dropped:0 overruns:0 frame:0 TX packets:43770 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:45978185 (43.8 Mb) TX bytes:7526693 (7.1 Mb)
如需使用 ifconfig 的選項與詳細資訊,請輸入 ifconfig -h
或參閱 ifconfig (8)
線上文件。
route 是操作 IP 路由表格的程式。您可使用此指令檢是您的路由組態,並新增或移除路由。
![]() | route 與 ip |
---|---|
route 這個程式已過時。請改用 ip。 |
若您需要快速又易於理解的路由組態資訊以判別路由問題,route 是特別實用的工具。若要檢視您目前的路由組態,請以 root
身份輸入 route -n
。
範例 30.12. route -n 指令的輸出
route -n Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.20.0.0 * 255.255.248.0 U 0 0 0 eth0 link-local * 255.255.0.0 U 0 0 0 eth0 loopback * 255.0.0.0 U 0 0 0 lo default styx.exam.com 0.0.0.0 UG 0 0 0 eth0
如需使用 route 的選項與詳細資訊,請輸入 route -h
或參閱 route (8)
線上文件。
除了上述的組態檔之外,還有在機器開機時載入網路程式的各種程序檔。只要系統切換到其中一個 multiuser runlevels,就會啟動這些程序檔。在 表格 30.9 「網路程式的一些啟動程序檔」 中提供了一些程序檔的說明。
表格 30.9. 網路程式的一些啟動程序檔
這個程序檔可處理網路介面的組態。硬體必須先由 /etc/init.d/coldplug (透過 hotplug) 啟始化。如果沒有啟動 network 服務,透過熱插拔插入網路介面時,將無法執行它們。 | |
啟動 xinetd。xinetd 可以用來讓伺服器服務能夠在系統上使用。例如,只要開啟 FTP 連接,它即可啟動 vsftpd。 | |
啟動 RPC 伺服器 (如 NFS 伺服器) 所需的埠對應程式 (Portmapper)。 | |
啟動 NFS 伺服器。 | |
控制後置程序。 | |
啟動 NIS 伺服器。 | |
啟動 NIS 用戶端。 |