如何在 Oracle Solaris 11 中配置網路

張玉龍發表於2017-02-06


http://www.oracle.com/technetwork/cn/articles/servers-storage-admin/s11-network-config-1632927-zhs.html


Oracle Solaris 11 網路架構與先前版本的 Oracle Solaris 相比有了很大的變化。不但實現方式發生了變化,而且網路介面的名稱以及管理和配置這些介面的命令和方法也有了變化。

 

引入這些變化是為了給網路管理帶來更統一的整合式體驗,特別是當管理員新增如鏈路聚合、橋接、負載平衡或虛擬網路等較複雜的配置時。除了傳統的固定網路配置之外,Oracle Solaris 11 還引入了使用網路配置檔案的自動網路配置。

Oracle Solaris 11 網路配置新特性

Oracle Solaris 11 引入了兩個新命令來進行手動管理網路:dladm 和 ipadm,二者結合使用可以取代ifconfig。與 ifconfig 不同,由 dladm 和 ipadm 所做的更改在重新啟動後持久儲存。它們有著通用、一致的命令格式,並且與 ifconfig 不同,它們的輸出可以解析,從而可在指令碼中使用。

dladm 可執行資料鏈路(第 2 層)管理,配置物理鏈路、聚合、VLAN、IP 隧道和 InfiniBand 分割槽。它還管理鏈路層屬性。

ipadm 可配置 IP 介面、IP 地址和 TCP/IP 協議屬性。它還可取代 ndd 來進行網路層和傳輸層調優。

資料鏈路名稱不再與物理介面相同,它們可能是虛擬裝置。它們改為使用通用名稱,如 net0 或 net1,管理員也可以為它們指定描述性名稱。這就使得在更改基礎硬體時不會影響網路配置。

此外,Oracle Solaris 11 新增了使用網路配置檔案自動配置網路的功能。配置檔案由兩個管理命令(netadm 和 netcfg)管理,用一個實體描述網路介面、名稱服務、路由和 IP 過濾器和 IPsec 策略的配置。

手動和自動網路模式

Oracle Solaris 11 使用基於配置檔案的網路配置,其配置模式有兩種:手動配置和自動配置。

根據您在安裝過程中所選的模式,系統啟用 DefaultFixed 網路配置檔案 (NCP) 或 Automatic NCP。

Automatic NCP 使用 DHCP 來從連線的任何乙太網介面獲取基本網路配置(IP 地址、路由器和 DNS 伺服器)。如果失敗,它將嘗試連線已知網路列表中訊號最好的無線網路。

DefaultFixed NCP 有效地禁用了自動網路配置,需要使用 dladm 和 ipadm 手動配置網路介面以及使用 Oracle Solaris Service Management Facility (SMF) 配置名稱服務。

與使用 DefaultFixed NCP 並手動配置網路相比,建立自己的 NCP 可以更輕鬆地管理 Oracle Solaris 11 聯網。

對於要使用 Oracle Solaris Dynamic Reconfiguration 重新配置的系統或使用了可熱交換介面的情形,應用使用 DefaultFixed NCP。IP 多路徑傳送必須使用這種配置方式,這是因為使用 Automatic NCP 時不支援 IP 多路徑傳送。

可以使用 netadm 檢視系統上哪些網路配置檔案是活動的:

root@solaris:~# netadm list
TYPE       PROFILE     STATE
ncp        Automatic   online
ncu:phys   net0        online
ncu:ip     net0        online
loc        Automatic   online
loc        NoNet       offline
loc        User        online

我們在這裡不做過多講解,後面將有一節對此進行介紹。以上輸出顯示已經啟用了 Automatic NCP。

要切換到 DefaultFixed NCP,從而啟用手動聯網,執行以下命令:

root@solaris:~# netadm enable -p ncp DefaultFixed
root@solaris:~# netadm list
netadm: DefaultFixed NCP is enabled; automatic network management is not available.
'netadm list' is only supported when automatic network management is active.

要切換回 Automatic NCP,使用以下命令:

root@solaris:~# netadm enable -p ncp Automatic
root@solaris:~# netadm list
TYPE       PROFILE     STATE
ncp        Automatic   uninitialized
ncu:phys   net0        uninitialized
ncu:ip     net0        uninitialized
loc        Automatic   uninitialized

隨著系統開始配置資料鏈路並從 DHCP 伺服器接收 IP 地址,我們很快會回到原始聯機狀態:

root@solaris:~# netadm list
TYPE       PROFILE     STATE
ncp        Automatic   online
ncu:phys   net0        online
ncu:ip     net0        online
loc        Automatic   online
loc        NoNet       offline
loc        User        online

手動網路配置

在以下示例中,我們將手動配置伺服器來獲得靜態 IPv4 地址 10.163.198.20。

首先,我們將切換到 DefaultFixed NCP(如果尚未進行此操作):

root@solaris:~# netadm enable -p ncp DefaultFixed

在有多個物理網路的計算機上,可以使用 dladm 確定如何將網路介面名稱對映到物理介面。

root@solaris:~# dladm show-phys
LINK              MEDIA                STATE      SPEED  DUPLEX    DEVICE
net0              Ethernet             up         1000   full      e1000g0
net1              Ethernet             unknown    0      unknown   pcn0

建立靜態 IP 地址是分兩步進行,一是建立 IP 介面,二是建立 IP 地址。一個 IP 介面可以關聯多個 IP 地址。IP 地址物件的名稱採用這種形式介面/描述

在清單 1 所示示例中,我們使用 acme 作為描述。

root@solaris:~# ipadm create-ip net0
root@solaris:~# ipadm show-if
IFNAME     CLASS      STATE      ACTIVE      OVER
lo0        loopback   ok         yes         ---
net0       ip         down       no          ---
root@solaris:~# ipadm create-addr -T static -a 10.163.198.20/24 net0/acme
root@solaris:~# ipadm show-if
IFNAME      CLASS     STATE      ACTIVE      OVER
lo0         loopback  ok         yes         ---
net0        ip        ok         yes         ---
root@solaris:~# ipadm show-addr
ADDROBJ     TYPE      STATIC     ADDR
lo0/v4      static    ok         127.0.0.1/8
net0/acme   static    ok         10.163.198.20/24
lo0/v6      static    ok         ::1/128

清單 1. 配置靜態 IP 地址

然後我們可以新增永續性預設路由:

root@solaris:~# route -p add default 10.163.198.1
add net default: gateway 10.163.198.1
add persistent net default: gateway 10.163.198.1

使用 SMF 的名稱服務配置

名稱服務配置現在通過 SMF 服務而不是通過 /etc 中的配置檔案來儲存和配置。這個變化是 Oracle Solaris 11 中更廣泛配置變化中的一部分,它提供了更大程度的管理可審計性和對系統配置的控制,尤其是在系統更新期間。

SMF 服務 svc:/network/dns/client 管理過去位於 /etc/resolv.conf 中的配置資訊。SMF 服務 svc:/system/name-service/switch 管理過去位於 /etc/nsswitch.conf 中的配置資訊。在兩種情況下,配置資訊還儲存在老式檔案中,以便與可能讀取它們的其他應用程式相容。您 應直接編輯這些老式檔案。對屬性的更改只有在重新整理、重新啟動或啟用服務後才會反映到老式檔案中。

:指定列表和字串作為 SMF 屬性時要求用引號將它們括起來或轉義括號和引號以防止 shell 解釋它們。

示例:使用 SMF 配置 DNS 客戶端

在以下示例中,我們對 svc:/network/dns/client SMF 服務使用 svccfg 命令配置域名服務 (DNS)。這使我們能夠通過主機名查詢 IP 地址或反之:

root@solaris:~# svccfg -s svc:/network/dns/client setprop 
config/search='("uk.acme.com" "us.acme.com" "acme.com")'
root@solaris:~# svccfg -s svc:/network/dns/client listprop config/search
config/search astring	"uk.acme.com" "us.acme.com" "acme.com"
root@solaris:~# svccfg -s svc:/network/dns/client setprop 
config/nameserver=net_address: '(10.167.162.20 10.167.162.36)'
root@solaris:~# svccfg -s svc:/network/dns/client listprop config/nameserver
config/nameserver net_address 10.167.162.20 10.167.162.36

進行配置更改之後,重新整理 SMF 服務:

root@solaris:~# svcadm refresh svc:/network/dns/client 

不必設定每個名稱服務資料庫的屬性。可以使用特殊屬性 config/default 提供預設值。不能使用預設值的項可以單獨定製。

示例:使用 SMF 配置 /etc/switch.conf

在以下示例中,我們使用名稱服務切換機制讓系統可以搜尋 DNS、LDAP、NIS 或本地檔案源來查詢命名資訊。再次對svc:/system/name-service/switch SMF 服務使用 svccfg 命令:

root@solaris:~# svccfg -s svc:/system/name-service/switch setprop config/default = "files nis" 
root@solaris:~# svccfg -s svc:/system/name-service/switch setprop config/host = "files dns nis" 
root@solaris:~# svccfg -s svc:/system/name-service/switch setprop config/password  = "files nis" 
root@solaris:~# svcadm refresh svc:/system/name-service/switch 

config/host 屬性定義 /etc/nsswitch.conf 中的 hosts 和 ipnodes 項,而 config/password 屬性定義 passwd 項。其餘屬性與其 /etc/nsswitch.conf 項的名稱相同。

設定主機名

在 Oracle Solaris 11 中,已經刪除 /etc/nodename 並代之以 svc:/system/identity:node 服務的 config/nodename 屬性。

為設定主機名,我們再次使用 svccfg

root@solaris:~# svccfg -s svc:/system/identity:node setprop config/nodename = astring: hostname
root@solaris:~# svcadm refresh svc:/system/identity:node
root@solaris:~# svcadm restart identity:node

這種設定主機名的方式適用於自動和手動網路配置。

/etc/hosts 的變化

在 Oracle Solaris 11 中,主機 /etc/hosts 中的項現與 localhost 中的一樣。在先前版本的 Oracle Solaris 中,此項與第一個網路介面關聯。

root@solaris:~# cat /etc/hosts
#
# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# Internet host table
#
::1 solaris localhost 
127.0.0.1 solaris localhost loghost 

:有些應用程式安裝程式可能會因 /etc/hosts 檔案中的變化而失敗。如果遇到這種情況,可能需要直接編輯 /etc/hosts

使用配置檔案的自動網路配置

在 Oracle Solaris 11 中,網路配置檔案有助於聚合分散在先前版本 Oracle Solaris 多個不同配置檔案中的網路配置。切換網路配置檔案將導致由單個管理操作應用的不同網路配置的一系列更改。

雖然由於相容問題,保留了傳統配置檔案,但您 應直接編輯任何這些檔案,這是因為在配置檔案啟用或系統重新啟動時將覆蓋任何修改。

網路配置檔案

網路配置檔案至少包含網路配置檔案 (NCP) 和位置配置檔案,並且還可能包含外部網路修飾器 (ENM) 和已知無線網路 (WLAN)。

NCP 將一組資料鏈路和 IP 介面定義為網路配置單元 (NCU)。位置配置檔案定義只能在基本 IP 配置之後配置的其他配置,如名稱服務、IP 篩選器規則和 IPsec 策略。

ENM 是在啟用或取消啟用配置檔案時直接修改網路配置的應用程式或服務。例如,配置虛擬私有網路 (VPN) 需要 ENM。本文不介紹 ENM 的使用或無線網路的配置。

配置檔案有手動或自動啟用模式。當自動配置檔案處於活動狀態時,外部網路事件會使 Oracle Solaris 重新評估哪個是“最佳”自動配置檔案並使該配置檔案進入活動狀態。外部事件包括連線或斷開乙太網電纜、獲得或失去 DHCP 租約或發現無線網路。總有一個活動 NCP 和位置配置檔案。無法通過禁用當前配置檔案來禁用聯網。

建立網路配置檔案

未經過修改的 Automatic 配置檔案一般不適用於大多數企業網路,無論這些網路是靜態的還是通過 DHCP 提供的配置資訊多於Automatic 配置檔案使用的資訊的。

如果網路具有靜態分配的 IP 地址,則需要建立一個 NCP 和一個位置配置檔案。

在本例中,我們將以一個杜撰的 Acme 公司的典型企業網路為例。它有靜態分配的網路地址,使用 NIS 和 DNS 組合,不使用 IPv6。

要在 Acme 網路上配置系統,我們需要建立一個 NCP 和一個位置配置檔案。

示例:建立 NCP

要建立 NCP 及其 NCU,我們使用 netcfg。對於物理鏈路,我們接受 netcfg 提供的預設值。對於 IP 配置,我們希望採用 IPv4 定址和靜態 IP 地址分配,如清單 2 所示。

root@solaris:~# netcfg
netcfg> create ncp acme.corp.ncp
netcfg:ncp:acme.corp.ncp> create ncu phys net0
Created ncu 'net0'.  Walking properties ...
activation-mode (manual) [manual|prioritized]> 
link-mac-addr> 
link-autopush> 
link-mtu> 
netcfg:ncp:acme.corp.ncp:ncu:net0> list
ncu:net0
    type               link
    class              phys
    parent             "acme.corp.ncp"
    activation-mode    manual
    enabled            true
netcfg:ncp:acme.corp.ncp:ncu:net0> end
Committed changes
netcfg:ncp:acme.corp.ncp> create ncu ip net0
Created ncu 'net0'.  Walking properties ...
ip-version (ipv4,ipv6) [ipv4|ipv6]> ipv4
ipv4-addrsrc (dhcp) [dhcp|static]> static
ipv4-addr> 10.163.198.20/24
ipv4-default-route> 10.163.198.1
netcfg:ncp:acme.corp.ncp:ncu:net0> list
ncu:net0
    type                interface
    class               ip
    parent              "acme.corp.ncp"
    enabled             true
    ip-version          ipv4
    ipv4-addrsrc        static
    ipv4-addr           "10.163.198.20/24"
    ipv4-default-route  "10.163.198.1"
    ipv6-addrsrc        dhcp,autoconf
netcfg:ncp:acme.corp.ncp:ncu:net0> end
Committed changes
netcfg:ncp:acme.corp.ncp> end
netcfg> end

清單 2. 建立 NCP

現在我們需要建立位置配置檔案,如清單 3 所示。我們通過其啟用模式將位置配置檔案與網路配置檔案關聯。只要 NCP 處於活動狀態,位置配置檔案將自動啟用。

由於 Acme 使用 NIS 名稱服務和 DNS 名稱服務的組合,因此我們需要提供自己的 /etc/nsswitch.conf,即 /etc/nsswitch.acme

root@solaris:~# netcfg
netcfg> create loc acme.corp.loc
Created loc 'acme.corp.loc'.  Walking properties ...
activation-mode (manual) [manual|conditional-any|conditional-all]> conditional-all
conditions> ncp acme.corp.ncp is active
nameservices (dns) [dns|files|nis|ldap]> dns,nis
nameservices-config-file ("/etc/nsswitch.dns")> /etc/nsswitch.acme
dns-nameservice-configsrc (dhcp) [manual|dhcp]> manual
dns-nameservice-domain> 
dns-nameservice-servers> 10.167.162.20,10.167.162.36
dns-nameservice-search> acme.com,uk.acme.com,us.acme.com
dns-nameservice-sortlist> 
dns-nameservice-options> 
nis-nameservice-configsrc [manual|dhcp]> manual
nis-nameservice-servers> 10.167.162.21
default-domain> acme.com
nfsv4-domain> 
ipfilter-config-file> 
ipfilter-v6-config-file> 
ipnat-config-file> 
ippool-config-file> 
ike-config-file> 
ipsecpolicy-config-file> 
netcfg:loc:acme.corp.loc> list
loc:acme.corp.loc
    activation-mode             conditional-all
    conditions                  "ncp acme.corp.ncp is active"
    enabled                     false
    nameservices                dns,nis
    nameservices-config-file    "/etc/nsswitch.acme"
    dns-nameservice-configsrc   manual
    dns-nameservice-servers     "10.167.162.20","10.167.162.36"
    dns-nameservice-search      "acme.com","uk.acme.com","us.acme.com"
    nis-nameservice-configsrc   manual
    nis-nameservice-servers     "10.167.162.21"
    default-domain              "acme.com"
netcfg:loc:acme.corp.loc> end
Committed changes
netcfg> end

清單 3. 建立位置配置檔案

現在我們可以啟用 NCP 了,如清單 4 所示,並將自動啟用位置配置檔案。

root@solaris:~# netadm enable acme.corp.ncp
Enabling ncp 'acme.corp.ncp'
root@solaris:~# netadm list
TYPE        PROFILE        STATE
ncp         acme.corp.ncp  online
ncu:phys    net0           online
ncu:ip      net0           online
ncp         Automatic      disabled
loc         acme.corp.loc  online
loc         Automatic      offline
loc         NoNet          offline
loc         User           disabled

清單 4. 啟用 NCP

編輯 NCP

使用 netcfg 編輯現有 NCP 有兩種方式。一種是使用 set 命令設定各個屬性;另一種是使用 walkprop 命令設定所有屬性。

當您建立配置檔案時,netcfg 將自動執行 walkprop 命令。

在清單 5 所示示例中,我們向現有 acme.corp.loc 位置配置檔案新增第三個 DNS 伺服器。

root@solaris:~# netcfg
netcfg> select loc acme.corp.loc 
netcfg:loc:acme.corp.loc> list 
loc:acme.corp.loc 
    activation-mode             conditional-all 
    conditions                  "ncp acme.corp.ncp is active" 
    enabled                     false 
    nameservices                dns,nis 
    nameservices-config-file    "/etc/nsswitch.acme" 
    dns-nameservice-configsrc   manual 
    dns-nameservice-servers     "10.167.162.20","10.167.162.36" 
    dns-nameservice-search      "acme.com", "uk.acme.com","us.acme.com"
    nis-nameservice-configsrc   manual
    nis-nameservice-servers     "10.167.162.21"
    default-domain              "acme.com" 
netcfg:loc:acme.corp.loc>

清單 5. 新增 DNS 伺服器

list 命令只顯示已經設定的屬性;list -a 顯示配置檔案的所有屬性,如清單 6 所示。

netcfg:loc:acme.corp.loc> list -a
loc:acme.corp.loc 
    activation-mode             conditional-all 
    conditions                  "ncp acme.corp.ncp is active" 
    enabled                     false 
    nameservices                dns,nis 
    nameservices-config-file    "/etc/nsswitch.acme" 
    dns-nameservice-configsrc   manual
    dns-nameservice-domain 
    dns-nameservice-servers     "10.167.162.20","10.167.162.36" 
    dns-nameservice-search      "acme.com", uk.acme.com","us.acme.com"
    dns-nameservice-sortlist
    dns-nameservice-options
    nis-nameservice-configsrc   manual
    nis-nameservice-servers     "10.167.162.21"
    ldap-nameservice-configsrc
    ldap-nameservice-servers
    default-domain              "acme.com"
    nfsv4-domain
    ipfilter-config-file
    ipfilter-v6-config-file
    ipnat-config-file
    ippool-config-file
    ike-config-file
    ipsecpolicy-config-file
netcfg:loc:acme.corp.loc>

netcfg:loc:acme.corp.loc> set dns-nameservice-servers = "10.167.162.20","10.167.162.36","192.135.82.44" 
netcfg:loc:acme.corp.loc> list 
loc:acme.corp.loc 
    activation-mode             conditional-all 
    conditions                  "ncp acme.corp.ncp is active" 
    enabled                     false 
    nameservices                dns,nis 
    nameservices-config-file    "/etc/nsswitch.dns" 
    dns-nameservice-configsrc   manual 
    dns-nameservice-servers     "10.167.162.20","10.167.162.36","192.135.82.44" 
    dns-nameservice-search      "acme.com", uk.acme.com","us.acme.com"
    nis-nameservice-configsrc   manual
    nis-nameservice-servers     "10.167.162.21"
netcfg:loc:acme.corp.loc> verify 
All properties verified 
netcfg:loc:acme.corp.loc> commit 
Committed changes 
netcfg:loc:acme.corp.loc> end 
netcfg> end 
root@solaris:~#

清單 6. 顯示所有屬性

總結

在 Oracle Solaris 11 中,網路配置發生了很大變化,引入了網路配置檔案和實現了對資料中心中不同網路結構的整合管理。通過使用網路配置檔案,管理員可以簡化複雜配置並將其作為一組更改進行應用。

另請參見

有關 Oracle Solaris 11 網路管理的更多資訊,請參見以下管理指南:

下面是 Oracle Solaris 11 的一些其他資源:

關於作者

Andrew Walton 是 Oracle ISV 組的高階工程師,在 UNIX 業界有著 20 多年的經驗,曾就職於 Silicon Graphics、Sun 和 Oracle。他專注於應用程式效能調優以及 C 和 C++ 程式碼移植。



相關文章