如何在 Oracle Solaris 11 中配置网络


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++ 代码移植。



  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值