作者:Andrew Walton
2012 年 5 月发布
Oracle Solaris 11 网络配置新特性/etc/hosts
的变化Oracle Solaris 11 网络架构与先前版本的 Oracle Solaris 相比有了很大的变化。不但实现方式发生了变化,而且网络接口的名称以及管理和配置这些接口的命令和方法也有了变化。
|
引入这些变化是为了给网络管理带来更统一的集成式体验,特别是当管理员添加如链路聚合、桥接、负载平衡或虚拟网络等较复杂的配置时。除了传统的固定网络配置之外,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 服务而不是通过 /etc
中的配置文件来存储和配置。这个变化是 Oracle Solaris 11 中更广泛配置变化中的一部分,它提供了更大程度的管理可审计性和对系统配置的控制,尤其是在系统更新期间。
SMF 服务 svc:/network/dns/client
管理过去位于 /etc/resolv.conf
中的配置信息。SMF 服务 svc:/system/name-service/switch
管理过去位于 /etc/nsswitch.conf
中的配置信息。在两种情况下,配置信息还存储在老式文件中,以便与可能读取它们的其他应用程序兼容。您不 应直接编辑这些老式文件。对属性的更改只有在刷新、重新启动或启用服务后才会反映到老式文件中。
注:指定列表和字符串作为 SMF 属性时要求用引号将它们括起来或转义括号和引号以防止 shell 解释它们。
在以下示例中,我们对 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
提供默认值。不能使用默认值的项可以单独定制。
/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 及其 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
使用 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++ 代码移植。
修订版 1.0,2012 年 5 月 16 日 |
要了解 Oracle 所有技术中与 sysadmin 有关的内容,请关注 Facebook 和 Twitter 上的 OTN Systems。