跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 管理指南 / 系統 / 基本網路功能
適用範圍 SUSE Linux Enterprise Server 12 SP5

16 基本網路功能

Linux 提供所有必要的網路工具及功能,以整合到所有類型的網路結構。可以透過 YaST 設定使用網路卡進行的網路存取。也可使用手動方式來設定組態。本章僅討論基本機制及相關的網路組態檔案。

Linux 及其他 Unix 作業系統使用 TCP/IP 通訊協定。它不是單一網路通訊協定,而是能夠提供各種服務的網路通訊協定家族的一員。TCP/IP 通訊協定家族中的數種通訊協定中所列的通訊協定用於透過 TCP/IP 在兩個機器之間交換資料。由 TCP/IP 組合而成的各個網路形成了一個跨國網路,也稱為網際網路

RFC 代表要求建議 (Request for Comments)。RFC 是描述作業系統及其應用程式的各種網際網路通訊協定和執行程序的文件。RFC 文件描述網際網路通訊協定的設定。如需有關 RFC 的詳細資訊,請參閱 http://www.ietf.org/rfc.html

TCP/IP 通訊協定家族中的數種通訊協定
TCP

傳輸控制通訊協定︰連接導向的安全通訊協定。傳輸的資料首先由應用程式當做資料流傳送出去,然後再由作業系統轉換為適當格式。資料送達目的地主機的相關應用程式時,使用的仍是最初傳送的原始資料流格式。TCP 可以判斷在傳輸期間是否有遺失或打亂了任何資料。只要是資料順序很重要的地方,就會執行 TCP。

UDP

使用者資料包通訊協定︰無連接、不安全的通訊協定。要傳送的資料以應用程式產生的封包形式加以傳送。不會保證資料抵達接收者時的順序,而且可能會發生資料遺失的情況。UDP 適用以記錄為導向的應用程式。它的特點是延遲時間比 TCP 短。

ICMP

網際網路控制訊息通訊協定︰這不是用於最終使用者的通訊協定,而是用來發出錯誤報告的特殊控制通訊協定,能夠控制參與 TCP/IP 資料傳輸的機器的行為。此外,它還提供特殊的回音模式,可以使用 ping 程式檢視。

IGMP

網際網路群組管理通訊協定︰此通訊協定在實做 IP 多點廣播時控制機器行為。

圖形 16.1 「TCP/IP 的簡化層模型」 中所顯示,資料交換發生在不同層。實際的網路層是透過 IP (網際網路通訊協定,Internet Protocol) 進行不安全的資料傳輸。在 IP 的上方,TCP (傳輸控制通訊協定,Transmission Control Protocol) 可以保證資料傳輸某種程度的安全性。IP 層由基礎硬體相依通訊協定提供支援,例如乙太網路。

TCP/IP 的簡化層模型
圖 16.1︰ TCP/IP 的簡化層模型

圖表提供每層的一或兩個範例。層的順序是依據抽象階層 (abstraction level)。最低層非常靠近硬體。不過,最上層對硬體而言幾乎是完全抽象的。每層都有自己的特殊功能。這些特殊功能通常隱含於其描述中。資料連結層及實體層代表所使用的實體網路 (例如乙太網路)。

幾乎所有的硬體通訊協定都是採用封包導向模式。要傳輸的資料會收集在封包中 (無法一次全部傳送)。TCP/IP 封包的大小上限約為 64 KB。由於網路硬體可能有所限制,因此封包一般都很小。乙太網路上資料封包的大小上限約為 1500 個位元組。在乙太網路上傳送資料時,TCP/IP 封包的大小受此數量限制。如果傳送更多資料,則需要由作業系統傳送更多資料封包。

因為每層有自己指定的功能,關於每層的其他資訊必須儲存於資料封包中。這些資訊放在封包的「標頭」中。每層皆在產生的封包前端附加小的資料區塊,稱為通訊協定標頭。有關在乙太網路纜線上傳送的 TCP/IP 資料封包範例,請參閱圖形 16.2 「TCP/IP 乙太網路封包」中的說明。proof sum 位於封包結尾,不在開頭處。這樣可幫助網路硬體簡化程序。

TCP/IP 乙太網路封包
圖 16.2︰ TCP/IP 乙太網路封包

當應用程式在網路上傳送資料時,資料會經過每一層,除實體層外,全部在 Linux 核心執行。每層都負責準備資料使其能夠傳送到下一層。最底層最後要負責傳送資料。接收到資料時則反轉執行整個程序。就如同洋蔥的層級一般,在每層中,會從已傳輸的資料上移除通訊協定標頭。最後,傳輸層負責讓目的地端的應用程式可以使用資料。以這種方式,每層僅直接與上下兩層通訊。對於應用程式而言,無論資料是透過 100 MBit/s FDDI 網路還是透過 56-Kbit/s 數據機纜線進行傳輸,都沒有關係。同樣地,對於資料線而言,只要封包的格式正確,無論傳送的是哪種類型的資料也是無關的。

16.1 IP 位址與路由

在此節中的討論僅限於 IPv4 網路。如需有關 IPv6 通訊協定 (IPv4 的後繼者) 的資訊,請參閱第 16.2 節 「IPv6 --下一代的網際網路」

16.1.1 IP 位址

網際網路上的每台電腦都有唯一的 32 位元位址。這些 32 位元 (或 4 位元組) 通常按範例 16.1 「寫入 IP 位址」中第二列所述寫入。

範例 16.1︰ 寫入 IP 位址
IP Address (binary):  11000000 10101000 00000000 00010100
IP Address (decimal):      192.     168.       0.      20

採用十進位格式,四位元組以十進位數字系統撰寫,以句號分隔。IP 位址是指定給主機或網路介面。每個 IP 位址在全球範圍內只能使用一次。此規則有例外狀況,但下文中並未提及。

IP 位址中的點表示階層系統。直到 1990 年代,IP 位址仍嚴格地以類別加以分類。然而,事實證明此系統太過死板,因此已停止使用。現在,則是使用無類別路由 (classless routing),即 CIDR (無類別網域間路由,classless interdomain routing)。

16.1.2 網路遮罩與路由

網路遮罩用於定義子網路的位址範圍。如果兩台主機位於相同的子網路內,它們之間可直接連接。如果它們不在同一個子網路內,則需要用於處理子網路所有流量之閘道的位址。若要檢查兩個 IP 位址是否位於同一子網路,只要使用網路遮罩 AND 兩個位址。如果結果相同,兩個 IP 位址位於同一個網路。如果不同,遠端的 IP 位址,即為遠端介面,只能透過閘道來通訊。

若要瞭解網路遮罩如何作用,請參閱範例 16.2 「連結 IP 位址到網路遮罩」。網路遮罩由 32 位元組成,可辨認 IP 位址有多少屬於網路。這些位元為 1 標示 IP 位址中的對應位元,即表示為同屬一個網路。對於所有值為 0 的位元,標示其屬於子網路內。這表示愈多位元為 1,子網路就愈小。因為網路遮罩永遠由多個連續的 1 位元組成,也可以計算網路遮罩內的位元數。在範例 16.2 「連結 IP 位址到網路遮罩」中,第一個 24 位元的網路也可寫成 192.168.0.0/24

範例 16.2︰ 連結 IP 位址到網路遮罩
IP address (192.168.0.20):  11000000 10101000 00000000 00010100
Netmask   (255.255.255.0):  11111111 11111111 11111111 00000000
---------------------------------------------------------------
Result of the link:         11000000 10101000 00000000 00000000
In the decimal system:           192.     168.       0.       0

IP address (213.95.15.200): 11010101 10111111 00001111 11001000
Netmask    (255.255.255.0): 11111111 11111111 11111111 00000000
---------------------------------------------------------------
Result of the link:         11010101 10111111 00001111 00000000
In the decimal system:           213.      95.      15.       0

舉另外一個例子︰使用相同乙太網路纜線連接的所有機器,通常位於同一個子網路中,而且可以直接存取。即使以交換器或橋接器實際分配子網路時,仍然可以直接連接這些主機。

位於本地子網路外的 IP 位址只能在設定目標網路的閘道時,才能與本地通訊。在大部分的狀況下,只能有一個閘道來處理所有對外的通訊。但是,您也可以為不同的子網路,設定多個閘道。

如果已經設定閘道,所有的外部 IP 封包會傳送到適當的閘道。然後此閘道會試圖以同樣方式傳送封包--主機對主機--直到連結到目標主機或封包 TTL (持續時間) 過期。

特定位址
基本網路位址

這是網路遮罩「及」網路中的任何位址,如 Result 下的範例 16.2 「連結 IP 位址到網路遮罩」 所顯示。此位址不能指定給任何主機。

廣播位址

這可以解釋為︰存取此子網路中的所有主機。。若要產生此位址,網路遮罩會以二進位格式反轉,連結到具有邏輯 OR 的基本網路位址。因此以上範例會得到 192.168.0.255。此位址無法指派給任何主機。

本地主機

位址 127.0.0.1 是指定到每個主機上的迴路裝置(loopback device)。使用此位址以及完整迴路網路 127.0.0.0/8 中的所有位址 (使用 IPv4 定義),可以設定與您自己機器之間的連接。如果使用 IPv6,則只有一個迴路位址 (::1)。

因為 IP 位址在全世界必須是唯一的,您不能選取隨機位址。如果要設立私人 IP 結構的網路,有三種位址網域可以使用。這些將無法從其他網際網路取得連結,因為他們無法透過網路傳送。這些位址網域在 RFC 1597 指定並列於 表格 16.1 「私人 IP 位址網域」 中。

表 16.1︰ 私人 IP 位址網域

網路/網路遮罩

網域

10.0.0.0/255.0.0.0

10.x.x.x

172.16.0.0/255.240.0.0

172.16.x.x172.31.x.x

192.168.0.0/255.255.0.0

192.168.x.x

16.2 IPv6 --下一代的網際網路

重要
重要:IBM Z:IPv6 支援

IBM Z 硬體的 CTC 和 IUCV 網路連接不支援 IPv6。

由於全球資訊網 (WWW) 的出現,過去十五年內,越來越多的電腦透過 TCP/IP 進行通訊,網際網路的規模發生了爆炸性的增長。自從 CERN 的 Tim Berners-Lee (http://public.web.cern.ch) 於 1990 年發明 WWW 以來,網際網路主機的數量從幾千台成長為幾百萬台。

如前面所述,IPv4 位址僅由 32 個位元組成。而且,損失了一些 IP 位址 — 由於組織網路的方式,使得這些 IP 位址無法使用。您的子網路中可用的位址數量是位元數的平方減 2。例如,子網路有 2 個、6 個或 14 個位址可用。例如,如果要連接 128 個主機到網際網路,則子網路需要 256 個 IP 位址,但是其中只有 254 個可用,因為子網路結構本身需要用掉兩個 IP 位址︰廣播與基本網路位址。

在目前的 IPv4 通訊協定之下,DHCP 或 NAT (網路位址轉譯,Network Address Translation) 是典型的機制,可用來避免位址可能不足的問題。搭配保持私人和公用位址空間分開的方式,能夠減輕短少的情形。其中產生的問題是在於其組態,設定麻煩且難於維護。若要在 IPv4 網路中設定主機,需要一些位址項目,如主機自己的 IP 位址、子網路遮罩、閘道位址,可能還需要名稱伺服器位址。您必須知道所有這些項目,且無法從其他地方取得。

透過 IPv6,位址短少及繁複組態的情形應該都成為過去式了。以下小節說明更多 IPv6 改善的部分及它帶來的好處,還有關於從舊通訊協定轉移到新通訊協定的資訊。

16.2.1 優點

新通訊協定帶來的最重要、最顯而易見的改善,是能夠大量擴充可用的位址空間。IPv6 位址是由 128 個位元值組成,而不是傳統的 32 個位元。這樣提供了數以千兆的 IP 位址。

然而,IPv6 位址不僅是在長度方面與之前的位址不同;這些位置的內部結構也不同,可能包含有關系統及其所屬網路的更明確資訊。有關 IPv6 的詳細資訊,可以在 第 16.2.2 節 「定址類型與結構」 中找到。

以下列出了新通訊協定的其他優勢︰

自動設定

IPv6 讓網路能夠隨插即用(plug and play),表示新設定的系統不需經過任何手動設定,即可整合到 (區域) 網路。新主機使用其自動設定組態機制,從鄰近的路由器上可用的資訊取得自己的位址,依賴的是稱為「網路芳鄰探查」(Neighbor Discovery,ND) 的通訊協定。這個方法不需要管理員的介入,而且不需要維護分配位址的中央伺服器,這是 IPv4 的另一個優勢,因為自動位址分配需要 DHCP 伺服器。

但是,如果路由器連接到交換器,則路由器應傳送具有旗標的週期性通告,告知網路中的主機彼此如何進行互動。如需詳細資訊,請參閱 RFC 2462、radvd.conf(5) man 頁面以及 RFC 3315。

機動性

IPv6 能夠同時將數個位址指定給一個網路介面。這使得使用者能輕鬆地存取多個網路,可媲美行動電話服務公司提供的國際漫遊服務。當您出國時,進入相應區域後行動電話會自動登入國外服務,因此無論您身在何處,別人都可以用同一個號碼聯絡到您,您也可以像在國內一樣撥打電話。

安全通訊

使用 IPv4,網路安全性是附加的功能。IPv6 包括 IPSec 為其中一個核心功能,允許系統在安全的通道上進行通訊,避免網際網路上的外人竊聽。

反向相容性

實際上,不可能一次將整個網際網路從 IPv4 切換到 IPv6。因此關鍵在於,兩個通訊協定不僅能夠共存於網際網路上,而且能夠共存於一個系統中。使用相容位址 (IPv4 位址可以輕鬆轉換為 IPv6 位址) 和多個通道可以確保這一點。請參閱第 16.2.3 節 「IPv4 與 IPv6 的共存」。另外,系統可以仰賴「雙重堆疊 IP」(Dual Stack IP) 技術,同時支援這兩種通訊協定,這表示系統有兩個完全分開的網路堆疊,如此一來,兩種通訊協定版本不會相互干擾。

透過多點傳播自訂量身訂做的服務

利用 IPv4,有些服務 (如 SMB) 需要廣播它們的封包到區域網路上的所有主機。IPv6 使伺服器能夠透過多點傳播對主機定址 (即將多個主機做為群組的一部分定址),因而提供了更精細的方法。這種方法與透過廣播對所有主機定址,或透過單點傳播個別對每個主機定址均不同。定址為群組的主機,取決於具體的應用程式。例如,有些預先定義的群組可以定址所有名稱伺服器 (「所有名稱伺服器多點傳播群組」) 或所有路由器 (「所有路由器多點傳播群組」)。

16.2.2 定址類型與結構

如上所述,目前的 IP 通訊協定存在兩個重要限制︰IP 位址日益短缺,並且設定網路、維護路由表的任務變得越來越複雜繁重。IPv6 透過擴充位址空間到 128 個位元解決了第一個問題。透過引入階層位址結構,結合尖端網路位址配置技術及多重定址功能 (將數個位址指定給同一個裝置,進而支援對多個網路的存取),第二個問題也得到緩解。

使用 IPv6 時,瞭解三種不同類型的位址是很有用的︰

單點傳播

這類位址恰好與一個網路介面有關聯。這類位址的封包僅傳送到一個目的地。因此,單點廣播位址用來傳送封包到區域網路或網際網路上的個別主機。

多點傳播

這類位址與一組網路介面有關聯。這類位址的封包會傳送到屬於該組的所有目的地。多點傳播位址主要由特定網路服務使用,可直接與特定主機群組通訊。

任點廣播 (Anycast)

這類位址與一組介面有關聯。這類位址的封包會根據基礎路由通訊協定的原則,傳送到最靠近傳送者的群組成員。使用任點廣播位址,讓主機更易於找出在指定網路區域中提供特定服務的伺服器。相同類型的所有伺服器擁有一樣的任點廣播位址。只要主機要求服務,它會從最靠近位置的伺服器接收回覆,由路由通訊協定決定。如果此伺服器因為某種原因失敗,通訊協定會自動選取第二個最靠近的伺服器,或是選取第三個伺服器,依此類推。

IPv6 位址由八個四位數欄位組成,每個都代表 16 個位元,以十六進位標記法寫入。位址與位址之間以冒號 (:) 分隔。指定欄位內的任何前導零位元組可以刪除,但是欄位內或尾端的零不能刪除。另一個慣例是多於四個連續的零位元組可能會摺疊成兩個冒號。然而,每個位址只允許一個 ::。這類的簡略的標記法,顯示於範例 16.3 「範例 IPv6 位址」 中,其中三行都是代表相同的位址。

範例 16.3︰ 範例 IPv6 位址
fe80 : 0000 : 0000 : 0000 : 0000 : 10 : 1000 : 1a4
fe80 :    0 :    0 :    0 :    0 : 10 : 1000 : 1a4
fe80 :                           : 10 : 1000 : 1a4

IPv6 位址的每個部分都有定義的功能。第一個位元組形成字首,指定位址類型。中間的部分是位址的網路部分,但是可能不會使用。位址的尾端形成主機部分。透過 IPv6,在位址尾端的斜線後表示字首的長度,可以定義網路遮罩。位址如 範例 16.4 「指定字首長度的 IPv6 位址」 中所示,包含的資訊是形成位址網路部分的前 64 個位元以及形成其主機部分的最後 64 個位元。換句話說,64 表示網路遮罩從左邊開始填入 64 個 1 位元值。就像 IPv4 一樣,IP 位址使用 AND 結合網路遮罩的值,判斷主機是否位於相同的子網路或在另一個子網路。

範例 16.4︰ 指定字首長度的 IPv6 位址
fe80::10:1000:1a4/64

IPv6 知道關於數個字首的預定類型。各種 IPv6 字首中列出了其中的一部分。

各種 IPv6 字首
00

IPv4 位址與透過 IPv6 的 IPv4 相容位址。這些位址用來維護與 IPv4 的相容性。其使用仍然要求路由器能夠轉譯 IPv6 封包為 IPv4 封包。數個特殊的位址,如迴路裝置的位址,也有此字首。

23 做為第一個數字

可彙總的全域單點廣播位址。類似 IPv4,可以指定介面來構成特定子網路的部分。目前有下列位址空間︰2001::/16 (產品品質位址空間) 與 2002::/16 (6to4 位址空間)。

fe80::/10

連結本地位址。不應路由具有這種字首的位址,因此僅能從相同的子網路內進行連接。

fec0::/10

本地網站位址。這些位址可以傳送,但是僅能在所屬組織的網路內傳送。事實上,它們等同於目前私人網路位址空間的 IPv6 (例如,10.x.x.x)。

ff

這些都是多點傳播位址。

單點廣播位址由三個基本元件組成︰

公用拓撲 (Public Topology)

第一個部分 (也包含上述的其中一種字首) 用來透過公用網際網路傳送封包。它包含了有關提供網際網路存取的公司或機構資訊。

網站拓撲 (Site Topology)

第二個部分包含有關傳送封包的目的地子網路的路由資訊。

介面識別碼 (Interface ID)

第三個部分識別傳送封包的介面。它也允許 MAC 形成部分的位址。這個前提是 MAC 在全球是唯一的,由硬體製造商在裝置中編碼固定識別碼,可相當程度地簡化組態程序。事實上,結合前 64 個位址位元形成 EUI-64 記號,加上從 MAC 取得的最後 48 個位元,而其餘的 24 個位元則包含有關記號類型的特殊資訊。如此一來,就可以給沒有 MAC 的介面指定 EUI-64 記號,例如以 PPP 為基礎的介面。

在此基本結構的最上層,IPv6 會分辨五種不同類型的單點廣播位址︰

:: (未指定的)

在首次啟始化介面時 (此時尚無法透過其他方法確定位址),主機會使用此位址做為其來源位址。

::1 (迴路)

迴路裝置的位址。

IPv4 相容位址

IPv6 位址是由 IPv4 位址以及由 96 個零位元組成的字首形成的。這類相容性位址用於通道 (請參閱第 16.2.3 節 「IPv4 與 IPv6 的共存」),允許 IPv4 與 IPv6 主機在純 IPv4 環境中彼此通訊。

對應到 IPv6 的 IPv4 位址

這類位址以 IPv6 標記法指定純 IPv4 位址。

本地位址

有兩種位址類型用於本地︰

連結本地

這類位址僅能用於本地子網路。不應將此類型之來源位址或目標位址的封包路由到網際網路或其他子網路。這些位址包含特殊字首 (fe80::/10) 以及網路卡的介面識別碼,加上由空位元組所組成的中間部分。自動設定組態以便與屬於相同子網路中的其他主機通訊時,會使用這類位址。

網站本地

具有這種位址的封包可以路由到其他子網路,但是不能路由到更寬廣的網際網路 — 不得跨越組織內部網路。這類位址用於內部網路,而且等同於 IPv4 所定義的私人位址空間。它們包含特殊字首 (fec0::/10)、介面 ID 以及指定子網路 ID 的 16 位元欄位。同樣地,餘下的將填入零位元組。

因為引入了 IPv6 這種全新的功能,所以每個網路介面通常會取得數個 IP 位址,其優點是可透過相同介面存取數個網路。其中一個網路可以使用 MAC 和已知的字首以完全自動化的方式設定,在啟用 IPv6 (使用連結本地位址) 後可以連接區域網路上的所有主機。利用形成位址部分的 MAC,全球使用的任何 IP 位址都成為唯一的。位址的唯一變數部分,是指定網站拓撲公用拓撲,該部分視主機目前正在操作的實際網路而定。

如果主機要在不同的網路之間往返,至少需要兩個位址。其中一個,即主位址,不僅包含了介面識別碼,也包含了其通常所屬之主網路 (及其對應字首) 的識別碼。主位址是靜態位址,因此它通常不會變更。儘管如此,預定要送到行動主機的所有封包,還是可以傳送到主位址,無論是在主網路或其他外部網路中操作。這可藉由 IPv6 全新功能來達成,如「無狀態自動設定」與「網路芳鄰探查」。除了其主位址外,行動主機也取得一或多個其他的位址,這些位址屬於漫遊的外部網路。這些外部網路稱為 care-of 位址。主網路具有封包在外部漫遊時轉寄預定要送到主機的裝置。在 IPv6 環境中,這個任務是由主代理程式執行的,它會取得所有預定要送到主位址的封包,透過通道轉送它們。另一方面,預定送到 care-of 位址的封包會直接傳送到行動主機,不會特別繞行。

16.2.3 IPv4 與 IPv6 的共存

連接網際網路的所有主機從 IPv4 轉移到 IPv6 是一種漸進程序。這兩種通訊協定某些時候會共存。在一個系統上共存,可保證執行兩種通訊協定的「雙重堆疊」。但這仍然沒有解決啟用了 IPv6 的主機如何與 IPv4 主機通訊,以及應如何透過目前的網路 (絕大部分都以 IPv4 為基礎) 傳輸 IPv6 封包的問題。最佳的解決方案是提供通道及相容性位址 (請參閱第 16.2.2 節 「定址類型與結構」)。

IPv6 主機或多或少孤立於 (全球) IPv4 網路間,可透過通道通訊︰IPv6 封包會被包成 IPv4 封包,在 IPv4 網路中移動。兩個 IPv4 主機之間的連接,稱為「通道」。為實現此功能,封包必須包含 IPv6 目的地位址 (或對應字首) 以及通道接收端上遠端主機的 IPv4 位址。基本通道可以根據主機管理員之間的協議「手動」設定;這也稱為「靜態通道」。

不過,靜態通道的組態及維護通常需要密集勞力,才能使用它們應付每天的通訊需求。因此,IPv6 提供三種不同的「動態通道」方法︰

6over4

IPv6 封包會自動封裝成 IPv4 封包,透過能夠多點傳播的 IPv4 網路進行傳送。IPv6 的訣竅是將整個網路 (網際網路) 視為一個大型的區域網路 (LAN)。如此即能自動判定 IPv4 通道的接收端。然而,這個方法不能過多地延伸,而且不易推廣,因為 IP 多點傳播在網際網路上尚未普及。所以,它僅能為啟用多點傳播的小型公司或機構的網路提供解決方案。這個方法的規格詳述於 RFC 2529。

6to4

利用此方法,IPv4 位址會自動從 IPv6 位址產生,使得隔離的 IPv6 主機能夠在 IPv4 網路上通訊。不過,用此方法在隔離的 IPv6 主機與網際網路之間通訊時存在一些問題。該方法詳述於 RFC 3056。

IPv6 通道代理

這個方法仰賴提供 IPv6 主機專屬通道的特殊伺服器。詳述於 RFC 3053。

16.2.4 設定 IPv6

若要設定 IPv6,通常不需要在個別工作站中做任何變更。IPv6 預設會開啟這個選項。若要在安裝的系統上停用或啟用 IPv6,請使用 YaST 網路設定模組。在全域選項索引標籤上,視需要選取或取消選取啟用 IPv6 選項。若要暫時啟用直至下次重新開機,請以 root 身分輸入 modprobe -i ipv6。載入 IPv6 模組後無法將其卸載。

由於 IPv6 的自動組態概念,網路卡會在連結本地網路中指定一個位址。工作站通常不會進行路由表格管理。工作站可使用「路由器通告通訊協定」,向網路路由器查詢應使用的前置號碼和閘道。可使用 radvd 程式來設定 IPv6 路由器。此程式會通知工作站該 IPv6 位址應使用的前置號碼和路由器。或者,也可使用 zebra/quagga 自動設定位址和路由的組態。

如需如何使用 /etc/sysconfig/network 檔案設定各種通道類型的資訊,請參閱 ifcfg-tunnel 的 man 頁面 (man ifcfg-tunnel)。

16.2.5 更多資訊

上述綜覽沒有完整地涵蓋 IPv6 主題。如需更深入的探討這種新的通訊協定,請參閱以下線上文件和書籍︰

http://www.ipv6.org/

所有有關 IPv6 的入門資訊。

http://www.ipv6day.org

啟動您 IPv6 網路所需的所有資訊。

http://www.ipv6-to-standard.org/

啟用 IPv6 產品的清單。

http://www.bieringer.de/linux/IPv6/

在此處可找到 Linux IPv6-HOWTO 和許多與此主題相關的連結。

RFC 2460

有關 IPv6 的基本 RFC。

IPv6 Essentials

描述此主題所有重要面向的書籍,《IPv6 Essentials》由 Silivia Hagen 所著 (ISBN 0-596-00125-8)。

16.3 名稱解析

DNS 協助指定 IP 位址給一或多個名稱以及指定名稱給 IP 位址。在 Linux 中,這種轉換通常是由已知為 bind 的特殊類型軟體執行的。處理這個轉換的機器稱為「名稱伺服器」(name server)。所有名稱元件之間以句號分隔,它們共同組成一個階層系統。但是,名稱階層與上述的 IP 位址階層無關。

考慮使用完整名稱,如 jupiter.example.com,以 hostname.domain 格式來寫入。完整名稱,也稱為完全合格的網域名稱 (FQDN),由主機名稱和網域名稱 (example.com) 組成。後者也包含了「最上層網域」(top level domain) 或 TLD (com)。

TLD 指定因為過去的緣故變得相當混淆。習慣上,美國使用三個字母的網域名稱。全世界的其他國家,則是使用兩個字母的 ISO 國際代碼為標準。除此之外,2000 年引入了較長的 TLD,代表特定活動範圍 (例如,.info.name.museum)。

在早期的網際網路 (1990 年前),是使用檔案 /etc/hosts 儲存網際網路上所有機器的代表名稱。這種方式,對於連接到網際網路、快速增長的電腦數量層面而言,很快就證實是不切實際的。基於此因素,又開發出分散式的資料庫,以廣泛分散的方式來儲存主機名稱。這種資料庫與名稱伺服器類似,沒有有關網際網路上所有主機的立即可用資料,但是可以分散要求到其他名稱伺服器。

階層的最上層是由「root 名稱伺服器」(root name server) 所使用。這些 root 名稱伺服器管理最上層網域,且由「網路資訊中心」(Network Information Center,NIC) 負責管理。每個 root 名稱伺服器知道負責指定最上層網域的名稱伺服器。有關最上層網域 NIC 的資訊可從 http://www.internic.net 取得。

DNS 的功能不只是解析主機名稱。名稱伺服器也知道哪個主機,即「郵件交換器」(Mail Exchanger,MX),負責接收該領域的電子郵件。

若要讓您的機器能夠解析 IP 位址,它必須知道至少一個名稱伺服器及其 IP 位址。使用 YaST 可輕鬆指定此類名稱伺服器。如需使用 SUSE® Linux Enterprise Server 設定名稱伺服器存取組態的資訊,請參閱第 16.4.1.4 節 「設定主機名稱和 DNS」。關於設定您自己的名稱伺服器的資訊,請參閱第 26 章 「網域名稱系統

whois 通訊協定與 DNS 密切相關。利用此程式,可快速找出負責指定網域的伺服器。

注意
注意:MDNS 和 .local 網域名稱

.local 最上層網域將被解析程式視為連結本地網域。DNS 要求將做為多點傳播 DNS 要求予以傳送,而非通常的 DNS 要求。如果已在名稱伺服器組態中使用了 .local 網域,則必須在 /etc/host.conf 中關閉此選項。如需詳細資訊,請參閱 host.conf 手冊頁。

如果要在安裝期間關閉 MDNS,請使用 nomdns=1 做為開機參數。

如需有關多路廣播 DNS 的詳細資訊,請參閱 http://www.multicastdns.org

16.4 使用 YaST 手動設定網路連接

Linux 可支援多種網路類型。大多數使用不同的裝置名稱和組態檔,會分佈在檔案系統的不同位置。要更瞭解手動網路組態的綜覽,請參閱第 16.5 節 「手動設定網路連接」

已建立連結的所有網路介面 (已連接網路線纜) 將自動進行設定。可隨時在安裝的系統上設定其他的硬體。以下幾節將說明 SUSE Linux Enterprise Server 支援之所有網路連接類型的網路組態。

提示
提示:IBM Z:隨插即用網路卡

IBM Z 平台支援隨插即用網路卡,但不支援透過 DHCP 自動將它們進行網路整合 (與在 PC 上一樣)。完成偵測後,接著以手動設定介面。

16.4.1 使用 YaST 設定網路卡

若要在 YaST 中設定以太網路卡或 Wi-Fi/藍芽卡,請選取系統 › 網路設定。啟動模組後,YaST 將顯示網路設定對話方塊,其中包含四個索引標籤︰全域選項綜覽主機名稱/DNS路由

使用全域選項索引標籤可設定一般網路選項,例如網路設定方法、IPv6 和一般 DHCP 選項。如需詳細資訊,請參閱第 16.4.1.1 節 「設定全域網路選項的組態」

綜覽索引標籤包含有關已安裝網路介面與組態的資訊。此處會列出所有正確偵測到之網路卡的名稱。在此對話方塊中,您可以手動設定新網路卡、移除或變更其組態。若要手動設定未自動偵測到的網路卡,請參閱第 16.4.1.3 節 「設定未偵測到的網路卡」。若要變更已設定卡的組態,請參閱第 16.4.1.2 節 「變更網路卡組態」

使用主機名稱/DNS索引標籤可設定機器的主機名稱以及要使用伺服器的名稱。如需詳細資訊,請參閱第 16.4.1.4 節 「設定主機名稱和 DNS」

路由索引標籤用於設定路由組態。如需相關資訊,請參閱第 16.4.1.5 節 「設定路由」

設定網路組態
圖 16.3︰ 設定網路組態

16.4.1.1 設定全域網路選項的組態

使用 YaST 網路設定模組的全域選項索引標籤,可以設定重要的全域網路選項,例如使用 NetworkManager、IPv6 和 DHCP 用戶端選項。這些設定適用於所有網路介面。

注意
注意:Workstation Extension 提供了 NetworkManager

現在,Workstation Extension 提供有 NetworkManager。若要安裝 NetworkManager,請啟用 Workstation Extension 儲存庫,然後選取 NetworkManager 套件。

網路設定方法中,選擇管理網路連線的方式。若希望 NetworkManager 桌面 applet 管理所有介面的連線,請選擇NetworkManager 服務。NetworkManager 最適合用於在多個有線和無線網路之間進行切換。如果您執行的不是桌面環境,或者您的電腦是 Xen 伺服器、虛擬系統或者會在網路中提供 DHCP 或 DNS 等網路服務,請使用Wicked 服務方法。如果使用 NetworkManager,則應使用 nm-applet 設定網路選項,且網路設定模組的綜覽主機名稱/DNS路由索引標籤都會處於停用狀態。如需 NetworkManager 的詳細資訊,請參閱 SUSE Linux Enterprise Desktop 文件。

IPv6 通訊協定設定中,選擇是否要使用 IPv6 協定。可以同時使用 IPv6 和 IPv4。預設會啟用 IPv6。但是,在不使用 IPv6 通訊協定的網路中,停用 IPv6 通訊協定時回應較快。若要停用 IPv6,請停用啟用 IPv6。如果停用了 IPv6,核心將不再自動載入 IPv6 模組。重新開機後會套用此設定。

DHCP 用戶端選項中,設定 DHCP 用戶端的選項。在一個網路中,每個 DHCP 用戶端的DHCP 用戶端識別碼均不能相同。若將其留為空白,則預設會使用網路介面的硬體位址。但是,如果您要使用同一個網路介面執行多個虛擬機,因此會使用同一個硬體位址,則請在此處指定不限格式的唯一識別碼。

要傳送的主機名稱指定當 DHCP 用戶端將訊息傳送至 DHCP 伺服器時,主機名稱選項欄位所使用的字串。有些 DHCP 伺服器會根據此主機名稱 (動態 DNS) 更新名稱伺服器區域 (正向和反向記錄)。此外,有些 DHCP 伺服器需要要傳送的主機名稱選項欄位包含用戶端傳送之 DHCP 訊息中的特定字串。如果保留 AUTO,將傳送目前的主機名稱 (即 /etc/HOSTNAME 中定義的主機名稱)。將選項欄位留為空白則不會傳送主機名稱。

如果您不希望根據 DHCP 的資訊變更預設路由,請停用透過 DHCP 變更預設路由

16.4.1.2 變更網路卡組態

若要變更網路卡的組態,請在 YaST 的網路設定 › 綜覽中偵測到的網路卡清單中選取網路卡,然後按一下編輯網路卡設定對話方塊隨即出現,您可以使用一般位址硬體索引標籤調整網路卡的組態。

16.4.1.2.1 設定 IP 位址

網路卡設定對話方塊的位址索引標籤中,可以設定網路卡的 IP 位址或確定其 IP 位址的方式。系統支援 IPv4 和 IPv6 兩種位址。您可以為網路卡設定無 IP 位址(適用於 Bonding 裝置)、靜態指定的 IP 位址(IPv4 或 IPv6),也可以透過DHCP或/與Zeroconf為其指定動態位址

若要使用動態位址,請選擇是使用僅限 DHCP 版本 4(適用於 IPv4)、僅限 DHCP 版本 6(適用於 IPv6),還是DHCP 版本 4 與 6

若情況適合,系統會將安裝時第一個可用的已連結網路卡自動設定為使用透過 DHCP 設定的自動位址。

注意
注意:IBM Z 和 DHCP

在 IBM Z 平台上,只有具有 MAC 位址的網路卡才支援基於 DHCP 的位址組態。此情況只適用於 OSA 和 OSA 高速網路卡。

若您用的是 DSL 連線而非 ISP (網際網路服務提供者) 指定的靜態 IP,還應該使用 DHCP。若您決定使用 DHCP,請在 YaST 網路卡組態模組中開啟網路設定對話方塊,於全域選項索引標籤的DHCP 用戶端選項中設定詳細資料。若您將虛擬主機設定為透過同一個介面與不同的主機進行通訊,則需要使用DHCP 用戶端識別碼來分辨它們。

DHCP 對於用戶端組態是不錯的選擇,但不適用於伺服器組態。若要設定靜態 IP 位址,請如下執行︰

  1. 在 YaST 網路卡組態模組的綜覽索引標籤中,於偵測到的網路卡清單中選取一個網路卡,然後按一下編輯

  2. 位址索引標籤中,選擇靜態指定的 IP 位址

  3. 輸入IP 位址。使用 IPv4 和 IPv6 位址都可以。在子網路遮罩中輸入網路遮罩。若使用 IPv6 位址,請以 /64 格式使用子網路遮罩做為字首長度。

    您還可以選擇為此位址輸入完全合法的主機名稱,它將會寫入 /etc/hosts 組態檔案中。

  4. 下一步

  5. 若要啟用組態,請按一下確定

注意
注意:介面啟動和連結偵測

在啟動網路介面期間,wicked 會檢查載體,並且只有在偵測到連結之後,才會套用 IP 組態。如果不論連結狀態如何,您都需要套用該組態 (例如,您要測試監聽某個位址的服務),則可以在 /etc/sysconfig/network/ifcfg 內的介面組態檔案中新增變數 LINK_REQUIRED=no,以跳過連結偵測。

另外,您可以使用變數 LINK_READY_WAIT=5 來指定等待連結的逾時值 (以秒為單位)。

如需 ifcfg-* 組態檔案的詳細資訊,請參閱第 16.5.2.5 節 「/etc/sysconfig/network/ifcfg-*man 5 ifcfg

若使用靜態位址,系統將不會自動設定名稱伺服器和預設閘道。若要設定名稱伺服器,請依第 16.4.1.4 節 「設定主機名稱和 DNS」 中的說明進行。若要設定閘道,請依第 16.4.1.5 節 「設定路由」 中的說明進行。

16.4.1.2.2 設定多個位址

一個網路裝置可擁有多個 IP 位址。

注意
注意:別名是相容性功能

這些所謂的別名或標籤只能各自用於 IPv4。如果是 IPv6,則會被忽略。使用 iproute2 網路介面時可以使用一或多個地址。

若要使用 YaST 設定網路卡的其他地址,請執行以下步驟︰

  1. 在 YaST網路設定對話方塊的綜覽索引標籤中,於偵測到的網路卡清單中選取一個網路卡,然後按一下編輯

  2. 位址 › 其他位址索引標籤中,按一下新增

  3. 輸入IPv4 地址標籤IP 位址網路遮罩。別名中不要包含介面名稱。

  4. 若要啟用組態,請確認設定。

16.4.1.2.3 變更裝置名稱和 Udev 規則

可以在網路卡正在使用中時變更它的裝置名稱。也可以決定網路卡是否應由 udev 透過其硬體 (MAC) 位址或透過匯流排 ID 識別。後者更適合大型伺服器,便於熱插拔網路卡。若要使用 YaST 設定這些選項,請執行下列步驟︰

  1. 在 YaST網路設定對話方塊的綜覽索引標籤中,於偵測到的網路卡清單中選取一個網路卡,然後按一下編輯

  2. 移至硬體索引標籤。目前的裝置名稱顯示在Udev 規則中。按一下變更

  3. 選擇 udev 是應透過網路卡的MAC 位址還是透過匯流排 ID來識別網路卡。網路卡目前的 MAC 位址和匯流排 ID 將顯示在對話方塊中。

  4. 若要變更裝置名稱,請選取變更裝置名稱選項,然後編輯名稱。

  5. 若要啟用組態,請確認設定。

16.4.1.2.4 變更網路卡核心驅動程式

有些網路卡可能有多個核心驅動程式可供使用。如果網路卡已設定,YaST 可讓您從可用且適合的驅動程式清單中選取要使用的核心驅動程式。還可以為核心驅動程式指定選項。若要使用 YaST 設定這些選項,請執行下列步驟︰

  1. 在 YaST 網路設定模組的綜覽索引標籤中,於偵測到的網路卡清單中選取一個網路卡,然後按一下編輯

  2. 移至硬體索引標籤。

  3. 模組名稱中選取要使用的核心驅動程式。在選項中以 = =VALUE 格式為所選驅動程式輸入任何選項。若要使用多個選項,應以空格將其隔開。

  4. 若要啟用組態,請確認設定。

16.4.1.2.5 啟動網路裝置

若使用結合 wicked 的方法,則可以將裝置設定為在開機時、連接纜線時、偵測到網路卡時啟動,或以手動方式啟動,或永不啟動。若要變更裝置啟動,請執行下列步驟︰

  1. 在 YaST 的系統 › 網路設定中,於偵測到的網路卡清單中選取一個網路卡,然後按一下編輯

  2. 一般索引標籤中,從裝置啟用中選擇希望的項目。

    選擇開機時可在系統開機時啟動裝置。若使用電纜連接,系統會監控介面,探查是否有實體的連接。若使用熱插拔時,會在介面可用時對其進行設定。它與開機時選項類似,唯一的區別在於如果開機時介面不存在,則不會發生錯誤。選擇手動可以透過 ifup 手動控制介面。選擇永不則不會啟動裝置。在 NFSroot 時開機時類似,區別是使用 systemctl stop wicked.service 指令不會關閉介面;如果 wicked 處於使用中狀態,則 network 服務也會處理 wicked 服務。若您使用的是 NFS 或 iSCSI 根檔案系統,請使用此選項。

  3. 若要啟用組態,請確認設定。

提示
提示:用做根檔案系統的 NFS

在透過網路將根分割區掛接為 NFS 共用的 (無磁碟) 系統中,設定 NFS 共用可供存取的網路裝置時請保持謹慎。

將系統關閉或重新開機時,預設的處理順序是先關閉網路連接,然後卸載根分割區。對於 NFS 根分割區,這種順序會造成問題,因為在尚未與 NFS 共用啟動網路連接的情況下,根分割區無法完全卸載。為防止系統停用相關的網路裝置,請依第 16.4.1.2.5 節 「啟動網路裝置」中所述開啟網路裝置組態索引標籤,然後在裝置啟動窗格中選取在 NFSroot 時

16.4.1.2.6 設定最大傳送單位大小

您可以設定介面的最大傳送單位 (MTU)。MTU 指允許的最大封包大小 (以位元組計)。MTU 越高,頻寬效率就越高。但是,大型封包可能會將慢速介面阻擋一段時間,這會加劇後續封包的延遲。

  1. 在 YaST 的系統 › 網路設定中,於偵測到的網路卡清單中選取一個網路卡,然後按一下編輯

  2. 一般索引標籤中,從設定 MTU清單中選取所需的項目。

  3. 若要啟用組態,請確認設定。

16.4.1.2.7 PCIe 多功能裝置

支援 LAN、iSCSI 與 FCoE 的多功能裝置受支援。YaST FCoE 用戶端 (yast2 fcoe-client) 會在額外的欄中顯示私人旗標,讓使用者可以選取用於 FCoE 的裝置。YaST 網路模組 (yast2 lan) 會在網路組態中排除僅供儲存的裝置

如需 FCoE 的詳細資訊,請參閱第 15.3 節 「使用 YaST 管理 FCoE 服務」

16.4.1.2.8 IP-over-InfiniBand (IPoIB) 的 Infiniband 組態
  1. 在 YaST 的系統 › 網路設定中選取 InfiniBand 裝置,然後按一下編輯

  2. 一般索引標籤中,選取一種IP-over-InfiniBand(IPoIB) 模式︰已連接(預設) 或資料包

  3. 若要啟用組態,請確認設定。

如需有關 InfiniBand 的詳細資訊,請參閱 /usr/src/linux/Documentation/infiniband/ipoib.txt

16.4.1.2.9 設定防火牆

您不必依Section 16.4.1, “Configuring the Firewall with YaST”中所述輸入詳細的防火牆設定,只需在設定裝置的過程中決定裝置的基本防火牆組態。請執行下列步驟︰

  1. 開啟 YaST 的系統 › 網路設定模組。在綜覽索引標籤中,於偵測到的網路卡清單中選取一個網路卡,然後按一下編輯

  2. 進入網路設定對話方塊的一般索引標籤。

  3. 決定您要將介面指定至的防火牆區域。可用的選項如下︰

    停用防火牆

    只有當防火牆已停用或未執行時,此選項才可用。唯有您的機器位於受外部防火牆保護的更大網路中時,才能使用此選項。

    自動指定區域

    只有當防火牆已啟用時,此選項才可用。防火牆會執行,並且介面會自動指定至防火牆區域。包含關鍵字 any 的區域或外部區域將會用於這類介面。

    內部區域 (未保護)

    防火牆會執行,但不強制執行任何保護此介面的規則。如果您的機器位於受外部防火牆保護的更大網路中,請使用此選項。如果機器具有多個網路介面,此選項也適用於連接到內部網路的介面。

    廢除區域

    廢除區域是內部網路與 (有潛在風險的) 網際網路之前的另一道防線。從內部網路與網際網路都可連接到指派至此區域的主機,但主機無法連存取內部網路。

    外部區域

    防火牆在此介面上執行,且會完全保護其抵禦其他可能有害的網路流量。此為預設選項。

  4. 若要啟用組態,請確認設定。

16.4.1.3 設定未偵測到的網路卡

如果未能正確偵測到某個網路卡,該卡將不會包含在已偵測到的網路卡清單中。若您確定您的系統具備網路卡的驅動程式,可手動設定。也可設定特殊的網路裝置類型,如橋接、Bond、TUN 或 TAP。若要設定未偵測到的網路卡或特殊裝置,請執行下列步驟︰

  1. 在 YaST 的系統 › 網路設定 › 綜覽對話方塊中,按一下新增

  2. 硬體對話方塊中,從可用的選項中設定介面的裝置類型組態名稱。如果網路卡是 PCMCIA 或 USB 裝置,請啟用個別的核取方塊並使用下一步來結束對話方塊。否則,您可以根據需要定義要用於網路卡的核心模組名稱以及卡的選項

    Ethtool 選項中,可以設定 ifup 用於介面的 ethtool 選項。如需可用選項的資訊,請參閱 ethtool 手冊頁。

    如果選項字串以 - 開頭 (例如,-K INTERFACE_NAME rx on),則會用目前的介面名稱取代字串中的第二個單字。否則 (例如,autoneg off speed 10),ifup 會在開頭加上 -s INTERFACE_NAME

  3. 按一下下一步

  4. 一般位址硬體索引標籤中設定介面的所有必要選項,例如 IP 位址、裝置啟動或防火牆區域。如需組態選項的詳細資訊,請參閱第 16.4.1.2 節 「變更網路卡組態」

  5. 若您介面裝置類型選擇無線,請在下一個對話設定無線連接。

  6. 若要啟用新的網路組態,請確認設定。

16.4.1.4 設定主機名稱和 DNS

若您在安裝期間未變更網路組態,且已有乙太網路卡可用,則系統會自動為您的電腦產生主機名稱並啟動 DHCP。同時也會自動產生您主機要整合至網路環境所需的的名稱服務資訊。若網路位址設定使用 DHCP,則網域名稱伺服器清單會自動填入適當的資料。若您希望使用靜態設定,請手動設定數值。

若要變更您電腦的名稱並調整名稱伺服器搜尋清單,請如下執行︰

  1. 在 YaST 的系統 › 模組中,移至網路設定主機名稱/DNS索引標籤。

  2. 輸入主機名稱並根據需要輸入網域名稱。如果機器是郵件伺服器,網域就格外重要。請注意,主機名稱是全域的,會套用於所有已設定的網路介面。

    若您要使用 DHCP 獲取 IP 位址,則電腦的主機名稱將由 DHCP 自動設定。若要連接到其他網路,應禁止此行為,因為其他網路可能會指定其他主機名稱,而且在執行時期變更主機名稱會混淆圖形桌面。若要停止使用 DHCP 獲取 IP 位址,請停用透過 DHCP 變更主機名稱

    將主機名稱指定至迴路 IP會將您的主機名稱與 /etc/hosts 中的 127.0.0.2 (迴路) IP 位址相關聯。如果您希望主機名稱始終能得到解析 (即使是沒有使用中網路的情況下),則可以使用此選項。

  3. 修改 DNS 組態中,選取修改 DNS 組態 (名稱伺服器、搜尋清單、/etc/resolv.conf 檔案的內容) 的方式。

    若選取使用預設規則選項,則組態由 netconfig 程序檔來處理,這樣會將靜態定義的資料 (使用 YaST 或在組態檔案中) 與從 DHCP 用戶端或 NetworkManager 動態取得的資料合併。一般情況均可採用此預設規則。

    若選取僅手動選項,則無法使用 netconfig 修改 /etc/resolv.conf 檔案。但是可以手動編輯此檔案。

    若選取自訂規則選項,則應指定定義合併規則的自訂規則字串。該字串包含要視為設定之有效來源的介面名稱清單 (以逗號分隔)。除完整的介面名稱外,還允許使用基本萬用字元來對應多個介面。例如,eth* ppp? 將先找到所有 eth,然後找到所有 ppp0-ppp9 介面。以下為指定如何套用 /etc/sysconfig/network/config 檔案中所定義之靜態設定的兩個特定規則值︰

    STATIC

    靜態設定需要與動態設定合併在一起。

    STATIC_FALLBACK

    只有動態組態不可用時才會使用靜態設定。

    如需詳細資訊,請參閱 netconfig(8) 的 man 頁面 (man 8 netconfig)。

  4. 輸入名稱伺服器並填寫網域搜尋清單。名稱伺服器必須透過 IP 位址 (例如 192.168.1.116) 而非主機名稱指定。在網域搜尋索引標籤中指定的名稱就是用於解析主機名稱 (沒有指定網域) 的網域名稱。如果使用多個網域搜尋,請以逗號或空格將網域隔開。

  5. 若要啟用組態,請確認設定。

還可以使用 YaST 透過指令行編輯主機名稱。YaST 執行的變更會立即生效 (手動編輯 /etc/HOSTNAME 檔案的情況除外)。若要變更主機名稱,請使用下列指令︰

yast dns edit hostname=HOSTNAME

若要變更名稱伺服器,請使用下列指令︰

yast dns edit nameserver1=192.168.1.116
yast dns edit nameserver2=192.168.1.117
yast dns edit nameserver3=192.168.1.118

16.4.1.5 設定路由

若要讓您的電腦與其他電腦和其他網路通訊,必須提供路由資訊,以讓網路流量採取正確的路徑。若使用 DHCP,會自動提供此資訊。若使用靜態設定,必須手動新增此資料。

  1. 在 YaST 中,移至網路設定 › 路由

  2. 輸入預設閘道的 IP 位址 (必要時可以輸入 IPv4 和 IPv6)。預設閘道會比對每個可能的目的地,但是如果某個符合所需位址的路由表項目已經存在,就會使用該項目,而非透過預設閘道使用預設路由。

  3. 可以在路由表中輸入更多項目。輸入目的地網路 IP 位址、閘道IP 位址和網路遮罩。選取要透過其將流量路由至所定義網路的裝置(減號表示任意裝置)。若要省略這些值的任何一個,請使用減號「-」。若要在表中輸入預設閘道,請在目的地欄位中使用「default」。

    注意
    注意:路由優先程度

    若使用了多個預設路由,則可以指定權值選項確定哪個路由的優先程度較高。若要指定度量選項,請在選項中輸入 - metric NUMBER。權值最高的路由做為預設路由。如果該網路裝置已解除連接,將會移除其路由,使用下一個路由。但是,目前的核心不會在靜態路由中使用權值,只有 multipathd 等路由精靈使用。

  4. 如果系統是路由器,請視需要在網路設定中啟用IPv4 轉遞IPv6 轉遞

  5. 若要啟用組態,請確認設定。

16.4.2 IBM Z:設定網路裝置

SUSE Linux Enterprise Server for IBM Z 支援多種類型的網路介面。您可使用 YaST 設定所有類型。

16.4.2.1 qeth-hsi 裝置

若要將 qeth-hsi (Hipersockets) 介面新增到安裝好的系統,請啟動 YaST 中的系統 › 網路設定模組。選取其中一個標示為Hipersocket的裝置做為「讀取」裝置位址,然後按一下編輯。輸入讀取通道、寫入通道和控制通道的裝置編號 (裝置編號格式的範例︰0.0.0800)。然後按「下一步」。在網路位址設定對話方塊中,為新介面指定 IP 位址和網路遮罩,然後按下一步確定結束網路組態。

16.4.2.2 qeth-ethernet 裝置

若要將 qeth-ethernet (IBM OSA Express 乙太網路卡) 介面新增到安裝好的系統,請啟動 YaST 中的系統 › 網路設定模組。選取其中一個標記為IBM OSA 高速乙太網路卡的裝置來做為「讀取」裝置位址,然後按一下編輯。輸入讀取通道、寫入通道和控制通道的裝置編號 (裝置編號格式的範例︰0.0.0700)。輸入所需連接埠名稱、連接埠號碼 (如果適用) 和其他的一些選項 (請參閱 http://www.ibm.com/developerworks/linux/linux390/documentation_suse.html 上的《Linux for IBM Z: Device Drivers, Features, and Commands》(適用於 IBM Z 的 Linux:裝置驅動程式、功能和指令) 手冊)、您的 IP 位址及相應的網路遮罩。按下一步確定結束網路組態。

16.4.2.3 ctc 裝置

若要將 ctc (IBM 平行埠 CTC 介面卡) 介面新增到安裝好的系統,請啟動 YaST 中的系統 › 網路設定模組。選取一個標示為IBM 平行埠 CTC 介面卡的裝置做為您的讀取通道,然後按一下設定。選擇適合您裝置的裝置設定(通常為相容模式)。指定您和遠端合作夥伴的 IP 位址。如有需要,可透過進階 › > 細節設定來調整 MTU 的大小。按下一步確定結束網路組態。

警告
警告:CTC 不再受支援

不建議使用此介面。未來的 SUSE Linux Enterprise Server 版本將不支援此介面。

16.4.2.4 lcs 裝置

若要將 lcs (IBM OSA-2 介面卡) 介面新增到安裝好的系統,請啟動 YaST 中的系統 › 網路設定模組。選取標示為IBM OSA-2 介面卡的裝置,然後按一下設定。輸入所需連接埠號碼、其他的一些選項 (請參閱 http://www.ibm.com/developerworks/linux/linux390/documentation_suse.html 上的《Linux for IBM Z: Device Drivers, Features, and Commands》(適用於 IBM Z 的 Linux:裝置驅動程式、功能和指令) 手冊)、您的 IP 位址及相應的網路遮罩。按下一步確定結束網路組態。

16.4.2.5 IUCV 裝置

若要將 iucv (IUCV) 介面新增到安裝好的系統,請啟動 YaST 中的系統 › 網路設定模組。選取標示為IUCV的裝置,並按一下編輯。YaST 會提示您提供 IUCV 合作夥伴的名稱 (對等)。輸入名稱 (本項目區分大小寫) 然後選取下一步。指定合作夥伴的IP 位址遠端 IP 位址。如果需要,在一般索引標籤中設定 MTU大小。按下一步確定結束網路組態。

警告
警告:IUCV 不再受支援

不建議使用此介面。未來的 SUSE Linux Enterprise Server 版本將不支援此介面。

16.5 手動設定網路連接

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

16.5.1 wicked 網路組態

名為 wicked 的工具和程式庫提供了一個新的架構用於設定網路。

傳統網路介面管理面臨的其中一項挑戰是,各種不同的網路管理層混雜在一個程序檔中,最多在兩個不同的程序檔中。這些程序檔彼此之間如何互動沒有明確的定義。這會導致出現無法預測的問題、模糊的條件約束和慣例等情況。針對各種不同的情境部署多個特殊入侵層增大了維護負擔。所用的位址組態通訊協定透過 dhcpcd 等精靈來實作,而這些精靈與基礎架構中其他元件的互動相當不通暢。為了持續識別介面,引入了新潮的介面命名規劃,這一規劃需要繁重的 udev 支援。

wicked 的構想是透過多種方法分解問題。它沒有採用任何全新的理念,而是嘗試將不同專案中的想法集中在一起,以期形成一個更好的整體解決方案。

實現此目的的方法之一是使用用戶端/伺服器模型。此方法可讓 wicked 為位址組態等項目定義能夠很好地整合到整個架構中的標準化功能。例如,使用特定的位址組態時,管理員可能要求應該透過 DHCP 或 IPv4 zeroconf 設定介面。在這種情況下,位址組態服務只會從它的伺服器獲得租用,並傳遞到安裝了所要求位址和路由的 wicked 伺服器程序。

分解問題的另一個方法是強制執行分層機製。對於任何類型的網路介面,都可以定義一個 dbus 服務,用於設定網路介面的裝置層 — VLAN、橋接器、結合或半虛擬化裝置。位址組態等常用功能將透過在這些裝置特定服務頂層的聯合服務來實作,而無需專門實作。

wicked 架構使用各種 dbus 服務來實現這兩個方面的功能,這些服務將根據其類型連接至網路介面。本文提供了 wicked 中當前物件階層的簡要綜覽。

每個網路介面以 /org/opensuse/Network/Interfaces 的子物件表示。子物件的名稱由其 ifindex 指定。例如,通常 ifindex 為 1 的迴路介面是 /org/opensuse/Network/Interfaces/1,註冊的第一個乙太網路介面是 /org/opensuse/Network/Interfaces/2

每個網路介面都有一個關聯的類別,用於選取該介面支援的 dbus 介面。依預設,每個網路介面的類別為 netif,wickedd 將自動連接與此類別相容的所有介面。在目前實作中,包括以下介面︰

org.opensuse.Network.Interface

一般網路介面功能,例如,開啟或關閉連結、指定 MTU 等

org.opensuse.Network.Addrconf.ipv4.dhcp, org.opensuse.Network.Addrconf.ipv6.dhcp, org.opensuse.Network.Addrconf.ipv4.auto

適用於 DHCP、IPv4 zeroconf 等的位址組態服務

除此之外,網路介面可能還需要或者提供特殊的組態機制。例如,對於某個乙太網路裝置,您應該能夠控制連結速度和檢查總數卸載等。為了實現此目的,乙太網路裝置都有一個名為 netif-ethernet 的自己的類別,該類別屬於 netif 的子類別。因此,指定給乙太網路介面的 dbus 介面具有上面列出的所有服務,以及 org.opensuse.Network.Ethernet 服務,後者僅可用於屬於 netif-ethernet 類別的物件。

同樣,橋接器、VLAN、結合裝置或 infiniband 等介面類型也存在適用類別。

您要如何與某個首先需要建立的介面 (例如 VLAN,它實際上是位於乙太網路裝置上的虛擬網路介面) 互動呢?為此,wicked 定義了出廠介面,例如 org.opensuse.Network.VLAN.Factory。這種出廠介面只提供一個功能,就是讓您建立所需類型的介面。這些出廠介面將連接至 /org/opensuse/Network/Interfaces 清單節點。

16.5.1.1 wicked 架構與功能

wicked 服務包含多個部份,如圖形 16.4 「wicked 架構」中所述。

wicked 架構
圖 16.4︰ wicked 架構

wicked 目前支援以下內容︰

  • 使用組態檔案後端來剖析 SUSE 樣式的 /etc/sysconfig/network 檔案。

  • 使用內部組態後端以 XML 格式表示網路介面組態。

  • 開啟和關閉一般網路介面,例如乙太網路或 InfiniBand、VLAN、橋接器、結合裝置、tun、tap、虛構裝置、macvlan、macvtap、hsi、qeth、iucv 和無線 (目前限制為一個 wpa-psk/eap 網路) 裝置。

  • 內建 DHCPv4 用戶端和內建 DHCPv6 用戶端。

  • 預設啟用的 nanny 精靈有助於在裝置可用 (介面熱插入) 時自動啟動設定的介面,以及在偵測到連結 (載體) 時設定 IP 組態。如需相關資訊,請參閱第 16.5.1.3 節 「Nanny」

  • wicked 實作為一組與 systemd 相整合的 DBus 服務。因此,常用的 systemctl 指令都將適用於 wicked

16.5.1.2 使用 wicked

在 SUSE Linux Enterprise 上,預設會執行 wicked。如果您要檢查目前啟用了哪個元件,以及該元件是否正在執行,請呼叫︰

systemctl status network

如果已啟用 wicked,則會看到類似下面的行︰

wicked.service - wicked managed network interfaces
    Loaded: loaded (/usr/lib/systemd/system/wicked.service; enabled)
    ...

如果執行的是其他元件 (例如 NetworkManager) 並且您想要切換到 wicked,請先停止正在執行的元件,然後啟用 wicked

systemctl is-active network && \
systemctl stop      network
systemctl enable --force wicked

如此可啟用 wicked 服務、建立從 network.servicewicked.service 的別名連結,並在下次開機時啟動網路。

啟動伺服器程序︰

systemctl start wickedd

這會啟動 wickedd (主要伺服器) 和關聯的要求者︰

/usr/lib/wicked/bin/wickedd-auto4 --systemd --foreground
/usr/lib/wicked/bin/wickedd-dhcp4 --systemd --foreground
/usr/lib/wicked/bin/wickedd-dhcp6 --systemd --foreground
/usr/sbin/wickedd --systemd --foreground
/usr/sbin/wickedd-nanny --systemd --foreground

然後開啟網路︰

systemctl start wicked

或者使用 network.service 別名︰

systemctl start network

這些指令使用 /etc/wicked/client.xml 中定義的預設組態來源或系統組態來源。

若要啟用除錯,請在 /etc/sysconfig/network/config 中設定 WICKED_DEBUG,例如︰

WICKED_DEBUG="all"

或者,若要省略一些資訊︰

WICKED_DEBUG="all,-dbus,-objectmodel,-xpath,-xml"

使用用戶端公用程式顯示所有介面的介面資訊,或者顯示以 IFNAME 指定的介面的介面資訊︰

wicked show all
wicked show IFNAME

XML 格式的輸出︰

wicked show-xml all
wicked show-xml IFNAME

開啟一個介面︰

wicked ifup eth0
wicked ifup wlan0
...

由於未指定組態來源,wicked 用戶端將會檢查 /etc/wicked/client.xml 中為它定義的預設組態來源︰

  1. firmware︰iSCSI 開機韌體表 (iBFT)

  2. compat︰ ifcfg 檔案 — 為相容性而實作

將會套用 wicked 從指定介面的這些來源中取得的任何設定。預期的重要性順序為 firmwarecompat - 將來這種順序可能會發生變更。

如需詳細資訊,請參閱 wicked 的 man 頁面。

16.5.1.3 Nanny

Nanny 是一個由事件與規則驅動的精靈,負責熱插拔裝置等非同步或被動性案例。因此,nanny 精靈可幫助啟動或者重新啟動延遲的裝置,或臨時消失的裝置。Nanny 會監視裝置和連結的變化,並整合目前規則集定義的新裝置。由於指定的逾時條件約束的原因,即使 ifup 已結束,Nanny 仍會繼續設定。

依預設,nanny 精靈在系統上處於使用中狀態。可以在 /etc/wicked/common.xml 組態檔案中啟用該精靈︰

<config>
  ...
  <use-nanny>true</use-nanny>
</config>

如果使用此設定,ifup 和 ifreload 會將包含有效組態的規則套用至 nanny 精靈;然後,nanny 將會設定 wickedd,從而確定支援熱插拔。nanny 將在背景中等待事件或變更 (例如,開啟新的裝置或載體)。

16.5.1.4 開啟多個介面

對於結合裝置和橋接器,有效的做法是在一個檔案 (ifcfg-bondX) 中定義整個裝置拓撲,並一次性將它開啟。然後,當您指定 (橋接器或結合裝置的) 頂層介面名稱時,wicked 可以開啟整個組態︰

wicked ifup br0

此指令會依適當的順序自動設定橋接器及其相依項,而無需分別列出相依項 (連接埠等)。

若要在一個指令中開啟多個介面︰

wicked ifup bond0 br0 br1 br2

若要開啟所有介面︰

wicked ifup all

16.5.1.5 通道與 Wicked 配合使用

如果需要將通道與 Wicked 配合使用,可以使用 TUNNEL_DEVICE。它可用於指定可選的裝置名稱,讓通道繫結到該裝置。通道式封包只會透過此裝置進行路由。

如需詳細資訊,請參閱 man 5 ifcfg-tunnel

16.5.1.6 處理增量變更

有了 wicked,當您要重新設定某個介面時,並不需要真正將它關閉 (除非核心有此要求)。例如,若要將另一個 IP 位址或路由新增到靜態設定的網路介面,請將該 IP 位址新增到介面定義,然後再次執行ifup操作。伺服器會儘量做到只更新那些已變更的設定。這適用於連結級別的選項,例如裝置 MTU 或 MAC 位址;也適用於網路級別的設定,例如位址、路由,甚至位址組態模式 (例如,從靜態組態轉到 DHCP 時)。

當然,對於合併了多個真實裝置 (例如橋接器或結合裝置) 的虛擬介面,事情會變得有些棘手。對於結合裝置,當裝置運作時,您無法變更某些參數,否則會導致出錯。

但是,您仍可以新增或移除結合裝置或橋接器的子裝置,或者選擇結合裝置的主要介面。

16.5.1.7 Wicked 延伸︰位址組態

wicked 設計為可使用外圍程序檔延伸。這些延伸可在 config.xml 檔案中定義。

目前支援數種類別的延伸︰

  • 連結組態︰這些程序檔負責根據用戶端提供的組態來設定裝置的連結層,以及負責將連結層再次拆開。

  • 位址組態︰這些程序檔負責管理裝置的位址組態。通常,位址組態和 DHCP 由 wicked 自身管理,但是,可借助延伸來執行。

  • 防火牆延伸︰這些程序檔可以套用防火牆規則。

通常,延伸中包含一個啟動指令和一個停止指令、一個選擇性的pid 檔案,以及要傳遞給程序檔的一組環境變數。

為了說明此延伸的工作原理,請查看 etc/server.xml 中定義的防火牆延伸︰

<dbus-service interface="org.opensuse.Network.Firewall">
 <action name="firewallUp"   command="/etc/wicked/extensions/firewall up"/>
 <action name="firewallDown" command="/etc/wicked/extensions/firewall down"/>

 <!-- default environment for all calls to this extension script -->
 <putenv name="WICKED_OBJECT_PATH" value="$object-path"/>
 <putenv name="WICKED_INTERFACE_NAME" value="$property:name"/>
 <putenv name="WICKED_INTERFACE_INDEX" value="$property:index"/>
</dbus-service>

此延伸會附加至 <dbus-service> 標記,並定義針對此介面的動作而要執行的指令。此外,宣告可以定義並啟始化傳遞給動作的環境變數。

16.5.1.8 Wicked 延伸︰組態檔案

您也可以使用程序檔來延伸組態檔案的處理。例如,extensions/resolver 程序檔根據 server.xml 中設定的行為來最終處理租用中的 DNS 更新︰

<system-updater name="resolver">
 <action name="backup" command="/etc/wicked/extensions/resolver backup"/>
 <action name="restore" command="/etc/wicked/extensions/resolver restore"/>
 <action name="install" command="/etc/wicked/extensions/resolver install"/>
 <action name="remove" command="/etc/wicked/extensions/resolver remove"/>
</system-updater>

wickedd 中收到更新時,系統更新程式常式將剖析租用,並呼叫解析程式程序檔中的適當指令 (backupinstall等)。此後便可使用 /sbin/netconfig 或者透過手動寫入 /etc/resolv.conf (做為錯誤回復) 來設定 DNS 設定。

16.5.2 組態檔案

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

16.5.2.1 /etc/wicked/common.xml

/etc/wicked/common.xml 檔案包含所有應用程式都應使用的通用定義。它源自或包含在位於同一目錄下的其他組態檔案中。儘管您可以使用此檔案允許在所有 wicked 元件間除錯,但建議使用 /etc/wicked/local.xml 檔案來實現此目的。執行維護更新後,/etc/wicked/common.xml 可能會被覆寫,因此所做的變更可能會遺失。/etc/wicked/common.xml 檔案包含預設安裝中的 /etc/wicked/local.xml,因此通常不需要修改 /etc/wicked/common.xml

若要透過將 <use-nanny> 設定為 false 來停用 nanny,可重新啟動 wickedd.service,然後執行以下指令來套用所有組態與規則︰

wicked ifup all
注意
注意:組態檔案

如果 wickeddwickednanny 程式自己的組態檔案不存在,則會嘗試讀取 /etc/wicked/common.xml

16.5.2.2 /etc/wicked/server.xml

wickedd 伺服器程序會在啟動時讀取 /etc/wicked/server.xml 檔案。該檔案將延伸儲存於 /etc/wicked/common.xml。除此之外,此檔案還會設定解析器的處理方式以及從 addrconf 要求者 (例如 DHCP) 接收資訊的方式。

建議將對此檔案所需的變更新增至一個由 /etc/wicked/server.xml 納入的單獨檔案 /etc/wicked/server-local.xml。使用單獨的檔案可以避免所做的變更在更新維護期間遭到覆寫。

16.5.2.3 /etc/wicked/client.xml

/etc/wicked/client.xml 用於 wicked 指令。該檔案指定探查由 ibft 管理的裝置時所用程序檔的位置,並可設定網路介面組態的位置。

建議將對此檔案所需的變更新增至一個由 /etc/wicked/server.xml 納入的單獨檔案 /etc/wicked/client-local.xml。使用單獨的檔案可以避免所做的變更在更新維護期間遭到覆寫。

16.5.2.4 /etc/wicked/nanny.xml

/etc/wicked/nanny.xml 設定連結層的類型。建議將特定的組態新增至一個單獨的檔案 /etc/wicked/nanny-local.xml,以免在維護更新期間遺失所做的變更。

16.5.2.5 /etc/sysconfig/network/ifcfg-*

這些檔案包含網路介面的傳統組態。在 SUSE Linux Enterprise 11 中,這是除 iBFT 韌體以外唯一支援的格式。

注意
注意:wickedifcfg-* 檔案

如果您指定 compat: 字首,wicked 會讀取這些檔案。根據 /etc/wicked/client.xmlSUSE Linux Enterprise Server 的預設組態,wicked 將嘗試先讀取這些檔案,然後再讀取 /etc/wicked/ifconfig 中的 XML 組態檔案。

提供的 --ifconfig 參數主要用於測試。如果指定該參數,則不會套用 /etc/wicked/ifconfig 中定義的預設組態來源。

ifcfg-* 檔案包含啟動模式和 IP 位址等資訊。可以使用的參數請參閱 ifup 的手冊頁。此外,如果一個一般設定只能用於一個介面,則檔案 dhcpwireless 中的大多數變數在 ifcfg-* 檔案中都可以使用。但是,大多數 /etc/sysconfig/network/config 變數都是全域變數,在 ifcfg 檔案中不能將它們覆寫。例如,NETCONFIG_* 變數就是全域變數。

若要設定 macvlanmacvtab 介面,請參閱 ifcfg-macvlanifcfg-macvtap 的 man 頁面。例如,對於 macvlan 介面,請提供使用以下設定的 ifcfg-macvlan0

STARTMODE='auto'
MACVLAN_DEVICE='eth0'
#MACVLAN_MODE='vepa'
#LLADDR=02:03:04:05:06:aa

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

IBM Z IBM Z 不支援 USB。介面檔案的名稱和網路別名包含專用於 IBM Z 的元素,例如 qeth

16.5.2.6 /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_* 變數就是全域變數。

注意
注意:使用 DHCPv6

SUSE Linux Enterprise 11 中,即使是在未正確設定 IPv6 路由器廣播 (RA) 的網路中,DHCPv6 一向也能正常運作。從 SUSE Linux Enterprise 12 開始,DHCPv6 將適當地要求網路中至少有一個路由器發出 RA,用於指示此網路是由 DHCPv6 管理。

對於無法在其中正確設定路由器的網路,使用者可透過在 ifcfg 檔案中指定 DHCLIENT6_MODE='managed',使用 ifcfg 選項來覆寫此行為。您也可以在安裝系統中使用開機參數來實現這種解決方案︰

ifcfg=eth0=dhcp6,DHCLIENT6_MODE=managed

16.5.2.7 /etc/sysconfig/network/routes/etc/sysconfig/network/ifroute-*

TCP/IP 封包的靜態路由是由 /etc/sysconfig/network/routes/etc/sysconfig/network/ifroute-* 檔案確定的。您可在 /etc/sysconfig/network/routes 中指定各種系統任務所需的全部靜態路由,包括前往主機的路由、透過閘道前往主機的路由,以及前往網路的路由。對於需要個別路由的介面,請定義額外的組態檔案︰/etc/sysconfig/network/ifroute-*。以介面的名稱取代萬用字元 (*)。在路由組態檔中的項目看起來就像這樣︰

# Destination     Gateway           Netmask            Interface  Options

路由的目的地是在第一個資料欄。這個資料欄可能包含網路或主機的 IP 位址,這是指可到達的名稱伺服器、完整合格的網路或主機名稱。應該以 CIDR 表示法 (地址加上關聯的路由字首長度) 寫入網路,例如 10.10.0.0/16 (對於 IPv4 路由) 或 fc00::/7 (對於 IPv6 路由)。關鍵字 default 表示該路由是與閘道位於相同位址系列中的預設閘道。對於沒有閘道的裝置,請使用明確的 0.0.0.0/0 或 ::/0 目的地。

第二個資料欄包含預設的閘道或是可以存取主機或網路的閘道。

第三欄已廢棄;該欄用於包含目的地的 IPv4 網路遮罩。對於 IPv6 路由、預設路由,或者如果在第一欄中使用了字首長度 (CIDR 表示法),請在此處輸入破折號 (-)。

第四欄包含介面名稱。如果使用破折號 (-) 將它保留空白,可能會導致 /etc/sysconfig/network/routes 出現非預期的行為。如需詳細資訊,請參閱 routes 的 man 頁面。

第五欄 (選擇性) 可用於指定特殊選項。如需詳細資訊,請參閱 routes 的 man 頁面。

範例 16.5︰ 通用網路介面和部分靜態路由
# --- IPv4 routes in CIDR prefix notation:
# Destination     [Gateway]         -                  Interface
127.0.0.0/8       -                 -                  lo
204.127.235.0/24  -                 -                  eth0
default           204.127.235.41    -                  eth0
207.68.156.51/32  207.68.145.45     -                  eth1
192.168.0.0/16    207.68.156.51     -                  eth1

# --- IPv4 routes in deprecated netmask notation"
# Destination     [Dummy/Gateway]   Netmask            Interface
#
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

# --- IPv6 routes are always using CIDR notation:
# Destination     [Gateway]                -           Interface
2001:DB8:100::/64 -                        -           eth0
2001:DB8:100::/32 fe80::216:3eff:fe6d:c042 -           eth0

16.5.2.8 /etc/resolv.conf

主機所屬的網域在 /etc/resolv.conf 中指定 (關鍵字 search)。使用 search 選項最多可以指定六個網域,總共 256 個字元。解析不完整的名稱時,會嘗試附加個別 search 項目產生一個名稱。使用 nameserver 選項最多可以指定 3 個名稱伺服器,一行指定一個。註解以井號或分號 (#;) 開頭。如需取得範例說明,請參閱範例 16.6 「/etc/resolv.conf

不過,您不可手動編輯 /etc/resolv.conf。它是由 netconfig 程序檔產生的。若要定義靜態 DNS 組態而不使用 YaST,請在 /etc/sysconfig/network/config 檔案中手動編輯適當的變數︰

NETCONFIG_DNS_STATIC_SEARCHLIST

用於主機名稱查詢的 DNS 網域名稱清單

NETCONFIG_DNS_STATIC_SERVERS

用於主機名稱查詢的名稱伺服器 IP 位址清單

NETCONFIG_DNS_FORWARDER

需要設定的 DNS 轉遞者名稱,例如 bindresolver

NETCONFIG_DNS_RESOLVER_OPTIONS

可寫入 /etc/resolv.conf 的任意選項,例如︰

debug attempts:1 timeout:10

如需詳細資訊,請參閱 resolv.conf 的 man 頁面。

NETCONFIG_DNS_RESOLVER_SORTLIST

最多 10 個項目的清單,例如︰

130.155.160.0/255.255.240.0 130.155.0.0

如需詳細資訊,請參閱 resolv.conf 的 man 頁面。

若要使用 netconfig 停用 DNS 組態,請設定 NETCONFIG_DNS_POLICY=''。如需有關 netconfig 的詳細資訊,請參閱 netconfig(8) 的 man 頁面 (man 8 netconfig)。

範例 16.6︰ /etc/resolv.conf
# Our domain
search example.com
#
# We use dns.example.com (192.168.1.116) as nameserver
nameserver 192.168.1.116

16.5.2.9 /sbin/netconfig

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

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

modify

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

remove

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

update

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

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

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

16.5.2.10 /etc/hosts

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

範例 16.7︰ /etc/hosts
127.0.0.1 localhost
192.168.2.100 jupiter.example.com jupiter
192.168.2.101 venus.example.com venus

16.5.2.11 /etc/networks

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

範例 16.8︰ /etc/networks
loopback     127.0.0.0
localnet     192.168.0.0

16.5.2.12 /etc/host.conf

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

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

範例 16.9︰ /etc/host.conf
# We have named running
order hosts bind
# Allow multiple address
multi on

16.5.2.13 /etc/nsswitch.conf

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

查詢的順序定義於檔案 /etc/nsswitch.confnsswitch.conf 範例是顯示在 範例 16.10 「/etc/nsswitch.conf。備註前面標有 # 符號。在此範例中,hosts 資料庫下的項目表示要求是透過 DNS 傳送到 /etc/hosts (files) (請參閱第 26 章 「網域名稱系統)

範例 16.10︰ /etc/nsswitch.conf
passwd:     compat
group:      compat

hosts:      files dns
networks:   files dns

services:   db files
protocols:  db files
rpc:        files
ethers:     files
netmasks:   files
netgroup:   files nis
publickey:  files

bootparams: files
automount:  files nis
aliases:    files nis
shadow:     compat

NSS 上可用的資料庫列示於 表格 16.3 「透過 /etc/nsswitch.conf 的可用資料庫」。 NSS 資料庫的組態選項將列於表格 16.4 「NSS資料庫的組態選項」

表 16.3︰ 透過 /etc/nsswitch.conf 的可用資料庫

aliases

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

ethers

乙太網路位址。

netmasks

網路及其子網路遮罩的清單。當您使用子網路時才需要。

group

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

hosts

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

netgroup

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

networks

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

publickey

NFS 及 NIS+ 使用之 Secure_RPC 的公開金鑰和私密金鑰。

passwd

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

protocols

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

rpc

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

services

getservent 使用的網路服務。

shadow

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

表 16.4︰ NSS資料庫的組態選項

files

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

db

透過資料庫存取

nisnisplus

NIS,請參閱Chapter 3, Using NIS

dns

只能做為 hostsnetworks 的延伸

compat

只能做為 passwdshadowgroup 的延伸

16.5.2.14 /etc/nscd.conf

此檔案用來設定 nscd (名稱服務快取精靈)。請參閱 nscd(8)nscd.conf(5) man 頁面。依預設,passwdgroupshosts 的系統項目會由 nscd 快取。這對 NIS 與 LDAP 等目錄服務的效能而言十分重要,因為存取名稱、群組或主機都不再需要網路連接。

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

systemctl restart nscd

16.5.2.15 /etc/HOSTNAME

/etc/HOSTNAME 包含完全合格的主機名稱 (FQHN)。完全合格的主機名稱是附加網域名稱的主機名稱。此檔案只能包含一行,其中設定了主機名稱。機器開機時會讀取此檔案。

16.5.3 測試與組態

將組態寫入您的組態檔案之前,可先進行測試。若要設定測試組態,請使用 ip 指令。若要測試連接,請使用 ping 指令。

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

注意
注意:ifconfigroute 已過時

ifconfigroute 工具已過時。請改用 ip。例如,ifconfig 會將介面名稱限制為 9 個字元。

16.5.3.1 使用 ip 設定網路介面

ip 是一項可顯示及設定網路裝置、路由、規則路由和通道的工具。

ip 是非常複雜的工具。它的常用語法為 ip OPTIONS OBJECT COMMAND。您可使用下列物件︰

link

此物件代表網路裝置。

address

此物件代表裝置的 IP 位址。

neighbor

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

route

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

rule

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

maddress

此物件代表多點傳播位址。

mroute

此物件代表多點傳播路由快取項目。

tunnel

此物件表示 IP 上的通道。

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

使用 ip link set DEVICE_NAME  指令變更裝置的狀態。例如,若要停用裝置 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 的說明。

16.5.3.2 以 ping 測試連接

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

ping 不僅會測試兩台電腦之間能否連接,還會提供一些關於連接品質的基本資訊。您可在 範例 16.11 「指令 ping 的輸出」 中看到 ping 輸出的一些範例。倒數第二行包含送出的封包數、封包遺失率以及執行 ping 總共花費的時間等資訊。

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

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

範例 16.11︰ 指令 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 頁面。

提示
提示:Ping IPv6 位址

對於 IPv6 位址,請使用 ping6 指令。請注意,若要 ping 連結-本機位址,必須使用 -I 指定介面。如果該位址可透過 eth1 存取,則可以使用以下指令實現目的︰

ping6 -I eth1 fe80::117:21ff:feda:a425

16.5.4 單位檔案和啟動程序檔

除了上述的組態檔案之外,還有一些在機器開機時載入網路服務的 systemd 單位檔案和各種程序檔。當系統切換為 multi-user.target 目標時,會啟動這些單位檔案和程序檔。網路程式的一些單位檔案和啟動程序檔中介紹了一些單位檔案和程序檔。如需有關 systemd 的詳細資訊,請參閱第 13 章 「systemd 精靈;如需有關 systemd 目標的詳細資訊,請參閱 systemd.special 的 man 頁面 (man systemd.special)。

網路程式的一些單位檔案和啟動程序檔
network.target

network.target 是網路的 systemd 目標,但其具體含義取決於系統管理員提供的設定。

如需詳細資訊,請參閱 http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

multi-user.target

multi-user.target 是包含所有必需網路服務的多使用者系統的 systemd 目標。

xinetd

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

rpcbind

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

ypserv

啟動 NIS 伺服器。

ypbind

啟動 NIS 用戶端。

/etc/init.d/nfsserver

啟動 NFS 伺服器。

/etc/init.d/postfix

控制後置程序。

16.6 基本路由器設定

路由器是一種網路裝置,可接收和傳送往來於多個網路的資料 (網路封包)。路由器常用於將本地網路連接至遠端網路 (網際網路) 或連接多個本地網路區段。透過 SUSE Linux Enterprise Server,您可以建構一個具備 NAT (網路位址翻譯) 或進階防火牆等功能的路由器。

下面是將 SUSE Linux Enterprise Server 轉變為路由器的基本步驟。

  1. 啟用轉遞,例如在 /etc/sysctl.d/50-router.conf

    net.ipv4.conf.all.forwarding = 1
    net.ipv6.conf.all.forwarding = 1

    然後,為介面提供靜態 IPv4 與 IPv6 IP 設定。啟用轉遞會停用多項機制,例如 IPv6 不再接受 IPv6 RA (路由器廣播),這也會妨礙建立預設路由器。

  2. 許多情況下 (例如,當您可以透過多個介面連接同一個網路,或者通常使用的是 VPN 且已位於正常的多宿主主機上時),必須停用 IPv4 逆向路徑過濾 (此功能目前不適用於 IPv6)︰

    net.ipv4.conf.all.rp_filter = 0

    不過,您還可以改用防火牆設定進行過濾。

  3. 若要接受來自路由器 (位於外部、上行或 ISP 介面) 的 IPv6 RA,並再次建立預設 (亦或更具特定性) 的 IPv6 路由,請設定︰

    net.ipv6.conf.${ifname}.accept_ra = 2
    net.ipv6.conf.${ifname}.autoconf = 0

    (注意︰在以點分隔的 sysfs 路徑中,eth0.42 需要寫為 eth0/42。)

更多路由器行為和轉遞相依性的描述,可造訪 https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt

為了在內部 (DMZ) 介面上提供 IPv6,並將您自己宣告為 IPv6 路由器,同時將網路自動設定到用戶端,請安裝並設定 /etc/radvd.conf 中的 radvd,例如︰

interface eth0
{
    IgnoreIfMissing on;         # do not fail if interface missed

    AdvSendAdvert on;           # enable sending RAs
    AdvManagedFlag on;          # IPv6 addresses managed via DHCPv6
    AdvOtherConfigFlag on;      # DNS, NTP... only via DHCPv6

    AdvDefaultLifetime 3600;    # client default route lifetime of 1 hour

    prefix 2001:db8:0:1::/64    # (/64 is default and required for autoconf)
    {
        AdvAutonomous off;         # Disable address autoconf (DHCPv6 only)

        AdvValidLifetime 3600;     # prefix (autoconf addr) is valid 1 h
        AdvPreferredLifetime 1800; # prefix (autoconf addr) is prefered 1/2 h
    }
}

最後設定防火牆。在 SuSEfirewall2 中,您需要設定 FW_ROUTE="yes" (否則它還會再次重設轉遞 sysctl) 並依據需要在 FW_DEV_INTFW_DEV_EXT (和 FW_DEV_DMZ) 區域變數中定義介面,可能還要設定 FW_MASQUERADE="yes"FW_MASQ_DEV

16.7 設定 Bonding 裝置

對於某些系統而言,實作的網路連接除了需要符合一般乙太網路裝置的標準資料安全性或可用性要求之外,還需要符合其他要求。在這些情況下,數個乙太網路裝置可以結集成單個 Bonding 裝置。

bonding 裝置的組態是透過 bonding 模組選項來設定,而其行為主要受 Bonding 裝置的模式影響。該模式預設為 active-backup,這表示如果使用中的從屬裝置失敗,另一個從屬裝置將變成使用中狀態。可以使用以下結合模式:

0 (balance-rr)

封包依次透過第一個到最後一個可用介面傳輸。提供容錯和負載平衡。

1 (active-backup)

只有一個網路介面處於使用中狀態。如果它失敗,另一個介面將變成使用中狀態。此設定是 SUSE Linux Enterprise Server 的預設設定。提供容錯。

2 (balance-xor)

根據以下規則在所有可用介面間拆分流量︰[ (source MAC address XOR'd with destination MAC address XOR packet type ID) modulo slave count] 需要交換器的支援。提供容錯和負載平衡。

3 (broadcast)

在所有介面上廣播所有流量。需要交換器的支援。提供容錯。

4 (802.3ad)

將介面聚合成共用相同速度和雙工設定的群組。需要介面驅動程式中的 ethtool 支援,以及支援 IEEE 802.3ad 動態鏈結聚合並進行了相應設定的交換器。提供容錯和負載平衡。

5 (balance-tlb)

調適性傳輸負載平衡。需要介面驅動程式中的 ethtool 支援,但不需要交換器支援。提供容錯和負載平衡。

6 (balance-alb)

調適性負載平衡。需要介面驅動程式中的 ethtool 支援,但不需要交換器支援。提供容錯和負載平衡。

如需各種模式的詳細描述,請參閱 https://www.kernel.org/doc/Documentation/networking/bonding.txt

提示
提示:Bonding 和 Xen

Bonding 裝置僅適用於具有多個實際網路卡的機器。在大多數組態中,這表示您只應該在 Dom0 中使用結合組態。此外,只有在您將多個網路卡指定給 VM 客體系統的情況下,在 VM 客體中設定結合才有用。

注意
注意: IBM POWER:ibmveth 不支援結合模式 5 和 6 (balance-tlb/balance-alb)

tlb/alb 結合組態與 Power 韌體之間存在衝突。簡言之,處於 tlb/alb 模式的結合驅動程式會傳送同時包含來源與目的地 MAC 位址 (列做虛擬乙太網路 MAC 位址) 的乙太網路迴路封包。Power 韌體不支援這些封包。因此,ibmveth 不支援結合模式 5 和 6。

若要設定 bonding 裝置,請執行以下程序︰

  1. 執行 YaST › 系統 › 網路設定

  2. 使用新增,然後將裝置類型變更為Bond。按下一步繼續。

    Image
  3. 選取為結合裝置指定 IP 位址的方法。有三種方法可供您選擇︰

    • 無 IP 位址

    • 動態位址 (透過 DHCP 或 Zeroconf)

    • 靜態指定的 IP 位址

    請使用適合您環境的方法。

  4. Bond 從屬索引標籤中,透過啟用相關的核取方塊來選取應包含在 Bond 中的乙太網路裝置。

  5. 編輯結合驅動程式選項並選取結合模式。

  6. 確認參數 miimon=100 已新增至Bond 驅動程式選項。若沒有此參數,就無法定期檢查資料的完整性。

  7. 下一步,然後按一下確定離開 YaST,以建立裝置。

16.7.1 Bonding 從屬的熱插拔

在特定網路環境 (例如高可用性) 中,有時候您需要將 Bonding 從屬介面取代成其他介面。原因可能在於網路裝置不斷發生故障。解決方案是設定 Bonding 從屬的熱插拔。

請依一般方式設定 Bond (根據 man 5 ifcfg-bonding),例如︰

ifcfg-bond0
          STARTMODE='auto' # or 'onboot'
          BOOTPROTO='static'
          IPADDR='192.168.0.1/24'
          BONDING_MASTER='yes'
          BONDING_SLAVE_0='eth0'
          BONDING_SLAVE_1='eth1'
          BONDING_MODULE_OPTS='mode=active-backup miimon=100'

使用 STARTMODE=hotplugBOOTPROTO=none 指定從屬︰

ifcfg-eth0
          STARTMODE='hotplug'
          BOOTPROTO='none'

ifcfg-eth1
          STARTMODE='hotplug'
          BOOTPROTO='none'

BOOTPROTO=none 會使用 ethtool 選項 (若提供),但不會使用 ifup eth0 設定連結。這是因為從屬介面是由 Bond 主要裝置所控制的。

STARTMODE=hotplug 會使從屬介面在可用時自動加入 Bond。

需要變更 /etc/udev/rules.d/70-persistent-net.rules 中的 udev 規則,以便依匯流排 ID (udev KERNELS 關鍵字等同於 hwinfo --netcard 中的「SysFS BusID」) 比對裝置,而不是依 MAC 位址比對。如此將允許更換有缺陷的硬體 (位於同一插槽但 MAC 不同的網路卡),並避免在結合變更其所有從屬裝置的 MAC 位址時出現混淆。

例如︰

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
KERNELS=="0000:00:19.0", ATTR{dev_id}=="0x0", ATTR{type}=="1",
KERNEL=="eth*", NAME="eth0"

開機時,systemd network.service 不會等待熱插拔從屬,但會等待結合就緒 (至少需要一個可用的從屬)。當從系統移除其中一個從屬介面 (從 NIC 驅動程式解除結合、NIC 驅動程式的 rmmod 或實際 PCI 熱插拔移除) 時,核心會自動將它從 Bond 中移除。當將新卡新增至系統時 (更換插槽中的硬體),udev 會使用匯流排型永久命名規則將它重新命名為從屬的名稱,然後為它呼叫 ifupifup 呼叫會自動將它加入 Bond。

16.8 設定用於網路組合的組合裝置

連結彙總一詞是描述結合 (或聚合) 網路連接以提供邏輯層的一般性詞彙。有時,您會看到通道組合乙太網路結合連接埠截斷等詞彙。它們都是同義詞,指的是同一個概念。

這一概念便是廣為人知的結合,並且最初整合於 Linux 核心之內 (請參閱第 16.7 節 「設定 Bonding 裝置」瞭解其原始實作)。網路組合一詞指的是這一概念的新型實作。

結合與網路組合的主要不同之處在於,組合提供的是一組小型核心模組,它們負責為 teamd 例項提供介面。其餘所有操作都在使用者空間內處理。這與原始的結合實作不同,原始的結合實作單獨在其核心內包含了其所有功能。如需兩者的比較,請參閱表格 16.5 「結合與組合的功能比較」

表 16.5︰ 結合與組合的功能比較
特性結合組合
廣播、輪替 TX 規則
使用中備份 TX 規則
LACP (802.3ad) 支援
以雜湊為基礎的 TX 規則
使用者可以設定雜湊函數
TX 負載平衡支援 (TLB)
針對 LACP 的 TX 負載平衡支援
Ethtool 連結監控
ARP 連結監控
NS/NA (IPV6) 連結監控
針對 TX/RX 路徑的 RCU 鎖定
連接埠優先程度和粘性
單獨的依連接埠連結監控設定
多連結監控設定受限制
VLAN 支援
多裝置堆疊

來源: http://libteam.org/files/teamdev.pp.pdf

結合與網路組合兩種實作可以同時使用。網路組合是現有結合實作的一個備用方案。它不會取代結合。

網路組合可用於多種用途。下文中將介紹兩種最重要的用途,分別是︰

  • 實現不同網路裝置之間的負載平衡。

  • 當其中一個網路裝置出現故障時,容錯移轉至另一個裝置。

目前還沒有支援建立組合裝置的 YaST 模組。您需要手動設定網路組合。一般程序如下所示,該程序適用於所有網路組合組態︰

程序 16.1︰ 一般程序
  1. 確定您已安裝所有必要的套件。安裝套件 libteam-toolslibteamdctl0python-libteam

  2. /etc/sysconfig/network/ 下建立組態檔案。通常將是 ifcfg-team0。如果需要多部網路組合裝置,請為它們加上數字並依次遞增。

    此組態檔案包含一些變數,在 man 頁面中有相關說明 (請參閱 man ifcfgman ifcfg-team)。系統內的 /etc/sysconfig/network/ifcfg.template 檔案中提供了範例組態。

  3. 移除將用於組合裝置的介面的組態檔案 (通常為 ifcfg-eth0ifcfg-eth1)。

    建議製做一個備份並移除兩個檔案。Wicked 將重新建立這些組態檔案,並收入適用於組合的必要參數。

  4. (選擇性) 檢查 Wicked 組態檔案中是否已包含所需的一切內容。

    wicked show-config
  5. 啟動網路組合裝置 team0

    wicked ifup all team0

    如需其他除錯資訊,請在 all 子指令之後使用 --debug all 選項。

  6. 檢查網路組合裝置的狀態。此動作可藉由下列指令來完成︰

    • 從 Wicked 取得 teamd 實例的狀態︰

      wicked ifstatus --verbose team0
    • 取得整個實例的狀態︰

      teamdctl team0 state
    • 取得 teamd 實例的 systemd 狀態︰

      systemctl status teamd@team0

    三者顯示的視圖依您的需求而定,略有不同。

  7. 如果日後需要變更 ifcfg-team0 檔案中的內容,請使用以下指令重新載入其組態︰

    wicked ifreload team0

不要使用 systemctl 來啟動或停止組合裝置!而應使用 wicked 指令,如上所述。

若要徹底移除組合裝置,請執行以下程序︰

程序 16.2︰ 移除組合裝置
  1. 停止網路組合裝置 team0

    wicked ifdown team0
  2. 將檔案 /etc/sysconfig/network/ifcfg-team0 重新命名為 /etc/sysconfig/network/.ifcfg-team0。在檔案名稱前面插入一個點,以使 wicked看不到它。如果您確實不再需要該組態,也可以移除該檔案。

  3. 重新載入組態︰

    wicked ifreload all

16.8.1 使用案例︰網路組合間的負載平衡

負載平衡用於提升頻寬。使用以下組態檔案可以建立具有負載平衡功能的網路組合裝置。繼續執行程序 16.1 「一般程序」中的步驟以設定裝置。透過 teamdctl 檢查輸出。

範例 16.12︰ 實現網路組合間負載平衡的組態
STARTMODE=auto 1
BOOTPROTO=static 2
IPADDRESS="192.168.1.1/24" 2
IPADDR6="fd00:deca:fbad:50::1/64" 2

TEAM_RUNNER="loadbalance" 3
TEAM_LB_TX_HASH="ipv4,ipv6,eth,vlan"
TEAM_LB_TX_BALANCER_NAME="basic"
TEAM_LB_TX_BALANCER_INTERVAL="100"

TEAM_PORT_DEVICE_0="eth0" 4
TEAM_PORT_DEVICE_1="eth1" 4

TEAM_LW_NAME="ethtool" 5
TEAM_LW_ETHTOOL_DELAY_UP="10" 6
TEAM_LW_ETHTOOL_DELAY_DOWN="10" 6

1

控制組合裝置的啟動。auto 值表示介面會在網路服務可用時設定,並在每次重新開機時自動啟動。

如果您要自行控制裝置,而並不希望裝置自動啟動,請將 STARTMODE 設定為 manual

2

設定靜態 IP 位址 (此處的 IPv4 為 192.168.1.1,IPv6 為 fd00:deca:fbad:50::1)。

如果網路組合裝置應使用動態 IP 位址,請設定 BOOTPROTO="dhcp",並移除 (或備註) 包含 IPADDRESSIPADDR6的行。

3

TEAM_RUNNER 設定為 loadbalance 以啟動負載平衡模式。

4

指定應聚合以建立網路組合裝置的一或多部裝置。

5

定義連結監控器以監控從屬裝置的狀態。使用預設值 ethtool 只會檢查裝置是否已啟動並可存取,因此檢查速度很快。但它不會檢查裝置是否可以真正地傳送或接收封包。

如果您需要進一步確信連接的可用性,請使用 arp_ping 選項。這樣會傳送 Ping 到任意主機 (在 TEAM_LW_ARP_PING_TARGET_HOST 變數中設定)。只有在收到回覆後,才視為網路組合裝置已啟動。

6

以毫秒為單位定義連結建立 (或斷開) 與執行器收到通知之間的延遲。

16.8.2 使用案例︰使用網路組合實現容錯移轉

容錯移轉引入了一個平行的備份網路裝置,用於確保關鍵網路組合裝置的高可用性。備份網路裝置將全天候執行,並在主要裝置出現故障時接管其工作。

使用以下組態檔案可以建立具有容錯移轉功能的網路組合裝置。繼續執行程序 16.1 「一般程序」中的步驟以設定裝置。透過 teamdctl 檢查輸出。

範例 16.13︰ DHCP 網路組合裝置的組態
STARTMODE=auto 1
BOOTPROTO=static 2
IPADDR="192.168.1.2/24" 2
IPADDR6="fd00:deca:fbad:50::2/64" 2

TEAM_RUNNER=activebackup 3
TEAM_PORT_DEVICE_0="eth0" 4
TEAM_PORT_DEVICE_1="eth1" 4

TEAM_LW_NAME=ethtool 5
TEAM_LW_ETHTOOL_DELAY_UP="10" 6
TEAM_LW_ETHTOOL_DELAY_DOWN="10" 6

1

控制組合裝置的啟動。auto 值表示介面會在網路服務可用時設定,並在每次重新開機時自動啟動。

如果您要自行控制裝置,而並不希望裝置自動啟動,請將 STARTMODE 設定為 manual

2

設定靜態 IP 位址 (此處的 IPv4 為 192.168.1.2,IPv6 為 fd00:deca:fbad:50::2)。

如果網路組合裝置應使用動態 IP 位址,請設定 BOOTPROTO="dhcp",並移除 (或備註) 包含 IPADDRESSIPADDR6的行。

3

TEAM_RUNNER 設定為 activebackup 以啟動容錯移轉模式。

4

指定應聚合以建立網路組合裝置的一或多部裝置。

5

定義連結監控器以監控從屬裝置的狀態。使用預設值 ethtool 只會檢查裝置是否已啟動並可存取,因此檢查速度很快。但它不會檢查裝置是否可以真正地傳送或接收封包。

如果您需要進一步確信連接的可用性,請使用 arp_ping 選項。這樣會傳送 Ping 到任意主機 (在 TEAM_LW_ARP_PING_TARGET_HOST 變數中設定)。只有在收到回覆後,才視為網路組合裝置已啟動。

6

以毫秒為單位定義連結建立 (或斷開) 與執行器收到通知之間的延遲。

16.8.3 使用案例︰組合裝置上的 VLAN

VLAN 是虛擬區域網路 (Virtual Local Area Network) 的縮寫。它允許在單個實體乙太網路上執行多個邏輯 (虛擬) 乙太網路。會在邏輯上將網路分割成不同的廣播網域,以便封包只可在為同一 VLAN 指定的連接埠之間進行交換。

下面的使用案例會在組合裝置的基礎上建立兩個靜態 VLAN︰

  • vlan0,結合到 IP 位址 192.168.10.1

  • vlan1,結合到 IP 位址 192.168.20.1

請執行下列步驟︰

  1. 在交換器上啟用 VLAN 標記。如果您要針對組合裝置使用負載平衡,則交換器需要支援連結彙總控制通訊協定 (LACP) (802.3ad)。如需詳細資料,請查閱硬體手冊。

  2. 確定是否要針對組合裝置使用負載平衡或容錯移轉。依第 16.8.1 節 「使用案例︰網路組合間的負載平衡」第 16.8.2 節 「使用案例︰使用網路組合實現容錯移轉」所述設定組合裝置。

  3. /etc/sysconfig/network 中,建立包含以下內容的 ifcfg-vlan0 檔案︰

    STARTMODE="auto"
    BOOTPROTO="static" 1
    IPADDR='192.168.10.1/24' 2
    ETHERDEVICE="team0" 3
    VLAN_ID="0" 4
    VLAN='yes'

    1

    定義固定的 IP 位址 (在 IPADDR中指定)。

    2

    定義 IP 位址,此處包含其網路遮罩。

    3

    包含要用於 VLAN 介面的實際介面,此處是我們的組合裝置 (team0)。

    4

    為 VLAN 指定唯一的 ID。檔案名稱和 VLAN_ID 最好與名稱 ifcfg-vlanVLAN_ID 對應。在我們的範例中, VLAN_ID0,因而檔案名稱為 ifcfg-vlan0

  4. /etc/sysconfig/network/ifcfg-vlan0 檔案複製到 /etc/sysconfig/network/ifcfg-vlan1,並變更以下值︰

    • IPADDR ,從 192.168.10.1/24 變更為 192.168.20.1/24

    • VLAN_ID ,從 0 變更為 1

  5. 啟動兩個 VLAN︰

    root # wicked ifup vlan0 vlan1
  6. 檢查 ifconfig 的輸出︰

    root # ifconfig -a
    [...]
    vlan0     Link encap:Ethernet  HWaddr 08:00:27:DC:43:98
              inet addr:192.168.10.1 Bcast:192.168.10.255 Mask:255.255.255.0
              inet6 addr: fe80::a00:27ff:fedc:4398/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 b)  TX bytes:816 (816.0 b)
    
    vlan1     Link encap:Ethernet  HWaddr 08:00:27:DC:43:98
              inet addr:192.168.20.1 Bcast:192.168.20.255 Mask:255.255.255.0
              inet6 addr: fe80::a00:27ff:fedc:4398/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 b)  TX bytes:816 (816.0 b)

16.9 使用 Open vSwitch 的軟體定義網路

軟體定義網路 (SDN) 表示控制流量傳送目標的系統 (控制平面) 與轉遞流量至所選目的地的基礎系統 (資料平面,也稱為轉遞平面) 區分開來。這表示之前由單個而且往往不太靈活的交換器執行的功能,現在可以分給交換器 (資料平面) 及其控制器 (控制平面) 共同執行。在此模式下,可以對控制器編寫程式,使其變得非常靈活,而且可以快速適應不斷變化的網路條件。

Open vSwitch 是實作與 OpenFlow 通訊協定相容的分散式虛擬多層交換器的軟體。OpenFlow 允許控制器應用程式修改交換器的組態。它會分層至 TCP 通訊協定,並對一定範圍的軟體和硬體實作。於是,單個控制器便可以驅動多個大相逕庭的交換器。

16.9.1 Open vSwitch 的優勢

使用 Open vSwitch 的軟體定義網路有多項優勢,尤其是與虛擬機器配合使用時︰

  • 可以輕鬆識別網路狀態。

  • 網路及其即時狀態可以從一個主機移動至另一個主機。

  • 可以追蹤網路動態,並啟用外部軟體對它們進行回應。

  • 可以套用並處理網路封包中的標記以識別它們的來源或目標機器,並維護其他網路位置。可以設定及移轉標記規則。

  • Open vSwitch 會實作 GRE 通訊協定 (泛型路由封裝)。有了這點,舉例而言,您便可以將私人 VM 網路彼此相連。

  • Open vSwitch 可以單獨使用,不過其設計是與網路硬體整合,可用於控制硬體交換器。

16.9.2 安裝 Open vSwitch

  1. 安裝 Open vSwitch 及補充套件︰

    root # zypper install openvswitch openvswitch-switch

    如果您想讓 Open vSwitch 與 KVM 監管程式配合使用,還需另外安裝 tunctl 。如果您想讓 Open vSwitch 與 Xen 監管程式配合使用,還需另外安裝 openvswitch-kmp-xen

  2. 啟用 Open vSwitch 服務︰

    root # systemctl enable openvswitch
  3. 重新啟動電腦或使用 systemctl 立即啟動 Open vSwitch 服務︰

    root # systemctl start openvswitch
  4. 若要檢查 Open vSwitch 是否已正確啟動,請使用︰

    root # systemctl status openvswitch

16.9.3 Open vSwitch 精靈與公用程式的綜覽

Open vSwitch 由一些元件組成,其中包括一個核心模組和不同的使用者空間元件。核心模組用於加速資料路徑,但 Open vSwitch 的精簡安裝並不需要該模組。

16.9.3.1 精靈

Open vSwitch 的中心可執行檔是其兩個精靈。啟動 openvswitch 服務時,它們也會間接啟動。

Open vSwitch 主要精靈 (ovs-vswitchd) 提供交換器的實作。Open vSwitch 資料庫精靈 (ovsdb-server) 為儲存 Open vSwitch 之組態和狀態的資料庫提供服務。

16.9.3.2 公用程式

Open vSwitch 還包含一些方便您配合使用的公用程式。以下列出了其中一部分,僅介紹了重要的指令。

ovsdb-tool

建立、升級、壓縮與查詢 Open vSwitch 資料庫。對 Open vSwitch 資料庫執行異動。

ovs-appctl

設定正在執行的 ovs-vswitchdovsdb-server 精靈。

ovs-dpctlovs-dpctl-top

建立、修改、視覺化與刪除資料路徑。使用此工具可能會干擾 ovs-vswitchd,後者也執行資料路徑管理。因此,它通常僅用於診斷。

ovs-dpctl-top 會建立 top 一類的資料路徑的視覺化。

ovs-ofctl

管理任何遵守 OpenFlow 通訊協定的交換器。ovs-ofctl 不僅可以與 Open vSwitch 互動。

ovs-vsctl

提供組態資料庫的概覽介面,可用於查詢及修改資料庫。實際上,它會顯示 ovs-vswitchd 的狀態,並可用於其設定。

16.9.4 使用 Open vSwitch 建立橋接器

以下範例組態使用 SUSE Linux Enterprise Server 上預設使用的 Wicked 網路服務。若要瞭解 Wicked 的詳細資訊,請參閱第 16.5 節 「手動設定網路連接」

安裝並啟動 Open vSwitch 後,執行如下操作︰

  1. 若要設定虛擬機器使用的橋接器,請建立包含如下內容的檔案︰

    STARTMODE='auto'1
    BOOTPROTO='dhcp'2
    OVS_BRIDGE='yes'3
    OVS_BRIDGE_PORT_DEVICE_1='eth0'4

    1

    啟動網路服務時自動設定橋接器。

    2

    設定 IP 位址時使用的通訊協定。

    3

    將組態標記為 Open vSwitch 橋接器。

    4

    選擇應新增至橋接器的一或多部裝置。若要新增多部裝置,請在文件中為每部裝置附加一行︰

    OVS_BRIDGE_PORT_DEVICE_SUFFIX='DEVICE'

    SUFFIX 可以是任何英數字串。不過,為了避免之前的定義被覆寫,請確定每部裝置的 SUFFIX 均唯一。

    將檔案儲存至 /etc/sysconfig/network 目錄,並命名為 ifcfg-br0。您也可以使用除 br0 以外自己喜歡的任何名稱。但檔案名稱必須以 ifcfg- 開頭。

    若要瞭解更多選項,請參閱 ifcfgifcfg-ovs-bridge 的 man 頁面 (man 5 ifcfgman 5 ifcfg-ovs-bridge)。

  2. 現在,啟動橋接器︰

    root # wicked ifup br0

    Wicked 完成後應該會輸出橋接器的名稱及狀態 up (顯示在名稱的旁邊)。

16.9.5 Open vSwitch 直接與 KVM 配合使用

第 16.9.4 節 「使用 Open vSwitch 建立橋接器」中所述建立橋接器後,您便可使用 Open vSwitch 來管理透過 KVM/QEMU 建立的虛擬機器的網路存取。

  1. 為了能夠發揮 Wicked 的最大效用,可以對之前設定的橋接器做進一步的變更。開啟之前建立的 /etc/sysconfig/network/ifcfg-br0 並為另一個連接埠裝置附加一行︰

    OVS_BRIDGE_PORT_DEVICE_2='tap0'

    另外,將 BOOTPROTO 設定為 none。現在,此檔案的內容形式如下︰

    STARTMODE='auto'
    BOOTPROTO='none'
    OVS_BRIDGE='yes'
    OVS_BRIDGE_PORT_DEVICE_1='eth0'
    OVS_BRIDGE_PORT_DEVICE_2='tap0'

    新的連接埠裝置 tap0 將在下一步中進行設定。

  2. 現在,為 tap0 裝置新增組態檔案︰

    STARTMODE='auto'
    BOOTPROTO='none'
    TUNNEL='tap'

    將檔案儲存至 /etc/sysconfig/network 目錄,並命名為 ifcfg-tap0

    提示
    提示:允許其他使用者存取 TAP 裝置

    若要透過以非 root 使用者身分啟動的虛擬機器使用此 TAP 裝置,請附加︰

    TUNNEL_SET_OWNER=USER_NAME

    若要為整個群組授予存取權,請附加︰

    TUNNEL_SET_GROUP=GROUP_NAME
  3. 最後,開啟定義為第一個 OVS_BRIDGE_PORT_DEVICE 的裝置的組態。如果之前未變更過名稱,應為 eth0。因此,開啟 /etc/sysconfig/network/ifcfg-eth0,並確定已設定以下選項︰

    STARTMODE='auto'
    BOOTPROTO='none'

    如果檔案尚不存在,請予以建立。

  4. 使用 Wicked 重新啟動橋接器介面︰

    root # wicked ifreload br0

    此操作還會觸發系統重新載入新定義的橋接器連接埠裝置。

  5. 若要啟動某虛擬機器,請使用類似如下的內容︰

    root # qemu-kvm \
    -drive file=/PATH/TO/DISK-IMAGE1 \
    -m 512 -net nic,vlan=0,macaddr=00:11:22:EE:EE:EE \
    -net tap,ifname=tap0,script=no,downscript=no2

    1

    您要啟動之 QEMU 磁碟影像的路徑。

    2

    使用之前建立的 TAP 裝置 (tap0)。

    如需使用 KVM/QEMU 的更多資訊,請參閱Part V, “Managing Virtual Machines with QEMU”

16.9.6 Open vSwitchlibvirt 配合使用

第 16.9.4 節 「使用 Open vSwitch 建立橋接器」中所述建立橋接器之後,可以將該橋接器新增至使用 libvirt 進行管理的現有虛擬機器。由於 libvirtOpen vSwitch 橋接器提供部份支援,因此您可以直接使用第 16.9.4 節 「使用 Open vSwitch 建立橋接器」中建立的橋接器,無需進一步變更網路組態。

  1. 開啟目標虛擬機器的網域 XML 檔案︰

    root # virsh edit VM_NAME

    VM_NAME 取代為所需虛擬機器的名稱。預設的文字編輯器即會開啟。

  2. 在文件中尋找網路區段,即尋找以 <interface type="..."> 開頭並以 </interface> 結尾的區段。

    將現有區段取代為類似如下的網路區段︰

    <interface type='bridge'>
      <source bridge='br0'/>
      <virtualport type='openvswitch'/>
    </interface>
    重要
    重要:virsh iface-* 和虛擬機器管理員與 Open vSwitch 的相容性

    目前,在使用 virsh iface-* 工具和虛擬機器管理員的情況下,Open vSwitchlibvirt 還不相容。如果您使用此類工具,組態可能會破壞。

  3. 現在,您可以照常啟動或重新啟動虛擬機器。

如需使用 libvirt 的更多資訊,請參閱Part II, “Managing Virtual Machines with libvirt

16.9.7 更多資訊

http://openvswitch.org/support/

Open vSwitch 專案網站的文件區段

https://www.opennetworking.org/images/stories/downloads/sdn-resources/white-papers/wp-sdn-newnorm.pdf

Open Networking Foundation 編寫的關於軟體定義網路和 OpenFlow 通訊協定的白皮書