手動設定網路連線

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

檔核心偵測到網路卡並建立對應的網路介面時,它會根據探查到設備或載入核心模組的順序,為該設備指定名稱。只有在非常簡單或嚴密控制的硬體環境中,才可以預測預設核心設備的名稱。如果系統允許在執行時期新增或移除硬體,或是支援自動設定設備組態,則無法獲得核心在重新開機時指定的固定網路設備名稱。

但是,所有系統組態工具均依賴於永久的介面名稱。udev 解決了此問題。udev 永久網路產生器 (/lib/udev/rules.d/75-persistent-net-generator.rules) 會產生與硬體相符的規則 (預設使用其硬體位址),並為硬體指定一個永遠唯一的介面。網路介面的 udev 資料庫儲存在檔案 /etc/udev/rules.d/70-persistent-net.rules 中。該檔案中的每一行描述一個網路介面並指定其永久名稱。系統管理員可以透過編輯 NAME="" 項目來變更指定的名稱。您也可以使用 YaST 修改永久規則。

表格 20.5 「手動網路組態程序檔」 總結了與網路組態相關的最重要的程序檔。

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

指令

函數

ifup, ifdown, ifstatus

if 程序檔會啟動或停止網路介面,或傳回指定介面的狀態。如需詳細資訊,請參閱 ifup 手冊頁。

rcnetwork

rcnetwork 程序檔可用於啟動、停止或重新啟動所有網路介面 (或指定的網路介面)。停止、啟動或重新啟動網路介面時分別使用 rcnetwork stoprcnetwork startrcnetwork restart。若只需停止、啟動或重新啟動一個介面,請使用該命令,並在後面指定介面名稱,例如 rcnetwork restart eth0rcnetwork status 指令顯示介面的狀態、IP 位址以及 DHCP 用戶端是否正在執行。使用 rcnetwork stop-all-dhcp-clientsrcnetwork restart-all-dhcp-clients 可以停止或重新啟動在網路介面上執行的 DHCP 用戶端。


如需 udev 和永久設備名稱的詳細資訊,請參閱第 13 章「使用 udev 進行動態核心設備管理

組態檔案

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

/etc/sysconfig/network/ifcfg-*

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

如需 ifcfg.template 的相關資訊,請參閱第 20.6.1.2 節「/etc/sysconfig/network/config/etc/sysconfig/network/dhcp/etc/sysconfig/network/wireless

/etc/sysconfig/network/config/etc/sysconfig/network/dhcp/etc/sysconfig/network/wireless

檔案 config 包含 ifupifdownifstatus 行為的一般設定。dhcp 包含無線 LAN 卡之 DHCP 和 wireless 的設定。所有三個組態檔中的變數都已被註解。/etc/sysconfig/network/config 中的某些變數也可以在 ifcfg-* 檔案中使用,而且在這些檔案中它們的優先程度更高。/etc/sysconfig/network/ifcfg.template 檔案列出了可在永久介面中指定的變數。但是,/etc/sysconfig/network/config 的大多數變數都是全域變數,無法在 ifcfg 檔案中覆寫。例如,NETWORKMANAGERNETCONFIG_* 變數就是全域變數。

/etc/sysconfig/network/routes/etc/sysconfig/network/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) man 頁面。

/etc/resolv.conf

主機所屬的網域指定於此檔案 (關鍵字 search);另外也會列出要存取的名稱伺服器位址的狀態 (關鍵字 nameserver)。可以在檔案中指定多個網域名稱。解析不完整的名稱時,會嘗試附加個別 search 項目產生一個名稱。可以在多行中指定多個伺服器名稱,每個名稱均以 nameserver 開頭。備註前面標有 # 符號。範例 20.5 「/etc/resolv.conf 顯示了 /etc/resolv.conf 的格式。

不過,您不可手動編輯 /etc/resolv.conf。它是由 netconfig 程序檔產生的。若不想使用 YaST 來定義靜態 DNS 組態,請在 /etc/sysconfig/network/config 檔案中手動編輯適當的變數:NETCONFIG_DNS_STATIC_SEARCHLIST (用於查詢主機名稱的 DNS 網域名稱清單)、NETCONFIG_DNS_STATIC_SERVERS (用於查詢主機名稱的名稱伺服器 IP 位址清單)、NETCONFIG_DNS_FORWARDER (定義必須設定的 DNS 轉遞者的名稱)。若要使用 netconfig 停用 DNS 組態,請設定 NETCONFIG_DNS_POLICY=''。如需 netconfig 的詳細資訊,請參閱 man 8 netconfig

範例 20.5. /etc/resolv.conf

# Our domain
search example.com
#
# We use dns.example.com (192.168.1.116) as nameserver
nameserver 192.168.1.116

/sbin/netconfig

netconfig 是一個模組化工具,用於管理其他網路組態設定。它根據預先定義的規則,將靜態定義的設定與自動組態機制 (如 dhcp 或 ppp) 提供的設定進行合併。透過呼叫負責修改組態檔案和重新啟動服務或類似動作的 netconfig 模組,將必要的變更套用至系統。

netconfig 可以辨識三個主要動作。dhcp 或 ppp 等精靈使用 netconfig modifynetconfig remove 指令提供或移除 netconfig 的設定。使用者僅可使用 netconfig update 指令:

modify

netconfig modify 指令會修改目前的介面和服務特定的動態設定,並更新網路組態。Netconfig 會從標準輸入或從 --lease-file 檔案名稱選項指定的檔案讀取設定,並將它們儲存於內部,直到系統重新開機 (或執行下一個修改或移除動作) 為止。系統會覆寫同一個介面與服務組合的現有設定。介面由 -i 介面名稱參數來指定。服務由 -s 服務名稱參數來指定。

remove

netconfig remove 指令會移除修改動作為指定介面和服務組合提供的動態設定,並更新網路組態。介面由 -i 介面名稱參數來指定。服務由 -s 服務名稱參數來指定。

update

netconfig update 指令會使用目前的設定更新網路組態。當規則或靜態組態變更時可以使用此指令。如果只想更新指定的服務 (dnsnisntp),請使用 -m 模組類型參數。

netconfig 規則和靜態組態設定可透過手動方式定義,或使用 YaST 在 /etc/sysconfig/network/config 檔案中定義。自動組態工具 (如 dhcp 或 ppp) 提供的動態組態設定透過這些工具經由 netconfig modifynetconfig remove 動作直接傳送。NetworkManager 也可以使用 netconfig modifynetconfig remove 動作。NetworkManager 啟用時,netconfig (在 auto 規則模式中) 只會使用 NetworkManager 設定,忽略使用傳統 ifup 方法設定的任何其他介面中的設定。如果 NetworkManager 未提供任何設定,則使用靜態設定做為備用設定。系統不支援同時使用 NetworkManager 與傳統 ifup 方法。

如需 netconfig 的詳細資訊,請參閱 man 8 netconfig

/etc/hosts

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

範例 20.6. /etc/hosts

127.0.0.1 localhost
192.168.2.100 jupiter.example.com jupiter
192.168.2.101 venus.example.com venus

/etc/networks

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

範例 20.7. /etc/networks

loopback     127.0.0.0
localnet     192.168.0.0

/etc/host.conf

名稱解析,即透過解析程式庫 (Resolver Library) 翻譯主機及網路名稱,是由此檔案控制的。該檔案僅用於與 libc4 或 libc5 連結的程式。對於目前的 glibc 程式,請參閱 /etc/nsswitch.conf 中的設定。每個參數必須永遠是獨立一行。註解的前面是 # 符號。表格 20.6 「/etc/host.conf 的參數」 顯示出可用的參數。/etc/host.conf 範例是顯示在 範例 20.8 「/etc/host.conf

表格 20.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 檔案,但仍然使用附加的網域名稱進行辨識時,這個選項才有用。


範例 20.8. /etc/host.conf

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

/etc/nsswitch.conf

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

查詢的順序定義於檔案 /etc/nsswitch.confnsswitch.conf 範例是顯示在 範例 20.9 「/etc/nsswitch.conf。備註前面標有 # 符號。在此範例中,hosts 資料庫下的項目表示要求是透過 DNS 傳送到 /etc/hosts (files)。

範例 20.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 上可用的資料庫列示於 表格 20.7 「透過 /etc/nsswitch.conf 的可用資料庫」。此外,很快還會有 automountbootparamsnetmaskspublickey NSS 資料庫的組態選項將列於表格 20.8 「NSS資料庫的組態選項」

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

aliases

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

ethers

乙太網路位址。

group

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

hosts

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

netgroup

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

networks

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

passwd

getpwent 所使用的使用者密碼;請參閱 passwd(5) man 頁面。

protocols

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

rpc

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

services

getservent 使用的網路服務。

shadow

getspnam 所使用的使用者遮蔽密碼;請參閱 shadow(5) man 頁面。


表格 20.8. NSS資料庫的組態選項

files

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

db

透過資料庫存取

nisnisplus

NIS,請參閱第 3 章「Using NIS」 (↑Security Guide)

dns

只能做為 hostsnetworks 的延伸

compat

只能做為 passwdshadowgroup 的延伸


/etc/nscd.conf

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

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

/etc/HOSTNAME

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

測試與組態

將組態寫入您的組態檔案之前,可先進行測試。若要設定測試組態,請使用 ip 指令。若要測試連接,請使用 ping 指令。同時也可使用較舊的組態工具,如 ifconfigroute

ipifconfigroute 指令會直接變更網路組態,不會將其儲存到組態檔案中。除非您將組態輸入正確的組態檔案,否則重新開機之後網路組態的變更就會遺失。

以 ip 設定網路介面

工具 ip 可顯示並設定路由、網路設備、規則路由和通道。

ip 是非常複雜的工具。其一般語法是 ip options object command。您可使用下列物件:

link

此物件代表網路設備。

address

此物件代表設備的 IP 位址。

neighbour

此物件代表 ARP 或 NDISC 快取項目。

route

此物件代表路由表格項目。

rule

此物件代表路由原則資料庫中的規則。

maddress

此物件代表多重廣播位址。

mroute

此物件代表多重廣播路由快取項目。

tunnel

此物件表示 IP 上的通道。

若未提供指令,會使用預設指令 (通常是 list)。

您可使用 ip link set device_name command 指令變更設備狀態。例如,若要停用設備 eth0,請輸入 ip link set eth0 down。若要重新啟用,請使用 ip link set eth0 up

啟用設備之後,就可加以設定。若要設定 IP 位址,請使用 ip addr add ip_address + dev device_name。例如,若要將介面 eth0 的 IP 位址以標準廣播 (選項 brd) 設定為 192.168.12.154/30,請輸入 ip addr add 192.168.12.154/30 brd + dev eth0

若要具備作用中連接,必須設定預設閘道。若要為您的系統設定閘道,請輸入 ip route add 閘道 IP 位址。若要轉換某個 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) man 頁面。help 選項也適用於所有 ip 物件。例如,假設您要閱讀 ip addr 的說明,請輸入 ip addr help。請在 /usr/share/doc/packages/iproute2/ip-cref.pdf 中尋找 ip 的手冊。

以 ping 測試連接

ping 指令是測試 TCP/IP 連接運作的標準工具。其使用 ICMP 通訊協定,將小型資料封包 ECHO_REQUEST 傳送至目的地主機,要求立即回應。如果有作用,ping 會顯示訊息,指示網路連結基本上是正常的。

ping 所做的不僅止於測試兩台電腦之間的連接狀態,它還可以提供某些有關於連接品質的基本資訊。您可在 範例 20.10 「指令 ping 的輸出」 中看到 ping 輸出的一些範例。倒數第二行包含已傳送封包數、遺失封包數、執行 ping 總時間等資訊。

對於目的地,可使用主機名稱或 IP 位址,例如 ping example.comping 192.168.3.100。程式會持續傳送封包,直到您按下 Ctrl+C 為止。

若您只需要檢查連接功能性,您可以 -c 選項限定封包數目。例如,若要將 ping 限制於三個封包,請輸入 ping -c 3 example.com

範例 20.10. 指令 ping 的輸出

ping -c 3 example.com
PING example.com (192.168.3.100) 56(84) bytes of data.
64 bytes from example.com (192.168.3.100): icmp_seq=1 ttl=49 time=188 ms
64 bytes from example.com (192.168.3.100): icmp_seq=2 ttl=49 time=184 ms
64 bytes from example.com (192.168.3.100): 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 example.com

在具備多網路設備的系統中,透過特定介面位址傳送 ping 非常實用。若要實現此功能,請使用 -I 選項並提供所選設備的名稱,例如 ping -I wlan1 example.com

如需使用 ping 的選項與詳細資訊,請輸入 ping -h 或參閱 ping (8) man 頁面。

以 ifconfig 設定網路

ifconfig 是傳統網路設定工具。與 ip 相反,此指令只能用於介面組態。若您希望設定路由,請使用 route

[Note]ifconfig 和 ip

ifconfig 這個程式已過時。請改用 ip。

無疑的,ifconfig 會顯示目前作用中介面的狀態。如同您在 範例 20.11 「ifconfig 指令的輸出」 中所見,ifconfig 具有排列整齊而詳盡的輸出。輸出的第一行亦包含您設備的 MAC 位址 (HWaddr 的值) 等相關資訊。

範例 20.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) man 頁面。

以 route 設定路由

route 是操作 IP 路由表格的程式。您可使用此指令檢是您的路由組態,並新增或移除路由。

[Note]route 與 ip

route 這個程式已過時。請改用 ip。

若您需要快速又易於理解的路由組態資訊以判別路由問題,route 是特別實用的工具。若要檢視您目前的路由組態,請以 root 身分輸入 route -n

範例 20.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) man 頁面。

啟動程序檔

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

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

/etc/init.d/network

此程序檔會處理網路介面的組態。如果未啟動網路服務,則不會實作任何網路介面。

/etc/init.d/xinetd

啟動 xinetd。xinetd 可以用來讓伺服器服務能夠在系統上使用。例如,只要開啟 FTP 連接,它即可啟動 vsftpd。

/etc/init.d/rpcbind

啟動可將 RPC 程式號碼轉換為通用位址的 rpcbind 公用程式。NFS 伺服器等 RPC 服務需要用到。

/etc/init.d/nfsserver

啟動 NFS 伺服器。

/etc/init.d/postfix

控制後置程序。

/etc/init.d/ypserv

啟動 NIS 伺服器。

/etc/init.d/ypbind

啟動 NIS 用戶端。