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 可以判斷在傳輸期間是否有遺失或打亂了任何資料。只要是資料順序很重要的地方,就會執行 TCP。
使用者資料包通訊協定:無連接、不安全的通訊協定。要傳送的資料以應用程式產生的封包形式加以傳送。不會保證資料抵達接收者時的順序,而且可能會發生資料遺失的情況。UDP 適用以記錄為導向的應用程式。它的特點是延遲時間比 TCP 短。
網際網路控制訊息通訊協定:基本上,這不是適用一般使用者的通訊協定,而是發佈錯誤報表的特殊控制通訊協定,能夠控制參與 TCP/IP 資料傳送之機器的行為。此外,它還提供特殊的回音模式,可以使用 ping 程式檢視。
網際網路群組管理通訊協定:此通訊協定在實做 IP 多點廣播時控制機器行為。
如 圖形 16.1 「TCP/IP 的簡化層模型」 中所顯示,資料交換發生在不同層。實際的網路層是透過 IP (網際網路通訊協定,Internet Protocol) 進行不安全的資料傳輸。在 IP 的上方,TCP (傳輸控制通訊協定,Transmission Control Protocol) 可以保證資料傳輸某種程度的安全性。IP 層由基礎硬體相依通訊協定提供支援,例如乙太網路。
圖表提供每層的一或兩個範例。層的順序是依據抽象階層 (abstraction level)。最低層非常靠近硬體。不過,最上層對硬體而言幾乎是完全抽象的。每層都有自己的特殊功能。這些特殊功能通常隱含於其描述中。資料連結層及實體層代表所使用的實體網路 (例如乙太網路)。
幾乎所有的硬體通訊協定都是採用封包導向模式。要傳輸的資料會收集在封包中 (無法一次全部傳送)。TCP/IP 封包的大小上限約為 64 KB。由於網路硬體可能有所限制,因此封包一般都很小。乙太網路上資料封包的大小上限約為 1500 個位元組。在乙太網路上傳送資料時,TCP/IP 封包的大小受此數量限制。如果傳送更多資料,則需要由作業系統傳送更多資料封包。
因為每層有自己指定的功能,關於每層的其他資訊必須儲存於資料封包中。這些資訊放在封包的「標頭」中。每層皆在產生的封包前端附加小的資料區塊,稱為通訊協定標頭。有關在乙太網路纜線上傳送的 TCP/IP 資料封包範例,請參閱圖形 16.2 「TCP/IP 乙太網路封包」中的說明。proof sum 位於封包結尾,不在開頭處。這樣可幫助網路硬體簡化程序。
當應用程式在網路上傳送資料時,資料會一層層傳遞,但除實體層外,全部在 Linux 核心執行。每層都負責準備資料使其能夠傳送到下一層。最底層最後要負責傳送資料。接收到資料時則反轉執行整個程序。就如同洋蔥的層級一般,在每層中,會從已傳輸的資料上移除通訊協定標頭。最後,傳輸層負責讓目的地端的應用程式可以使用資料。以這種方式,每層僅直接與上下兩層通訊。對於應用程式而言,無論資料是透過 100 MBit/s FDDI 網路還是透過 56-Kbit/s 數據機纜線進行傳輸,都沒有關係。同樣地,對於資料線而言,只要封包的格式正確,無論傳送的是哪種類型的資料也是無關的。
在此節中的討論僅限於 IPv4 網路。如需有關 IPv6 通訊協定 (IPv4 的後繼者) 的資訊,請參閱第 16.2 節 「IPv6 --下一代的網際網路」。
網際網路上的每台電腦都有唯一的 32 位元位址。這些 32 位元 (或 4 位元組) 通常按範例 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)。
網路遮罩用於定義子網路的位址範圍。如果兩台主機位於相同的子網路內,它們之間可直接連接。如果它們不在同一個子網路內,則需要用於處理子網路所有流量之閘道的位址。若要檢查兩個 IP 位址是否位於同一子網路,只要使用網路遮罩 「AND」 兩個位址。如果結果相同,兩個 IP 位址位於同一個網路。如果不同,遠端的 IP 位址,即為遠端介面,只能透過閘道來通訊。
若要瞭解網路遮罩如何作用,請參閱範例 16.2 「連結 IP 位址到網路遮罩」。網路遮罩由 32 位元組成,可辨認 IP 位址有多少屬於網路。這些位元為 1 標示 IP 位址中的對應位元,即表示為同屬一個網路。對於所有值為 0 的位元,標示其屬於子網路內。這表示愈多位元為 1,子網路就愈小。因為網路遮罩永遠由多個連續的 1 位元組成,也可以計算網路遮罩內的位元數。在範例 16.2 「連結 IP 位址到網路遮罩」中,第一個 24 位元的網路也可寫成 192.168.0.0/24。
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 位址網域」 中。
|
網路/網路遮罩 |
網域 |
|---|---|
|
|
|
|
|
|
|
|
|
由於全球資訊網 (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 改善的部分及它帶來的好處,還有關於從舊通訊協定轉移到新通訊協定的資訊。
新通訊協定帶來的最重要、最顯而易見的改善,是能夠大量擴充可用的位址空間。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 以更精細的方法,透過多路廣播對做為群組中一部分的若干主機進行定址,藉以支援伺服器對主機定址 (這不同於透過廣播對所有主機定址,也不同於透過單路廣播對每個主機逐個定址)。定址為群組的主機,取決於具體的應用程式。例如,有些預先定義的群組可以定址所有名稱伺服器 (「所有名稱伺服器多重廣播群組」) 或所有路由器 (「所有路由器多重廣播群組」)。
如上述,目前 IP 通訊協定有兩個重要缺失:IP 位址的短缺越來越嚴重,以及設定網路與管理輪遞表成為複雜而繁重的任務。IPv6 透過擴充位址空間到 128 個位元解決了第一個問題。透過引入階層位址結構,結合複雜的網路位址配置技術以及複式領域功能 (將數個位址指定給同一個裝置,進而支援對多個網路的存取),第二個問題也迎刃而解。
使用 IPv6 時,瞭解三種不同類型的位址是很有用的:
這類位址恰好與一個網路介面有關聯。這類位址的封包僅傳送到一個目的地。因此,單點廣播位址用來傳送封包到區域網路或網際網路上的個別主機。
這類位址與一組網路介面有關聯。這類位址的封包會傳送到屬於該組的所有目的地。多重廣播位址主要由特定網路服務使用,可直接與特定主機群組通訊。
這類位址與一組介面有關聯。這類位址的封包會根據基礎路由通訊協定的原則,傳送到最靠近傳送者的群組成員。使用任點廣播位址,讓主機更易於找出在指定網路區域中提供特定服務的伺服器。相同類型的所有伺服器擁有一樣的任點廣播位址。只要主機要求服務,它會從最靠近位置的伺服器接收回覆,由路由通訊協定決定。如果此伺服器因為某種原因失敗,通訊協定會自動選取第二個最靠近的伺服器,或是選取第三個伺服器,依此類推。
IPv6 位址由八個四位數欄位組成,每個都代表 16 個位元,以十六進位標記法寫入。位址與位址之間以冒號 (:) 分隔。指定欄位內的任何前導零位元組可以刪除,但是欄位內或尾端的零不能刪除。另一個慣例是多於四個連續的零位元組可能會摺疊成兩個冒號。然而,每個位址只允許一個 ::。這類的簡略的標記法,顯示於範例 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 結合網路遮罩的值,判斷主機是否位於相同的子網路或在另一個子網路。
fe80::10:1000:1a4/64
IPv6 知道關於數個字首的預定類型。各種 IPv6 字首中列出了其中的一部分。
00
IPv4 位址與透過 IPv6 的 IPv4 相容位址。這些位址用來維護與 IPv4 的相容性。其使用仍然要求路由器能夠轉譯 IPv6 封包為 IPv4 封包。數個特殊的位址,如迴路裝置的位址,也有此字首。
2 或 3 做為第一個數字
可彙總的全域單點廣播位址。類似 IPv4,可以指定介面來構成特定子網路的部分。目前有下列位址空間:2001::/16 (產品品質位址空間) 與 2002::/16 (6to4 位址空間)。
fe80::/10
連結本地位址。不應路由具有這種字首的位址,因此僅能從相同的子網路內進行連接。
fec0::/10
本地網站位址。這些位址可以傳送,但是僅能在所屬組織的網路內傳送。事實上,它們等同於目前私人網路位址空間的 IPv6 (例如,10.x.x.x)。
ff
這些都是多重廣播位址。
單點廣播位址由三個基本元件組成:
第一個部分 (也包含上述的其中一種字首) 用來透過公用網際網路傳送封包。它包含了有關提供網際網路存取的公司或機構資訊。
第二個部分包含有關傳送封包的目的地子網路的路由資訊。
第三個部分識別傳送封包的介面。它也允許 MAC 形成部分的位址。這個前提是 MAC 在全球是唯一的,由硬體製造商在裝置中編碼固定識別碼,可相當程度地簡化組態程序。事實上,結合前 64 個位址位元形成 EUI-64 記號,加上從 MAC 取得的最後 48 個位元,而其餘的 24 個位元則包含有關記號類型的特殊資訊。如此一來,就可以給沒有 MAC 的介面指定 EUI-64 記號,例如以 PPP 為基礎的介面。
在此基本結構的最上層,IPv6 會分辨五種不同類型的單點廣播位址:
:: (未指定的) 第一次啟始介面時,如果還未用其他方法判定位址時,主機會使用此位址做為其來源位址。
::1 (迴路) 迴路裝置的位址。
IPv6 位址是由 IPv4 位址以及由 96 個零位元組成的字首形成的。這類相容性位址用於通道 (請參閱第 16.2.3 節 「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 位址的封包會直接傳送到行動主機,不會特別繞行。
連接網際網路的所有主機從 IPv4 轉移到 IPv6 是一種漸進程序。這兩種通訊協定某些時候會共存。在一個系統上共存,可保證執行兩種通訊協定的「雙重堆疊」。但是仍出現一些問題,就是使用 IPv6 的主機如何與 IPv4 主機通訊,以及由 IPv4 結構主導的目前網路如何傳輸 IPv6 封包。最佳的解決方案是提供通道及相容性位址 (請參閱第 16.2.2 節 「定址類型與結構」)。
IPv6 主機或多或少孤立於 (全球) IPv4 網路間,可透過通道通訊:IPv6 封包會被包成 IPv4 封包,在 IPv4 網路中移動。兩個 IPv4 主機之間的連接,稱為「通道」。為實現此功能,封包必須包含 IPv6 目的地位址 (或對應字首) 以及通道接收端上遠端主機的 IPv4 位址。基本通道可以根據主機管理員之間的協議「手動」設定;這也稱為「靜態通道」。
不過,靜態通道的組態及維護通常需要密集勞力,才能使用它們應付每天的通訊需求。因此,IPv6 提供三種不同的「動態通道」方法:
IPv6 封包會自動封裝成 IPv4 封包,透過能夠多重廣播的 IPv4 網路進行傳送。IPv6 的訣竅是將整個網路 (網際網路) 視為一個大型的區域網路 (LAN)。如此即能自動判定 IPv4 通道的接收端。然而,這個方法不能過多地延伸,而且不易推廣,因為 IP 多路廣播在網際網路上尚未普及。所以,它僅能為啟用多重廣播的小型公司或機構的網路提供解決方案。這個方法的規格詳述於 RFC 2529。
利用此方法,IPv4 位址會自動從 IPv6 位址產生,使得隔離的 IPv6 主機能夠在 IPv4 網路上通訊。不過,用此方法在隔離的 IPv6 主機與網際網路之間通訊時存在一些問題。該方法詳述於 RFC 3056。
這個方法仰賴提供 IPv6 主機專屬通道的特殊伺服器。詳述於 RFC 3053。
若要設定 IPv6,通常不需要在個別工作站中做任何變更。IPv6 預設會開啟這個選項。若要在安裝的系統上停用或啟用 IPv6,請使用 YaST 模組。在索引標籤上,根據需要核取或取消核取選項。如果想在下次重新開機前暫時啟用它,請以 root 身分輸入 modprobe -i ipv6。載入 IPv6 模組後無法將其卸載。
由於 IPv6 的自動組態概念,網路卡會在連結本地網路中指定一個位址。工作站通常不會進行路由表格管理。工作站可使用「路由器通告通訊協定」,向網路路由器查詢應使用的前置號碼和閘道。可使用 radvd 程式來設定 IPv6 路由器。此程式會通知工作站該 IPv6 位址應使用的前置號碼和路由器。或者,也可使用 zebra/quagga 自動設定位址和路由的組態。
如需如何使用 /etc/sysconfig/network 檔案設定各種通道類型的資訊,請參閱 ifcfg-tunnel 的 man 頁面 (man ifcfg-tunnel)。
上述綜覽沒有完整地涵蓋 IPv6 主題。如需更深入的探討這種新的通訊協定,請參閱以下線上文件和書籍:
所有有關 IPv6 的入門資訊。
啟動您 IPv6 網路所需的所有資訊。
啟用 IPv6 產品的清單。
在此處可找到 Linux IPv6-HOWTO 和許多與此主題相關的連結。
有關 IPv6 的基本 RFC。
描述此主題所有重要面向的書籍,《IPv6 Essentials》由 Silivia Hagen 所著 (ISBN 0-596-00125-8)。
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 可輕鬆指定此類名稱伺服器。
whois 通訊協定與 DNS 密切相關。利用此程式,可快速找出負責指定網域的伺服器。
.local 最上層網域將被解析程式視為連結本地網域。DNS 要求將做為多路廣播 DNS 要求予以傳送,而非通常的 DNS 要求。如果已在名稱伺服器組態中使用了 .local 網域,則必須在 /etc/host.conf 中關閉此選項。如需詳細資訊,請參閱 host.conf 手冊頁。
如果要在安裝期間關閉 MDNS,請使用 nomdns=1 做為開機參數。
如需有關多路廣播 DNS 的詳細資訊,請參閱 http://www.multicastdns.org。
Linux 可支援多種網路類型。大多數使用不同的裝置名稱和組態檔,會分佈在檔案系統的不同位置。要更瞭解手動網路組態的綜覽,請參閱第 16.6 節 「手動設定網路連接」。
在 NetworkManager 預設處於啟用狀態的 SUSE Linux Enterprise Desktop 上,所有網路卡都會予以設定。如果未啟用 NetworkManager,只會自動設定連接 (連接了網路纜線) 的第一個介面。可隨時在安裝的系統上設定其他的硬體。以下幾節將說明 SUSE Linux Enterprise Desktop 支援之所有網路連線類型的網路組態。
若要在 YaST 中設定以太網路卡或 Wi-Fi/藍芽卡,請選取 › 。啟動模組後,YaST 將顯示對話方塊,其中包含四個索引標籤︰、、和。
使用索引標籤可設定一般網路選項,例如網路設定方法、IPv6 和一般 DHCP 選項。如需詳細資訊,請參閱第 16.4.1.1 節 「設定全域網路選項的組態」。
索引標籤包含有關已安裝網路介面與組態的資訊。此處會列出所有正確偵測到之網路卡的名稱。在此對話方塊中,您可以手動設定新網路卡、移除或變更其組態。若要手動設定未自動偵測到的卡,請參閱第 16.4.1.3 節 「設定未偵測到的網路卡」。若要變更已設定卡的組態,請參閱第 16.4.1.2 節 「變更網路卡組態」。
使用索引標籤可設定機器的主機名稱以及要使用伺服器的名稱。如需詳細資訊,請參閱第 16.4.1.4 節 「設定主機名稱和 DNS」。
索引標籤用於設定路由組態。如需相關資訊,請參閱第 16.4.1.5 節 「設定路由」。
使用 YaST 模組的索引標籤,可以設定重要的全域網路選項,例如使用 NetworkManager、IPv6 和 DHCP 用戶端選項。這些設定適用於所有網路介面。
在中,選擇管理網路連接的方式。若希望 NetworkManager 桌面 applet 管理所有介面的連線,請選擇。NetworkManager 最適合用於在多個有線和無線網路之間進行切換。如果您執行的不是桌面環境,或者您的電腦是 Xen 伺服器、虛擬系統或者會在網路中提供 DHCP 或 DNS 等網路服務,請使用方法。如果使用 NetworkManager,則應使用 nm-applet 設定網路選項,且模組的、和索引標籤都會處於停用狀態。如需有關 NetworkManager 的詳細資訊,請參閱第 28 章 「使用 NetworkManager」。
在中,選擇是否要使用 IPv6 協定。可以同時使用 IPv6 和 IPv4。預設會啟用 IPv6。但是,在不使用 IPv6 通訊協定的網路中,停用 IPv6 通訊協定時回應較快。若要停用 IPv6,請停用。如果 IPv6 已停用,核心將不再自動載入 IPv6 模組。重新開機後會套用此設定。
在中,設定 DHCP 用戶端的選項。在一個網路中,每個 DHCP 用戶端的均不能相同。若將其留為空白,則預設會使用網路介面的硬體位址。但是,如果您要使用同一個網路介面執行多個虛擬機,因此會使用同一個硬體位址,則請在此處指定不限格式的唯一識別碼。
指定當 DHCP 用戶端將訊息傳送至 DHCP 伺服器時,主機名稱選項欄位所使用的字串。有些 DHCP 伺服器會根據此主機名稱 (動態 DNS) 更新名稱伺服器區域 (正向和反向記錄)。此外,有些 DHCP 伺服器需要選項欄位包含用戶端傳送之 DHCP 訊息中的特定字串。如果保留 AUTO,將傳送目前的主機名稱 (即 /etc/HOSTNAME 中定義的主機名稱)。將選項欄位留為空白則不會傳送主機名稱。
如果您不希望根據 DHCP 的資訊變更預設路由,請停用。
若要變更網路卡的組態,請在 YaST 的 › 中偵測到的網路卡清單中選取網路卡,然後按一下。對話方塊隨即出現,您可以使用、和索引標籤調整網路卡的組態。
在對話方塊的索引標籤中,可以設定網路卡的 IP 位址或確定其 IP 位址的方式。系統支援 IPv4 和 IPv6 兩種位址。您可以為網路卡設定(適用於 Bonding 裝置)、(IPv4 或 IPv6),也可以透過或/與為其指定。
若要使用,請選擇是使用(適用於 IPv4)、(適用於 IPv6),還是。
若情況適合,系統會將安裝時第一個可用的已連結網路卡自動設定為使用透過 DHCP 設定的自動位址。在 NetworkManager 預設處於啟用狀態的 SUSE Linux Enterprise Desktop 上,所有網路卡都會予以設定。
若您用的是 DSL 連線而非 ISP (網際網路服務提供者) 指定的靜態 IP,還應該使用 DHCP。若您決定使用 DHCP,請在 YaST 網路卡組態模組中開啟對話方塊,於索引標籤的中設定詳細資料。若您將虛擬主機設定為透過同一個介面與不同的主機進行通訊,則需要使用來分辨它們。
DHCP 對於用戶端組態是不錯的選擇,但不適用於伺服器組態。若要設定靜態 IP 位址,請如下執行:
在 YaST 網路卡組態模組的索引標籤中,於偵測到的網路卡清單中選取一個網路卡,然後按一下。
在索引標籤中,選擇。
輸入。使用 IPv4 和 IPv6 位址都可以。在中輸入網路遮罩。若使用 IPv6 位址,請以 /64 格式使用做為字首長度。
您還可以選擇為此位址輸入完全合法的,它將會寫入 /etc/hosts 組態檔案中。
按。
若要啟用組態,請按一下。
若使用靜態位址,系統將不會自動設定名稱伺服器和預設閘道。若要設定名稱伺服器,請依第 16.4.1.4 節 「設定主機名稱和 DNS」 中的說明進行。若要設定閘道,請依第 16.4.1.5 節 「設定路由」 中的說明進行。
一個網路裝置可擁有多個 IP 位址。
這些所謂的別名或標籤只能各自用於 IPv4。如果是 IPv6,則會被忽略。使用 iproute2 網路介面時可以使用一或多個地址。
若要使用 YaST 設定網路卡的其他地址,請執行以下步驟:
在 YaST對話方塊的索引標籤中,於偵測到的網路卡清單中選取一個網路卡,然後按一下。
在 › 索引標籤中,按一下。
輸入、和。別名中不要包含介面名稱。
若要啟用組態,請確認設定。
可以在網路卡正在使用中時變更它的裝置名稱。也可以決定網路卡是否應由 udev 透過其硬體 (MAC) 位址或透過匯流排 ID 識別。後者更適合大型伺服器,便於熱插拔網路卡。若要使用 YaST 設定這些選項,請執行下列步驟:
在 YaST對話方塊的索引標籤中,於偵測到的網路卡清單中選取一個網路卡,然後按一下。
移至索引標籤。目前的裝置名稱顯示在中。按一下。
選擇 udev 是應透過網路卡的還是透過來識別網路卡。網路卡目前的 MAC 位址和匯流排 ID 將顯示在對話方塊中。
若要變更裝置名稱,請選取選項,然後編輯名稱。
若要啟用組態,請確認設定。
有些網路卡可能有多個核心驅動程式可供使用。如果網路卡已設定,YaST 可讓您從可用且適合的驅動程式清單中選取要使用的核心驅動程式。您還可以為核心驅動程式指定選項。若要使用 YaST 設定這些選項,請執行下列步驟:
在 YaST 網路設定模組的索引標籤中,於偵測到的網路卡清單中選取一個網路卡,然後按一下。
移至索引標籤。
在中選取要使用的核心驅動程式。在中為所選驅動程式輸入所有選項,格式為 = =value。若要使用多個選項,應以空格將其隔開。
若要啟用組態,請確認設定。
若使用結合 wicked 的方法,則可以將裝置設定為在開機時、連接纜線時、偵測到網路卡時啟動,或以手動方式啟動,或永不啟動。若要變更裝置啟動,請執行下列步驟:
在 YaST 的 › 中,於偵測到的網路卡清單中選取一個網路卡,然後按一下。
在索引標籤中,從中選擇希望的項目。
選擇可在系統開機時啟動裝置。若使用,系統會監控介面,探查是否有實體的連接。若使用,會在介面可用時對其進行設定。它與選項類似,唯一的區別在於如果開機時介面不存在,則不會發生錯誤。選擇可以透過 ifup 手動控制介面。選擇則不會啟動裝置。與類似,區別是使用 systemctl stop wicked.service 指令不會關閉介面;如果 wicked 處於使用中狀態,則 network 服務也會處理 wicked 服務。若您使用的是 NFS 或 iSCSI 根檔案系統,請使用此選項。
若要啟用組態,請確認設定。
在透過網路將根分割區掛接為 NFS 共用的 (無磁碟) 系統中,設定 NFS 共用可供存取的網路裝置時請保持謹慎。
將系統關閉或重新開機時,預設的處理順序是先關閉網路連接,然後卸載根分割區。對於 NFS 根分割區,這種順序會造成問題,因為在尚未與 NFS 共用啟動網路連接的情況下,根分割區無法完全卸載。為防止系統停用相關的網路裝置,請依第 16.4.1.2.5 節 「啟動網路裝置」中所述開啟網路裝置組態索引標籤,然後在窗格中選取。
您可以設定介面的最大傳送單位 (MTU)。MTU 指允許的最大封包大小 (以位元組計)。MTU 越高,頻寬效率就越高。但是,大型封包可能會將慢速介面阻擋一段時間,這會加劇後續封包的延遲。
在 YaST 的 › 中,於偵測到的網路卡清單中選取一個網路卡,然後按一下。
在索引標籤中,從清單中選取所需的項目。
若要啟用組態,請確認設定。
支援 LAN、iSCSI 與 FCoE 的多功能裝置受支援。YaST FCoE 用戶端 (yast2 fcoe-client) 會在額外的欄中顯示私人旗標,讓使用者可以選取用於 FCoE 的裝置。YaST 網路模組 (yast2 lan) 會在網路組態中排除「僅供儲存的裝置」。
在 YaST 的 › 中選取 InfiniBand 裝置,然後按一下。
在索引標籤中,選取一種(IPoIB) 模式:(預設) 或。
若要啟用組態,請確認設定。
如需有關 InfiniBand 的詳細資訊,請參閱 /usr/src/linux/Documentation/infiniband/ipoib.txt。
您不需輸入 Section 15.4.1, “Configuring the Firewall with YaST” 所說明的詳細防火牆資訊,僅需在裝置設定時判斷基本防火牆設定即可。請執行下列步驟:
開啟 YaST 的 › 模組。在索引標籤中,於偵測到的網路卡清單中選取一個網路卡,然後按一下。
進入對話方塊的索引標籤。
決定您要將介面指定至的。可用的選項如下:
只有當防火牆已停用或未執行時,此選項才可用。唯有您的機器位於受外部防火牆保護的更大網路中時,才能使用此選項。
只有當防火牆已啟用時,此選項才可用。防火牆會執行,並且介面會自動指定至防火牆區域。包含關鍵字 any 的區域或外部區域將會用於這類介面。
防火牆會執行,但不強制執行任何保護此介面的規則。如果您的機器位於受外部防火牆保護的更大網路中,請使用此選項。如果機器具有多個網路介面,此選項也適用於連接到內部網路的介面。
廢除區域是內部網路與 (有潛在風險的) 網際網路之前的另一道防線。從內部網路與網際網路都可連接到指派至此區域的主機,但主機無法連存取內部網路。
防火牆在此介面上執行,且會完全保護其抵禦其他可能有害的網路流量。此為預設選項。
若要啟用組態,請確認設定。
如果未能正確偵測到某個網路卡,該卡將不會包含在已偵測到的網路卡清單中。若您確定您的系統具備網路卡的驅動程式,可手動設定。也可設定特殊的網路裝置類型,如橋接、Bond、TUN 或 TAP。若要設定未偵測到的網路卡或特殊裝置,請執行下列步驟︰
在 YaST 的 › › 對話方塊中,按一下。
在對話方塊中,從可用的選項中設定介面的和。如果網路卡是 PCMCIA 或 USB 裝置,請啟用個別的核取方塊並使用來結束對話方塊。否則,您可以根據需要定義要用於網路卡的核心以及卡的。
在中,可以設定 ifup 用於介面的 ethtool 選項。有關可用的選項,請參閱 ethtool 手冊頁。如果選項字串以 - 開頭 (例如 -K 介面名稱 rx on),則字串中的第二個單字會取代為目前的介面名稱。否則 (例如 autoneg off speed 10) ifup 會在前面加上 -s 介面名稱。
按一下。
在、和索引標籤中設定介面的所有必要選項,例如 IP 位址、裝置啟動或防火牆區域。如需組態選項的詳細資訊,請參閱第 16.4.1.2 節 「變更網路卡組態」。
若您介面裝置類型選擇,請在下一個對話設定無線連接。
若要啟用新的網路組態,請確認設定。
若您在安裝期間未變更網路組態,且已有乙太網路卡可用,則系統會自動為您的電腦產生主機名稱並啟動 DHCP。同時也會自動產生您主機要整合至網路環境所需的的名稱服務資訊。若網路位址設定使用 DHCP,則網域名稱伺服器清單會自動填入適當的資料。若您希望使用靜態設定,請手動設定數值。
若要變更您電腦的名稱並調整名稱伺服器搜尋清單,請如下執行:
在 YaST 的模組中,移至 › 索引標籤。
輸入並根據需要輸入。如果機器是郵件伺服器,網域就格外重要。請注意,主機名稱是全域的,會套用於所有已設定的網路介面。
若您要使用 DHCP 獲取 IP 位址,則電腦的主機名稱將由 DHCP 自動設定。若要連接到其他網路,應禁止此行為,因為其他網路可能會指定其他主機名稱,而且在執行時期變更主機名稱會混淆圖形桌面。若要停止使用 DHCP 獲取 IP 位址,請停用。
會將您的主機名稱與 /etc/hosts 中的 127.0.0.2 (迴路) IP 位址相關聯。如果您希望主機名稱始終能得到解析 (即使是沒有使用中網路的情況下),則可以使用此選項。
在中,選取修改 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)。
輸入並填寫清單。名稱伺服器必須透過 IP 位址 (例如 192.168.1.116) 而非主機名稱指定。在索引標籤中指定的名稱就是用於解析主機名稱 (沒有指定網域) 的網域名稱。如果使用多個,請以逗號或空格將網域隔開。
若要啟用組態,請確認設定。
還可以使用 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
若要讓您的電腦與其他電腦和其他網路通訊,必須提供路由資訊,以讓網路流量採取正確的路徑。若使用 DHCP,會自動提供此資訊。若使用靜態設定,必須手動新增此資料。
在 YaST 中,移至 › 。
輸入的 IP 位址 (必要時可以輸入 IPv4 和 IPv6)。預設閘道會比對每個可能的目的地,但是如果某個符合所需位址的路由表項目已經存在,就會使用該項目,而非透過預設閘道使用預設路由。
可以在中輸入更多項目。輸入網路 IP 位址、IP 位址和。選取要透過其將流量路由至所定義網路的(減號表示任意裝置)。若要省略這些值的任何一個,請使用減號「-」。若要在表中輸入預設閘道,請在欄位中使用「default」。
若使用了多個預設路由,則可以指定權值選項確定哪個路由的優先程度較高。要指定權值選項,請在中輸入 - metric 數值。權值最高的路由做為預設路由。如果該網路裝置已解除連接,將會移除其路由,使用下一個路由。不過,目前的核心不會在靜態路由中使用權值,只有 multipathd 等路由精靈會使用。
如果系統是路由器,請視需要在中啟用和。
若要啟用組態,請確認設定。
NetworkManager 是筆記型電腦與其他可攜式電腦的理想解決方案。有了 NetworkManager,您在行進之間,不必耽心網路介面的組態,也不必切換網路。
wicked #
不過,NetworkManager 解決方案並不適用於所有情況,因此您仍然可以在 wicked 控制的方法 (用於管理網路連線) 與 NetworkManager 之間進行選擇。如果要使用 NetworkManager 管理網路連線,請依第 28.2 節 「啟用或停用 NetworkManager」中所述在 YaST 網路設定模組中啟用 NetworkManager,然後使用 NetworkManager 設定網路連線。如需使用案例的清單以及如何設定與使用 NetworkManager 的詳細說明,請參閱第 28 章 「使用 NetworkManager」。
wicked 與 NetworkManager 之間的一些區別︰
root 權限
如果使用 NetworkManager 設定網路,就可以隨時使用 Applet 在您的桌面環境上輕鬆切換、停止或啟動網路連接。NetworkManager 也讓您不需要 root 權限就可以變更和設定無線網路卡連接。因此,NetworkManager 是行動工作站理想的解決方案。
wicked 也提供一些切換、停止或啟動連線的方式,其中有需要使用者介入的,也有不需要的,就像使用者管理的裝置。但是,使用此方法始終需要 root 權限來變更或設定網路裝置。這對行動計算裝置而言,往往會造成問題,因為不可能預先設定好所有可能的連接。
不論是 wicked 還是 NetworkManager,都能使用 DHCP 和靜態組態來處理無線網路 (會存取 WEP、WPA-PSK 和 WPA-Enterprise) 和有線網路的網路連線。它們也支援透過撥號和 VPN 建立的連線。透過 NetworkManager,您還可以連接行動寬頻 (3G) 數據機或設定 DSL 連線,而使用傳統組態則無法做到這一點。
NetworkManager 會嘗試使用最好的連線,讓您的電腦隨時保持連線狀態。如果網路纜線突然中斷,它會嘗試重新連接。它可以從您的無線連接清單中找到訊號最強的網路,並自動用它來連接。若要透過 wicked 取得相同的功能,需要更多組態設定工作。
使用 NetworkManager 建立的獨立網路連接設定儲存在組態設定檔中。使用 NetworkManager 或 YaST 設定的系統連線儲存在 /etc/networkmanager/system-connections/* 或 /etc/sysconfig/network/ifcfg-* 中。對於 GNOME,所有使用者定義的連線都儲存在 GConf 中。
如果未設定任何設定檔,NetworkManager 會自動建立一個,並將其命名為 Auto $INTERFACE-NAME。這是為了在未設定組態的情況下安全地處理盡可能多的案例。如果自動建立的設定檔不能滿足您的需要,請使用由 GNOME 提供的網路連線組態對話方塊,根據需要修改這些設定檔。如需詳細資訊,請參閱第 28.3 節 「設定網路連線」。
在集中管理的機器上,可以使用 PolKit 控制或停用某些 NetworkManager 功能,例如,是否允許使用者修改管理員定義的連線,或者是否允許使用者定義自己的網路組態。若要檢視或變更各自的 NetworkManager 規則,請啟動 PolKit 的圖形工具。這些規則位於左側網路樹中,項目的下方。如需 PolKit 的簡介及其詳細使用方法,請參閱Chapter 9, Authorization with PolKit。
手動設定網路軟體應為最後採取的替代方案。建議使用 YaST。不過,這個有關網路組態的背景資訊也可協助您使用 YaST。
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 將自動連接與此類別相容的所有介面。在目前實作中,包括以下介面:
一般網路介面功能,例如,開啟或關閉連結、指定 MTU 等
適用於 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 清單節點。
wicked 架構與功能 #
wicked 服務包含多個部份,如圖形 16.4 「wicked 架構」中所述。
wicked 架構 #
wicked 目前支援以下內容︰
使用組態檔案後端來剖析 SUSE 樣式的 /etc/sysconfig/network 檔案。
使用內部組態後端以 XML 格式表示網路介面組態。
開啟和關閉「一般」網路介面,例如乙太網路或 InfiniBand、VLAN、橋接器、結合裝置、tun、tap、虛構裝置、macvlan、macvtap、hsi、qeth、iucv 和無線 (目前限制為一個 wpa-psk/eap 網路) 裝置。
內建 DHCPv4 用戶端和內建 DHCPv6 用戶端。
第 16.6.1.3 節 「Nanny」精靈 (預設已啟用) 有助於在裝置可用後自動開啟已設定的介面 (介面熱插拔),並在偵測到連結 (載體) 後設定 IP 組態。
wicked 實作為一組與 systemd 相整合的 DBus 服務。因此,常用的 systemctl 指令都將適用於 wicked。
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.service 到 wicked.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 中為它定義的預設組態來源:
firmware:iSCSI 開機韌體表 (iBFT)
compat:ifcfg 檔案 — 為相容性而實作
將會套用 wicked 從指定介面的這些來源中取得的任何設定。預期的重要性順序為 firmware、compat - 將來這種順序可能會發生變更。
如需詳細資訊,請參閱 wicked 的 man 頁面。
Nanny 是一個由事件與規則驅動的精靈,負責熱插拔裝置等非同步或被動性案例。因此,nanny 精靈可幫助啟動或者重新啟動延遲的裝置,或臨時消失的裝置。Nanny 會監視裝置和連結的變化,並整合目前規則集定義的新裝置。由於指定的逾時條件約束的原因,即使 ifup 已結束,Nanny 仍會繼續設定。
依預設,nanny 精靈在系統上處於使用中狀態。可以在 /etc/wicked/common.xml 組態檔案中啟用該精靈:
<config> ... <use-nanny>true</use-nanny> </config>
如果使用此設定,ifup 和 ifreload 會將包含有效組態的規則套用至 nanny 精靈;然後,nanny 將會設定 wickedd,從而確定支援熱插拔。nanny 將在背景中等待事件或變更 (例如,開啟新的裝置或載體)。
對於結合裝置和橋接器,有效的做法是在一個檔案 (ifcfg-bondX) 中定義整個裝置拓撲,並一次性將它開啟。然後,當您指定 (橋接器或結合裝置的) 頂層介面名稱時,wicked 可以開啟整個組態:
wicked ifup br0
此指令會依適當的順序自動設定橋接器及其相依項,而無需分別列出相依項 (連接埠等)。
若要在一個指令中開啟多個介面:
wicked ifup bond0 br0 br1 br2
若要開啟所有介面:
wicked ifup all
如果需要將通道與 Wicked 配合使用,可以使用 TUNNEL_DEVICE。它可用於指定可選的裝置名稱,讓通道繫結到該裝置。通道式封包只會透過此裝置進行路由。
如需詳細資訊,請參閱 man 5 ifcfg-tunnel。
使用 wicked 時,若要重新設定某個介面,並不需要真正將它關閉 (除非核心要求這麼做)。例如,若要將另一個 IP 位址或路由新增到靜態設定的網路介面,請將該 IP 位址新增到介面定義,然後再次執行「ifup」操作。伺服器會儘量做到只更新那些已變更的設定。這適用于連結級別的選項,例如裝置 MTU 或 MAC 位址;也適用於網路級別的設定,例如位址、路由,甚至位址組態模式 (例如,從靜態組態轉到 DHCP 時)。
當然,對於合併了多個真實裝置 (例如橋接器或結合裝置) 的虛擬介面,事情會變得有些棘手。對於結合裝置,當裝置運作時,您無法變更某些參數,否則會導致出錯。
但是,您仍可以新增或移除結合裝置或橋接器的子裝置,或者選擇結合裝置的主要介面。
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>
標記,並定義針對此介面的動作而要執行的指令。此外,宣告可以定義並啟始化傳遞給動作的環境變數。
您也可以使用程序檔來延伸組態檔案的處理。例如,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 中收到更新時,系統更新程式常式將剖析租用,並呼叫解析程式程序檔中的適當指令 (backup、install等)。此後便可使用 /sbin/netconfig 或者透過手動寫入 /etc/resolv.conf (做為錯誤回復) 來設定 DNS 設定。
本節提供網路組態檔的綜覽,並說明其用途和使用的格式。
/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
如果 wickedd、wicked 或 nanny 程式自己的組態檔案不存在,則會嘗試讀取 /etc/wicked/common.xml。
/etc/wicked/server.xml #
wickedd 伺服器程序會在啟動時讀取 /etc/wicked/server.xml 檔案。該檔案將延伸儲存於 /etc/wicked/common.xml。除此之外,此檔案還會設定解析器的處理方式以及從 addrconf 要求者 (例如 DHCP) 接收資訊的方式。
建議將對此檔案所需的變更新增至一個由 /etc/wicked/server.xml 納入的單獨檔案 /etc/wicked/server-local.xml。使用單獨的檔案可以避免所做的變更在更新維護期間遭到覆寫。
/etc/wicked/client.xml #
/etc/wicked/client.xml 用於 wicked 指令。它指定在探查受 ibft 管理的裝置時使用的程序檔所在的位置,並設定各網路介面組態的位置。
建議將對此檔案所需的變更新增至一個由 /etc/wicked/server.xml 納入的單獨檔案 /etc/wicked/client-local.xml。使用單獨的檔案可以避免所做的變更在更新維護期間遭到覆寫。
/etc/wicked/nanny.xml #
/etc/wicked/nanny.xml 設定連結層的類型。建議將特定的組態新增至一個單獨的檔案 /etc/wicked/nanny-local.xml,以免在維護更新期間遺失所做的變更。
/etc/sysconfig/network/ifcfg-* #這些檔案包含網路介面的傳統組態。在 SUSE Linux Enterprise 11 中,這是除 iBFT 韌體以外唯一支援的格式。
wicked 和 ifcfg-* 檔案
如果您指定 compat: 字首,wicked 會讀取這些檔案。根據 /etc/wicked/client.xml 中 SUSE Linux Enterprise Server 12 的預設組態,wicked 將會嘗試讀取這些檔案,然後再讀取 /etc/wicked/ifconfig 中的 XML 組態檔案。
提供的 --ifconfig 參數主要用於測試。如果指定該參數,則不會套用 /etc/wicked/ifconfig 中定義的預設組態來源。
ifcfg-* 檔案包含啟動模式和 IP 位址等資訊。可以使用的參數請參閱 ifup 的手冊頁。此外,如果一個一般設定只能用於一個介面,則檔案 dhcp 和 wireless 中的大多數變數在 ifcfg-* 檔案中都可以使用。但是,大多數 /etc/sysconfig/network/config 變數都是全域變數,在 ifcfg 檔案中不能將它們覆寫。例如,NETCONFIG_* 變數就是全域變數。
若要設定 macvlan 和 macvtab 介面,請參閱 ifcfg-macvlan 和 ifcfg-macvtap 的 man 頁面。例如,對於 macvlan 介面,請提供使用以下設定的 ifcfg-macvlan0:
STARTMODE='auto' MACVLAN_DEVICE='eth0' #MACVLAN_MODE='vepa' #LLADDR=02:03:04:05:06:aa
如需 ifcfg.template 的相關資訊,請參閱第 16.6.2.6 節 「/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 包含 ifup、ifdown 和 ifstatus 行為的一般設定。dhcp 包含無線 LAN 卡之 DHCP 和 wireless 的設定。所有三個組態檔中的變數都已被註解。/etc/sysconfig/network/config 中的某些變數也可以在 ifcfg-* 檔案中使用,而且在這些檔案中它們的優先程度更高。/etc/sysconfig/network/ifcfg.template 檔案列出了可在永久介面中指定的變數。但是,大多數 /etc/sysconfig/network/config 變數都是全域變數,在 ifcfg 檔案中不能將它們覆寫。例如,NETWORKMANAGER 或 NETCONFIG_* 變數就是全域變數。
即使是在未正確設定 IPv6 路由器廣播 (RA) 的網路中,SUSE Linux Enterprise 11 上的 DHCPv6 往往也能正常運作。從 SUSE Linux Enterprise 12 開始,DHCPv6 會適當地要求網路中至少有一個路由器發出 RA 來指出此網路是由 DHCPv6 管理。
對於無法在其中正確設定路由器的網路,使用者可透過在 ifcfg 檔案中指定 DHCLIENT6_MODE='managed',使用 ifcfg 選項來覆寫此行為。您也可以在安裝系統中使用開機參數來實現這種解決方案:
ifcfg=eth0=dhcp6,DHCLIENT6_MODE=managed
/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 頁面。
# --- 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
/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 轉遞者名稱,例如 bind 或 resolver
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)。
/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 modify 與 netconfig remove 指令提供或移除 netconfig 的設定。使用者僅可使用 netconfig update 指令:
modify
netconfig modify 指令會修改目前的介面和服務特定的動態設定,並更新網路組態。Netconfig 會從標準輸入或從 --lease-file 檔案名稱選項指定的檔案讀取設定,並將它們儲存於內部,直到系統重新開機 (或執行下一個修改或移除動作) 為止。系統會覆寫同一個介面與服務組合的現有設定。介面由 -i 介面名稱參數來指定。服務由 -s 服務名稱參數來指定。
remove
netconfig remove 指令會移除修改動作為指定介面和服務組合提供的動態設定,並更新網路組態。介面由 -i 介面名稱參數來指定。服務由 -s 服務名稱參數來指定。
update
netconfig update 指令會使用目前的設定更新網路組態。當規則或靜態組態變更時可以使用此指令。如果只想更新指定的服務 (dns、nis 或 ntp),請使用 -m 模組類型參數。
netconfig 規則和靜態組態設定可透過手動方式定義,或使用 YaST 在 /etc/sysconfig/network/config 檔案中定義。自動組態工具 (如 DHCP 或 PPP) 提供的動態組態設定經由這些工具,透過 netconfig modify 和 netconfig remove 動作直接傳送。NetworkManager 啟用時,netconfig (在 auto 規則模式中) 只會使用 NetworkManager 設定,而忽略使用傳統 ifup 方法設定的任何其他介面的設定。如果 NetworkManager 未提供任何設定,則使用靜態設定做為備用設定。系統不支援同時使用 NetworkManager 與 wicked 方法。
如需 netconfig 的詳細資訊,請參閱 man 8 netconfig。
/etc/hosts #
在此檔案中 (請參閱範例 16.7 「/etc/hosts」),將為主機名稱指定 IP 位址。如果沒有執行任何名稱伺服器,將使用此 IP 連接設定的所有主機將列示於此。對於每個主機,請在檔案中輸入一行資訊,其中包含 IP 位址、完全合格的主機名稱及主機名稱。IP 位址必須在行的開頭,然後以空格和定位點分隔這些項目。註解的前面永遠是 # 符號。
/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 檔案格式相似,但是網路名稱在位址前。請參閱範例 16.8 「/etc/networks」。
/etc/networks #loopback 127.0.0.0 localnet 192.168.0.0
/etc/host.conf #
名稱解析--透過解析器庫分析主機和網路的名稱--由此檔案收集。該檔案僅用於與 libc4 或 libc5 連結的程式。對於目前的 glibc 程式,請參閱 /etc/nsswitch.conf 中的設定。每個參數都必須單獨佔用一行。註解的前面是 # 符號。表格 16.2 「/etc/host.conf 的參數」 顯示出可用的參數。/etc/host.conf 範例是顯示在 範例 16.9 「/etc/host.conf」。
|
order hosts, bind |
指定針對名稱解析存取服務的順序。可用的引數有 (以空格或逗號分隔): |
|
hosts:搜尋 | |
|
bind:存取名稱伺服器 | |
|
nis:使用 NIS | |
|
multi on/off |
定義在 |
|
nospoof on spoofalert on/off |
這些參數會影響名稱伺服器 spoofing,但並不會對網路組態產生任何影響。 |
|
trim domainname |
在主機名稱解析後,指定的網域名稱會與主機名稱分隔開來 (前提是主機名稱包括網域名稱)。只有在本地網域分隔出來的名稱位於 |
/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.conf。nsswitch.conf 範例是顯示在 範例 16.10 「/etc/nsswitch.conf」。備註前面標有 # 符號。在此範例中,hosts 資料庫下的項目表示要求是透過 DNS 傳送到 /etc/hosts (files)。
/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「資料庫」的組態選項」。
|
|
|
|
|
乙太網路位址。 |
|
|
網路及其子網路遮罩的清單。當您使用子網路時才需要。 |
|
|
|
|
|
|
|
|
在網路中用於控制存取權限的有效主機與使用者清單,請參閱 |
|
|
|
|
|
NFS 及 NIS+ 使用之 Secure_RPC 的公開金鑰和私密金鑰。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
直接存取檔案,例如 |
|
|
透過資料庫存取 |
|
|
NIS,請參閱Chapter 3, Using NIS |
|
|
只能做為 |
|
|
只能做為 |
/etc/nscd.conf #
此檔案用來設定 nscd (名稱服務快取精靈)。請參閱 nscd(8) 與 nscd.conf(5) man 頁面。依預設,passwd 與 groups 的系統項目是由 nscd 快取。這對於目錄服務 (如 NIS 和 LDAP) 的效能而言是很重要的,否則每次存取名稱或群組時都需要使用網路連接。預設是不會快取 hosts,因為 nscd 快取主機的機制會造成本地系統無法信任轉寄以及反向查詢檢查。不要要求 nscd 快取名稱,而是設定快取 DNS 伺服器。
如果啟用 passwd 的快取,通常需要 15 秒,才能辨識新增的本地使用者。使用以下指令重新啟動 nscd,縮短這段等待時間:
systemctl restart nscd
/etc/HOSTNAME #
/etc/HOSTNAME 包含完全合格的主機名稱 (FQHN)。完全合格的主機名稱是附加網域名稱的主機名稱。此檔案只能包含一行,其中設定了主機名稱。機器開機時會讀取此檔案。
將組態寫入您的組態檔案之前,可先進行測試。若要設定測試組態,請使用 ip 指令。若要測試連接,請使用 ping 指令。
ip 指令會直接變更網路組態,而不會將其儲存到組態檔案中。除非您將組態輸入正確的組態檔案,否則重新開機之後網路組態的變更就會遺失。
ifconfig 和 route 已過時
ifconfig 和 route 工具已過時。請改用 ip。例如,ifconfig 會將介面名稱限制為 9 個字元。
ip 設定網路介面 #
ip 是一項可顯示及設定網路裝置、路由、規則路由和通道的工具。
ip 是非常複雜的工具。其一般語法是 ip options object command。您可使用下列物件:
此物件代表網路裝置。
此物件代表裝置的 IP 位址。
此物件代表 ARP 或 NDISC 快取項目。
此物件代表路由表格項目。
此物件代表路由原則資料庫中的規則。
此物件代表多重廣播位址。
此物件代表多重廣播路由快取項目。
此物件表示 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 的說明。
ping 指令是測試 TCP/IP 連接運作的標準工具。其使用 ICMP 通訊協定,將小型資料封包 ECHO_REQUEST 傳送至目的地主機,要求立即回應。如果成功,ping 將顯示表示這一結果的訊息。這表示網路連結正在作用。
ping 不僅會測試兩台電腦之間能否連接,還會提供一些關於連接品質的基本資訊。您可在 範例 16.11 「指令 ping 的輸出」 中看到 ping 輸出的一些範例。倒數第二行包含送出的封包數、封包遺失率以及執行 ping 總共花費的時間等資訊。
因此,可使用主機名稱或 IP 位址,例如 ping example.com 或 ping 192.168.3.100。程式會持續傳送封包,直到您按下 Ctrl– C 為止。
若您只需要檢查連接功能性,您可以 -c 選項限定封包數量。例如,若要將 ping 限制於三個封包,請輸入 ping -c 3 example.com。
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 頁面。
對於 IPv6 位址,請使用 ping6 指令。請注意,若要 ping 連結-本機位址,必須使用 -I 指定介面。如果該位址可透過 eth1 存取,則可以使用以下指令實現目的:
ping6 -I eth1 fe80::117:21ff:feda:a425
除了上述的組態檔案之外,還有一些在機器開機時載入網路服務的 systemd 單位檔案和各種程序檔。當系統切換為 multi-user.target 目標時,會啟動這些單位檔案和程序檔。網路程式的一些單位檔案和啟動程序檔中介紹了一些單位檔案和程序檔。如需有關 systemd 的詳細資訊,請參閱第 14 章 「systemd 精靈」;如需有關 systemd 目標的詳細資訊,請參閱 systemd.special 的 man 頁面 (man systemd.special)。
network.target
network.target 是網路的 systemd 目標,但其具體含義取決於系統管理員提供的設定。
如需詳細資訊,請參閱http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/。
multi-user.target
xinetd
啟動 xinetd。xinetd 可以用來讓伺服器服務能夠在系統上使用。例如,只要開啟 FTP 連接,它即可啟動 vsftpd。
rpcbind
啟動可將 RPC 程式號碼轉換為通用位址的 rpcbind 公用程式。NFS 伺服器等 RPC 服務需要用到。
ypserv
啟動 NIS 伺服器。
ypbind
啟動 NIS 用戶端。
/etc/init.d/nfsserver
啟動 NFS 伺服器。
/etc/init.d/postfix
控制後置程序。
對於某些系統而言,實作的網路連接除了需要符合一般乙太網路裝置的標準資料安全性或可用性要求之外,還需要符合其他要求。在這些情況下,數個乙太網路裝置可以結集成單個 Bonding 裝置。
bonding 裝置的組態是透過 bonding 模組選項來設定,而其行為主要受 Bonding 裝置的模式影響。該模式預設為 mode=active-backup,這表示如果使用中的從屬裝置失敗,另一個從屬裝置將變成使用中狀態。
Bonding 裝置僅適用於具有多個實際網路卡的機器。在大多數組態中,這表示您只應該在 Dom0 中使用結合組態。此外,只有在您將多個網路卡指定給 VM 客體系統的情況下,在 VM 客體中設定結合才有用。
若要設定 bonding 裝置,請執行以下程序︰
執行 › › 。
使用,然後將變更為。按繼續。
選取為 bonding 裝置指定 IP 位址的方法。有三種方法可供您選擇︰
無 IP 位址
動態位址 (透過 DHCP 或 Zeroconf)
靜態指定的 IP 位址
請使用適合您環境的方法。
在索引標籤中,透過啟用相關的核取方塊來選取應包含在 Bond 中的乙太網路裝置。
編輯。可用於設定的模式顯示如下:
balance-rr
active-backup
balance-xor
廣播
802.3ad
802.3ad 是標準化的 LACP「IEEE 802.3ad 動態連結彙總」模式。
balance-tlb
balance-alb
確認參數 miimon=100 已新增至。若沒有此參數,就無法定期檢查資料的完整性。
按,然後按一下離開 YaST,以建立裝置。
所有模式以及其他更多選項的詳細說明請見(安裝套件 kernel-source 之後可在 /usr/src/linux/Documentation/networking/bonding.txt 中找到)。
在特定網路環境 (例如高可用性) 中,有時候您需要將 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=hotplug 和 BOOTPROTO=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 會使用匯流排型永久命名規則將它重新命名為從屬的名稱,然後為它呼叫 ifup。ifup 呼叫會自動將它加入 Bond。
「連結彙總」一詞是描述結合 (或聚合) 網路連接以提供邏輯層的一般性詞彙。有時,您會看到「通道組合」、「乙太網路結合」和「連接埠截斷」等詞彙。它們都是同義詞,指的是同一個概念。
這一概念便是廣為人知的「結合」,並且最初整合於 Linux 核心之內 (請參閱第 16.7 節 「設定 Bonding 裝置」瞭解其原始實作)。網路組合一詞指的是這一概念的新型實作。
結合與網路組合的主要不同在於,組合提供的是一組小型核心模組,它們負責為 teamd 例項提供介面。其餘所有操作都在使用者空間內處理。這與原始的結合實作不同,原始的結合實作單獨在其核心內包含了其所有功能。
結合與網路組合兩種實作可以同時使用。網路組合是現有結合實作的一個備用方案。它不會取代結合。
網路組合可用於多種用途。下文中將介紹兩種最重要的用途,分別是︰
實現不同網路裝置之間的負載平衡。
當其中一個網路裝置出現故障時,容錯移轉至另一個裝置。
目前還沒有支援建立組合裝置的 YaST 模組。您需要手動設定網路組合。一般程序如下所示,該程序適用於所有網路組合組態︰
確定您已安裝所有必要的套件。安裝套件 libteam-tools 、 libteamdctl0 、 libteamdctl0 和 python-libteam 。
在 /etc/sysconfig/network/ 下建立組態檔案。通常將是 ifcfg-team0。如果需要多部網路組合裝置,請為它們加上數字並依次遞增。
此組態檔案包含一些變數,在 man 頁面中有相關說明 (請參閱 man ifcfg 和 man ifcfg-team)。
移除將用於組合裝置的介面的組態檔案 (通常為 ifcfg-eth0 和 ifcfg-eth1)。
建議製做一個備份並移除兩個檔案。Wicked 將重新建立這些組態檔案,並收入適用於組合的必要參數。
(選擇性) 檢查 Wicked 組態檔案中是否已包含所需的一切內容。
wicked show-config
啟動網路組合裝置 team0︰
wicked all ifup team0
如需其他除錯資訊,請在 all 子指令之後使用 --debug all 選項。
檢查網路組合裝置的狀態。此動作可藉由下列指令來完成:
從 Wicked 取得 teamd 實例的狀態︰
wicked ifstatus --verbose team0
取得整個實例的狀態︰
teamdctl team0 state
取得 teamd 實例的 systemd 狀態︰
systemctl status teamd@team0
三者顯示的視圖依您的需求而定,略有不同。
如果日後需要變更 ifcfg-team0 檔案中的內容,請使用以下指令重新載入其組態︰
wicked ifreload team0
不要使用 systemctl 來啟動或停止組合裝置!而應使用 wicked 指令,如上所述。
負載平衡用於提升頻寬。使用以下組態檔案可以建立具有負載平衡功能的網路組合裝置。繼續執行程序 16.1, 「一般程序」中的步驟以設定裝置。透過 teamdctl 檢查輸出。
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
控制組合裝置的啟動。
如果您要自行控制裝置,而並不希望裝置自動啟動,請將 | |
設定靜態 IP 位址 (此處的 IPv4 為
如果網路組合裝置應使用動態 IP 位址,請設定 | |
將 | |
指定應聚合以建立網路組合裝置的一或多部裝置。 | |
定義連結監控器以監控從屬裝置的狀態。使用預設值
如果您需要進一步確信連接的可用性,請使用 | |
以毫秒為單位定義連結建立 (或斷開) 與執行器收到通知之間的延遲。 |
容錯移轉引入了一個平行的備份網路裝置,用於確保關鍵網路組合裝置的高可用性。備份網路裝置將全天候執行,並在主要裝置出現故障時接管其工作。
使用以下組態檔案可以建立具有容錯移轉功能的網路組合裝置。繼續執行程序 16.1, 「一般程序」中的步驟以設定裝置。透過 teamdctl 檢查輸出。
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
控制組合裝置的啟動。
如果您要自行控制裝置,而並不希望裝置自動啟動,請將 | |
設定靜態 IP 位址 (此處的 IPv4 為
如果網路組合裝置應使用動態 IP 位址,請設定 | |
將 | |
指定應聚合以建立網路組合裝置的一或多部裝置。 | |
定義連結監控器以監控從屬裝置的狀態。使用預設值
如果您需要進一步確信連接的可用性,請使用 | |
以毫秒為單位定義連結建立 (或斷開) 與執行器收到通知之間的延遲。 |