跳过导航链接 | |
退出打印视图 | |
![]() |
手册页第 1M 部分:系统管理命令 Oracle Solaris 11 Information Library (简体中文) |
- 配置网络接口参数
ifconfig interface [address_family] [address [/prefix_length] [dest_address]] [addif address [/prefix_length]] [removeif address [/prefix_length]] [arp | -arp] [auth_algs authentication algorithm] [encr_algs encryption algorithm] [encr_auth_algs authentication algorithm] [auto-revarp] [broadcast address] [deprecated | -deprecated] [preferred | -preferred] [destination dest_address] [ether [address]] [failover | -failover] [group [name | ""]] [index if_index] [ipmp] [metric n] [modlist] [modinsert mod_name@pos] [modremove mod_name@pos] [mtu n] [netmask mask] [plumb] [unplumb] [private | -private] [nud | -nud] [set [address] [/netmask]] [standby | -standby] [subnet subnet_address] [tdst tunnel_dest_address] [token address/prefix_length] [tsrc tunnel_src_address] [trailers | -trailers] [up] [down] [usesrc [name | none]] [xmit | -xmit] [encaplimit n | -encaplimit] [thoplimit n] [router | -router] [zone zonename | -zone | -all-zones]
ifconfig [address_family] interface {auto-dhcp | dhcp} [primary] [wait seconds] drop | extend | inform | ping | release | start | status
ifconfig 命令用于向网络接口分配地址以及配置网络接口参数。由 ifconfig 命令配置的网络接口在重新引导后即不再存在。必须使用 ipadm(1M) 命令来配置持久性的网络接口。如果未指定任何选项,ifconfig 会显示网络接口的当前配置。如果指定了地址族,ifconfig 只报告特定于该地址族的详细信息。只有特权用户才能修改网络接口的配置。以大括号 ({ }) 括起的选项表明必须指定这些选项之一。
使用 auto-dhcp 或 dhcp 参数的 ifconfig 用于控制接口的动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP) 配置。在此模式中,ifconfig 用于控制 DHCP 客户机守护进程 dhcpagent(1M) 的运行。一旦使用 start 操作数将接口置于 DHCP 控制下,就不能在正常运行时使用 ifconfig 修改该接口的地址或特征。如果受 DHCP 控制的接口地址发生更改,dhcpagent 将会取消 DHCP 对该接口的控制。
所支持的选项如下:
在指定的物理接口中创建下一个未使用的逻辑接口。
使接口可用于系统上的每个共享 IP 区域。要将数据传送到哪个适当区域由 tnzonecfg 数据库确定。仅当系统配置有 Solaris Trusted Extensions 功能时,此选项才可用。
tnzonecfg 数据库在 tnzonecfg(4) 手册页中进行了介绍,该手册页包含在Solaris Trusted Extensions Reference Manual中。
通过设置 ANYCAST 标志,将逻辑接口标记为任播地址。有关任播的更多信息,请参见下文的“接口标志”。
通过清除 ANYCAST 标志,将逻辑接口标记为非任播地址。
允许在网络级别地址与链路级别地址之间的映射中使用地址解析协议 (Address Resolution Protocol, ARP)(缺省值)。当前已对 IPv4 地址与 MAC 地址之间的映射实现此选项。
禁止对物理接口使用 ARP。不能对 IPMP IP 接口禁用 ARP。
对于隧道,使用指定的验证算法启用 IPsec AH。该算法可以是编号或算法名称,也可以是 any,表示没有首选算法。必须在同一命令行上指定所有 IPsec 隧道属性。要禁用隧道安全性,请将 auth_alg 指定为 none。
现在,配置隧道的安全属性时最好使用 ipsecconf(1M) 命令。如果使用 ipsecconf 设置隧道的安全属性,则此关键字不会对隧道有影响。
使用 DHCP 自动获取此接口的地址。此选项有一个完全等效的别名,称为 dhcp。
对于 IPv6,指定的接口必须是第零个逻辑接口(物理接口名称),该接口具有链路本地地址。
将接口定义为 primary。该接口定义为用于传送客户机范围配置数据的首选接口。在任何给定时间只能有一个接口是主接口。如果随后选择另一个接口作为主接口,它会取代先前的主接口。如果在客户机工作站引导后将接口指定为主接口,则没有多大意义,因为此时许多应用程序都已启动并使用从前一个主接口读取的数据进行了配置。
ifconfig 命令在操作完成或达到指定时间间隔(以这两个时间中较短的为准)之前将一直处于等待状态。如果未指定等待时间间隔,并且操作无法立即完成,则 ifconfig 将等待 30 秒直到请求的操作完成。也可以使用符号值 forever,表示永远。
从 DHCP 控制中删除指定接口而不通知 DHCP 服务器,并记录当前租用供以后使用。此外,对于 IPv4,将 IP 地址设置为零。对于 IPv6,取消激活由 dhcpagent 激活的所有逻辑接口。
尝试延长对接口 IP 地址的租用。此选项不是必需的,因为代理会在租用期满很久之前就自动延长租用。
从 DHCP 获取网络配置参数,而无需获取对 IP 地址的租用。在通过 DHCP 之外的其他机制获取 IP 地址时,此选项十分有用。
检查指定的接口是否受 DHCP 控制,这意味着该接口由 DHCP 代理管理并且工作正常。退出状态为 0 时表示成功。
通过通知服务器并放弃当前租用,放弃接口的 IP 地址。对于 IPv4,会将 IP 地址设置为零。对于 IPv6,会取消激活由 dhcpagent 激活的所有逻辑接口。
对接口启动 DHCP。
显示接口的 DHCP 配置状态。
使用反向地址解析协议 (Reverse Address Resolution Protocol, RARP) 自动获取此接口的地址。如果该接口不支持 RARP,此操作将会失败;例如,IPoIB (IP over InfiniBand) 和 IPv6 接口。
仅适用于 IPv4。指定用于表示向网络进行广播的地址。缺省广播地址是主机部分全部为 1 的地址。如果为 broadcast 值指定“+”(加号),则会导致将广播地址重置为(可能是新的)地址和网络掩码的相应缺省值。ifconfig 的参数按从左至右的方向解释。因此,
example% ifconfig -a netmask + broadcast +
和
example% ifconfig -a broadcast + netmask +
可能会导致向接口的广播地址分配不同的值。
将逻辑接口标记为已过时。与已过时接口关联的地址不会用作传出包的源地址,除非接口上没有其他可用地址或应用程序已显式绑定到此地址。状态显示会将 DEPRECATED 显示为标志的一部分。有关 ifconfig 支持的标志的信息,请参见接口标志。
将逻辑接口标记为未过时。与此类接口关联的地址可用作传出包的源地址。
将逻辑接口标记为首选接口。此选项仅适用于 IPv6 地址。与系统上配置的所有其他地址相比,分配给首选逻辑接口的地址将作为首选源地址,除非该地址相对于目标地址处于不适当的范围。无论分配给哪一个物理接口,首选地址都将用作源地址。例如,可以配置回送接口的首选源地址,然后使用路由协议通告此地址的可访问性。
将逻辑接口标记为非首选接口。
为点对点接口设置目标地址。
此选项是 auto-dhcp 选项的别名
将逻辑接口标记为“关闭”。(即,禁用 IFF_UP 位。)当逻辑接口标记为“关闭”时,系统不会尝试将分配给该接口的地址用作传出包的源地址,并且不会将发往该地址的传入包识别为传送到此主机。此外,当给定物理接口上的所有逻辑接口均“关闭”时,该物理接口本身也将处于禁用状态。
当逻辑接口关闭时,将该接口指定为输出(使用 route(1M) 命令中的 -ifp 选项或 route(7P) 套接字中的 RTA_IFP)的所有路由都将从转发表中删除。如果该接口恢复启用,则标记为 RTF_STATIC 的路由将返回到该表中,而未标记为 RTF_STATIC 的路由会直接被删除。
如果可能用于访问特定网关地址的所有逻辑接口均已关闭(在不带 interface 选项的情况下指定,如上一段落所述),则受影响的网关路由将被视为已设置 RTF_BLACKHOLE 标志。所有匹配的包都会因该网关不可访问而被放弃。
将接口的隧道封装限制设置为 n。此选项仅适用于 IPv4–in-IPv6 和 IPv6–in-IPv6 隧道,它只修改底层 IPv6 隧道链路的 encaplimit 链路属性(请参见 dladm(1M))。隧道封装限制用于控制包在离开任何隧道之前可进入的隧道的数量(即隧道嵌套级别)。
此选项已过时,已被 dladm(1M) encaplimit 链路属性所取代。
禁止生成隧道封装限制。此选项仅适用于 IPv4–in-IPv6 和 IPv6–in-IPv6 隧道。此选项只是将底层 IPv6 隧道链路的 encaplimit 链路属性设置为 0(请参见 dladm(1M) encaplimit)。
此选项已过时,已被 dladm(1M) encaplimit 链路属性所取代。
对于隧道,使用指定的验证算法启用 IPsec ESP。此选项可以是编号或算法名称,也可以是 any 或 none,表示没有首选算法。如果指定了 ESP 加密算法但未指定验证算法,则 ESP 验证算法的缺省值将为 any。
现在,配置隧道的安全属性时最好使用 ipsecconf(1M) 命令。如果使用 ipsecconf 设置隧道的安全属性,则此关键字不会对隧道有影响。
对于隧道,使用指定的加密算法启用 IPsec ESP。该选项可以是编号或算法名称。请注意,必须在同一命令行上指定所有 IPsec 隧道属性。要禁用隧道安全性,请将 encr_alg 的值指定为 none。如果指定了 ESP 验证算法但未指定加密算法,则 ESP 加密的缺省值将为 null。
现在,配置隧道的安全属性时最好使用 ipsecconf(1M) 命令。如果使用 ipsecconf 设置隧道的安全属性,则此关键字不会对隧道有影响。
如果未提供地址并且用户是超级用户或具有打开底层数据链路的足够特权,则会显示当前以太网地址信息。
在其他情况下,如果用户是超级用户或具有足够特权,会将接口的以太网地址设置为 address。该地址是表示为 x:x:x:x:x:x 格式的以太网地址,其中 x 是一个介于 0 与 FF 之间的十六进制数字。类似地,对于 IPoIB (IP over InfiniBand) 接口,该地址是 20 字节的以冒号分隔的十六进制数字,这些数字也介于 0 和 FF 之间。
某些(不是全部)以太网接口卡具有其自己的地址。要使用没有自己地址的卡,请参见 IEEE 802.3 规范第 3.2.3(4) 节中有关本地管理的地址空间的定义。请注意,IPMP 组中的所有 IP 接口都必须具有唯一的硬件地址;请参见 in.mpathd(1M)。
对逻辑接口设置 NOFAILOVER。这使关联的地址可供 in.mpathd 用来对关联的物理 IP 接口执行基于探测器的故障检测。不利的一面是,这也会对逻辑接口设置 DEPRECATED。不允许对 IPMP IP 接口执行此操作。
清除逻辑接口的 NOFAILOVER。这是缺省值。在启用时这些逻辑接口会被迁移(请参见 IP MULTIPATHING GROUPS)。
当应用于物理接口时,此选项会将该接口放在指定的组中。如果组不存在,将会创建该组以及一个或多个 IPMP IP 接口(对于 IPv4 和/或 IPv6)。未标记为 NOFAILOVER 的所有 UP 地址都会被迁移到 IPMP IP 接口(请参见 IP MULTIPATHING GROUPS)。如果将组名指定为 "",则会从该组中删除物理 IP 接口。
当应用于物理 IPMP IP 接口时,此选项会将 IPMP 组重命名为新名称。如果新名称已存在或将名称指定为 "",此操作会失败。建议不要重命名 IPMP 组。应在通过 ipmp 子命令创建 IPMP IP 接口时,为该接口指定一个有意义的名称,系统也会将该名称用作 IPMP 组名。
更改接口的接口索引。n 的值必须是未由其他接口使用的接口索引 (if_index)。if_index 是用于在系统上唯一标识网络接口的非零正数。
使用指定名称创建 IPMP IP 接口。必须分别创建供 IPv4 和 IPv6 使用的接口。address_family 参数控制该命令是应用于 IPv4 还是 IPv6(如果未指定,则应用于 IPv4)。所有 IPMP IP 接口都设置了 IPMP 标志。
将接口的路由度量设置为 n;如果未指定值,则缺省为 0。路由度量由路由协议使用。较高的度量会降低相应路由的适用性。度量计为目标网络或主机的附加跳数。
将名为 mod_name 的模块插入设备流的 pos 位置处。该位置是相对于流头的位置。位置 0 表示紧接在流头下的位置。
根据 modlist 选项中的示例,使用以下命令将名为 ipqos 的模块插入到 ip 模块之下、防火墙模块之上:
example% ifconfig eri0 modinsert ipqos@2
随后会列出设备流中的所有模块,如下所示:
example% ifconfig eri0 modlist 0 arp 1 ip 2 ipqos 3 firewall 4 eri
列出设备流中的所有模块。
以下示例列出设备流中的所有模块:
example% ifconfig eri0 modlist 0 arp 1 ip 2 firewall 4 eri
从设备流中删除 pos 位置的名为 mod_name 的模块。该位置是相对于流头的位置。
根据 modinsert 选项中的示例,在插入 ipqos 模块后使用以下命令从设备流中删除防火墙模块:
example% ifconfig eri0 modremove firewall@3
随后会列出设备流中的所有模块,如下所示:
example% ifconfig eri0 modlist 0 arp 1 ip 2 ipqos 3 eri
请注意,核心 IP 栈模块(例如,ip 和 tun 模块)无法被删除。
将接口的最大传输单元设置为 n。对于许多类型的网络,mtu 具有上限;例如,对于以太网,上限为 1500。此选项会对受影响的接口设置 FIXEDMTU 标志。
仅适用于 IPv4。指定将网络划分为子网络时要保留的地址部分。掩码包含本地地址的网络部分和子网部分,子网部分从地址的主机字段获取。掩码由 1 和 0 组成,其中 1 表示 32 位地址中用于网络和子网部分的位位置,0 表示主机部分。掩码应至少包含标准网络部分,并且子网字段应与网络部分相邻。可通过以下四种方法之一指定掩码:
使用带有前导 0x 的单个十六进制数字
使用点记法地址
使用“+”(加号)地址
使用在网络数据库 networks(4) 中找到的伪主机名/伪网络名。
如果为网络掩码值指定“+”(加号),将在 netmasks(4) 数据库中查找掩码。此查找过程会在该数据库中查找匹配的最长网络掩码,方法是首先从作为键的接口 IPv4 地址开始,然后逐个将地址的各个低序位设置到掩码中。这种迭代式查找可确保在网络号中使用可变长度子网掩码时可以使用 netmasks(4) 数据库指定网络掩码。
如果将伪主机名/伪网络名提供为网络掩码值,则网络掩码数据可能位于 hosts 或 networks 数据库中。首先使用 gethostbyname(3NSL) 查找名称。如果在此处未找到,则在 getnetbyname(3SOCKET) 中查找。这些接口可能又会使用 nsswitch.conf(4) 确定要用来获取实际值的数据存储。
对于 inet 和 inet6,可将通过 mask 传达的相同信息指定为附加到 address 参数的 prefix_length。
对点对点物理接口启用相邻节点不可访问性检测机制。
对点对点物理接口禁用相邻节点不可访问性检测机制。
对于物理 IP 接口,打开与物理接口名称关联的数据链路并设置 IP 使用该数据链路所需的激活。当与逻辑接口名称一起使用时,此命令用于在现有物理 IP 接口上创建特定的命名逻辑接口。
必须根据 address_family 参数分别为 IPv4 和 IPv6 激活接口(如果未指定该参数,则为 IPv4 激活接口)。在激活接口之前,ifconfig -a 不会显示该接口。
请注意,IPMP IP 接口不是绑定到特定的数据链路,而是使用 ipmp 子命令创建的。
向 in.routed 路由守护进程指示不能通告指定的逻辑接口。
指定不可通告的接口。
删除指定物理接口上与指定 address 匹配的逻辑接口。
对接口启用 IP 转发。如果启用,则会将接口标记为 ROUTER 并可通过该接口转发 IP 包。如果对 IPMP 组中的任何 IP 接口启用 ROUTER,也会对该 IPMP 组中的所有 IP 接口启用此选项。
对接口禁用 IP 转发。IP 包不通过该接口转发。如果对 IPMP 组中的任何 IP 接口禁用 ROUTER,也会对该 IPMP 组中的所有 IP 接口禁用此选项。
为逻辑接口设置 address 和/或 prefix_length。
将物理 IP 接口标记为 STANDBY 接口。如果接口标记为 STANDBY 并且属于 IPMP 组,将不会使用该接口进行数据通信,除非 IPMP 组中的另一个接口无法使用。当 STANDBY 接口已运行但未用于数据通信时,它还会标记为 INACTIVE。不允许对 IPMP IP 接口执行此操作。
清除接口的 STANDBY。这是缺省值。
为接口设置子网地址。
设置隧道的目标地址。该地址不能与隧道的 dest_address 相同,因为包不通过此类隧道传出系统。
此选项已过时,已被 dladm(1M) create-iptun 和 modify-iptun 子命令所取代。
为隧道接口设置跳数限制。对于 IPv6–in-IPv4 和 IPv4–in-IPv4 隧道,该跳数限制值用作 IPv4 头中的 TTL。对于 IPv6–in-IPv6 和 IPv4–in-IPv6 隧道,该跳数限制值用作 IPv6 头中的跳数限制。此选项只修改底层 IP 隧道链路的 hoplimit 链路属性(请参见 dladm(1M))。
此选项已过时,已被 dladm(1M) hoplimit 链路属性所取代。
设置接口的 IPv6 令牌以用于地址自动配置。
example% ifconfig eri0 inet6 token ::1/64
此标志以前会在某些链路级别导致 IPv4 包的非标准封装。此发行版附带的驱动程序将不再使用此标志。该标志仅用于兼容目的,将被忽略。
禁止使用“尾部”链路级封装。
设置隧道的源地址。这是外部封装 IP 头中的源地址。该地址必须是已使用 ifconfig 进行配置的另一个接口的地址。
此选项已过时,已被 dladm(1M) create-iptun 和 modify-iptun 子命令所取代。
对于物理或 IPMP 接口,删除所有关联的逻辑 IP 接口并取消 IP 使用该接口所需的所有激活。对于 IPMP IP 接口,如果组不为空,则此命令将会失败。对于逻辑接口,将会删除该逻辑接口。
必须根据 address_family 参数分别为 IPv4 和 IPv6 取消激活接口(如果未指定该参数,则为 IPv4 取消激活接口)。此命令成功执行后,接口名称将不再显示在 ifconfig -a 的输出中。
将逻辑接口标记为 UP。因此,IP 模块将接受发往关联地址的包(除非该地址为零)以及任何关联的多播和广播 IP 地址。同样,IP 模块也允许以关联地址作为源地址发送包。至少必须有一个逻辑接口为 UP,这样关联的物理接口才能收发包。
指定要用于选择源地址的物理接口。如果使用关键字 none,则将清除以前的所有选择。
如果应用程序未使用 bind(3SOCKET) 选择非零源地址,系统将会根据传出接口和地址选择规则来选择适当的源地址(请参见 ipaddrsel(1M))。
如果指定了 usesrc 并在输出的转发表中选择了指定的接口,则在选择源地址时系统会首先考虑指定的物理接口及其关联的逻辑接口。如果转发表中未列出可用地址,将应用普通的选择规则。例如,如果输入以下内容:
# ifconfig eri0 usesrc vni0
并且,vni0 分配有地址 10.0.0.1,系统会将 10.0.0.1 首选为源自本地连接并通过 eri0 发出的任何包的源地址。示例部分中提供了详细示例。
虽然可指定任何物理接口(甚至回送),但请注意您也可以指定虚拟 IP 接口(请参见 vni(7d))。虚拟 IP 接口不与任何物理硬件关联,因此不易受硬件故障的影响。可以指定任意数量的物理接口来使用在单个虚拟接口上承载的源地址。这可以简化基于路由的多路径配置。如果有一个物理接口失败,通信将会通过其余某个正常运行的物理接口继续进行。此方案假定以某一方式(例如,路由协议)通告在虚拟接口上承载的地址的可访问性。
由于 ifconfig preferred 选项适用于所有接口,因此它的粒度比 usesrc 选项粗。usesrc 和 setsrc(路由子命令)将按先后顺序覆盖此选项。
允许逻辑接口传送包。这是逻辑接口处于启用状态时的缺省行为。
禁止通过接口发送包。但该接口仍将会继续接收包。
将逻辑接口放入区域 zonename 中。命名区域在处于就绪或运行中状态的内核中必须处于活动状态。当区域停止或重新引导时,接口将被取消激活。必须将区域配置为共享 IP 区域。zonecfg(1M) 用于向专用 IP 区域分配网络接口名称。
将 IP 接口放在全局区域中。这是缺省值。
下面介绍了 interface 操作数以及影响它的地址参数。
采用以下格式之一的字符串:
名称后跟物理单元,例如 eri0 或 ce1
名称后跟物理单元:逻辑单元,例如 eri0:1
ip.tunN、ip6.tunN 或 ip6to4.tunN(表示隐式 IP 隧道链路)
如果接口名称以短划线 (-) 开头,它将解释为指定一组接口的一组选项。在这种情况下,必须将 -a 包含在这些选项中,并可按任意顺序添加以下其他选项。如果给出其中某一接口名称,则其后跟的命令将应用于所有匹配的接口。
将命令应用于指定地址族的所有接口。如果未在命令行或未通过 /etc/default/inet_type 提供地址族,将选择所有地址族。
将命令应用于系统中的所有“关闭”接口。
将命令应用于不受 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)控制的所有接口。
将命令应用于系统中的所有“启动”接口。
将命令应用于用户区域中的所有接口。
将命令应用于所有 IPv4 接口。
将命令应用于所有 IPv6 接口。
地址族由 address_family 参数指定。ifconfig 命令当前支持以下族:inet 和 inet6。如果未指定地址族,则缺省值为 inet。
ifconfig 在显示接口信息时遵从 /etc/default/inet_type 文件中的 DEFAULT_IP 设置。如果 DEFAULT_IP 设置为 IP_VERSION4,ifconfig 将会省略与 IPv6 接口相关的信息。但是,如果在 ifconfig 命令行显式指定地址族(inet 或 inet6),该命令行会覆盖 DEFAULT_IP 设置。
对于 IPv4 族 (inet),address 是位于主机名数据库(请参见 hosts(4))或网络信息服务 (Network Information Service, NIS) 映射 hosts 中的主机名,或者是用 Internet 标准“点记法”表示的 IPv4 地址。
对于 IPv6 族 (inet6),address 是位于主机名数据库(请参见 hosts(4))或网络信息服务 (Network Information Service, NIS) 映射 ipnode 中的主机名,或者是采用 Internet 标准以冒号分隔的十六进制格式的 IPv6 地址,该格式表示为 x:x:x:x:x:x:x:x,其中 x 是一个介于 0 和 FFFF 之间的十六进制数字。
对于 IPv4 和 IPv6 族(inet 和 inet6),prefix_length 是一个介于 0 和地址位数之间的数字。对于 inet,地址位数为 32;对于 inet6,地址位数为 128。prefix_length 指示网络掩码中的前导设置位数。
如果提供了 dest_address 参数以及 address 参数,此选项指定点对点链路另一端通信方的地址。
可通过所配置隧道以外的其他接口访问的地址。此选项向隧道指示将通过隧道传送的包发送到的位置。此地址不能与所配置的接口目标地址相同。
一个附加到已配置接口(已使用 ifconfig 配置为启动)的地址。
ifconfig 命令支持以下接口标志。此上下文中的“地址”一词指逻辑接口(例如 eri0:0),而“接口”指物理接口(例如 eri0)。
地址来自无状态 addrconf。利用无状态机制,主机可以使用路由器所通告的信息与本地可用信息的组合生成其自己的地址。路由器会通告用于标识与链路关联的子网的前缀,而主机会生成用于在子网中唯一标识某个接口的“接口标识符”。如果缺少路由器提供的信息,主机可以生成链路本地地址。此标志特定于 IPv6。
指示 anycast 地址。anycast 地址标识提供特定类型服务的系统组的最近成员。anycast 地址将分配给系统组。包将传送给 anycast 地址所标识的最近组成员,而不是传送给该组的所有成员。
此 broadcast 地址是有效地址。此标志与 POINTTOPOINT 互斥
此接口支持某种形式的服务类 (Class of Service, CoS) 标记。此标志的一个示例是 VLAN 接口支持的 802.1D 用户优先级标记。对于 IPMP IP 接口,仅当组中的所有接口都设置了 CoS 时才会设置此标志。
请注意,仅对位于 VLAN 链路和以太网链路且其 dladm(1M) tagmode 链路属性设置为 normal 的接口设置此标志。
此地址已过时。此地址不会用作传出包的源地址,除非此接口上没有任何其他地址或应用程序已显式绑定到该地址。已过时的 IPv6 地址包含在 IPv6 重新编号标准机制中,在不用时会被彻底删除。对于 IPv4 和 IPv6,DEPRECATED 也会在所有 NOFAILOVER 地址上设置,但这一点在以后的发行版中可能会更改。
逻辑接口的地址由 dhcpagent(1M) 管理。对于 IPv6,如果已在第零个逻辑接口上启动 DHCPv6,也会在该接口上设置此标志;请参见 in.ndpd(1M)。
逻辑接口因该接口上配置的 IP 地址是重复地址而被禁用。网络上的其他某一节点正在使用此地址。如果此地址是由 DHCP 配置的或者是临时地址,系统可能会自动选择另一个地址。否则,系统会定期尝试恢复此地址,并在网络中的地址冲突消除后恢复接口。如果更改此地址或网络掩码,或将逻辑接口设置为 up,将会重新启动重复地址检测。如果将接口设置为 down,则会终止恢复并删除 DUPLICATE 标志。
in.mpathd 守护进程已确定接口故障。FAILED 接口无法用于收发 IP 数据通信。如果对 IPMP 组中的某一物理 IP 接口设置了此标志,IP 数据通信将继续经由 IPMP 组中的其他可用物理 IP 接口传送。如果对 IPMP IP 接口设置了此标志,则整个组将失败,无法通过该组中的任何接口收发数据通信。
已使用 -mtu 选项设置 MTU。此标志为只读标志。设置有此标志的接口具有固定 MTU 值,当驱动程序向 IP 通知链路 MTU 更改时可能发生的动态 MTU 更改不会影响该值。
物理接口正常但无法用于根据管理策略收发数据通信。此标志最初由 standby 子命令设置,随后由 in.mpathd 进行控制。启用 FAILBACK=no 模式时也会设置该标志(请参见 in.mpathd(1M)),以指示 IP 接口已修复但未在使用。
指示这是 IPMP IP 接口。
指示这是回送接口。
指示使用广播地址在此接口上进行多播。
接口支持多播。IP 假定支持硬件广播或作为点对点链路的任何接口都将支持多播。
此接口没有地址解析协议 (address resolution protocol, ARP),该协议适用于没有广播地址的设备的所有接口。此标志特定于 IPv4。
in.mpathd 可使用与此逻辑接口关联的地址,对关联的物理 IP 接口进行基于探测器的故障检测。
此接口没有地址,只是具有链路上的子网。
对此接口禁用 NUD。节点会使用 NUD(neighbor unreachability detection,相邻节点不可访问性检测)跟踪其相邻节点(节点会主动向其发送包)的可访问性状态,从而在检测到有相邻节点不可访问时执行任何恢复。此标志特定于 IPv6。
此接口不交换路由信息。对于 RIP-2,不通过此接口发送路由包。此外,似乎来自此接口的消息也不会收到响应。此接口的子网或地址不包含在通过其他接口发送到其他路由器的通告中。
指示地址不会传送包。RIP-2 也不会通告此地址。
接口处于脱机状态,因此不能收发 IP 数据通信。仅对 IPMP 组中的 IP 接口设置此标志。请参见 if_mpadm(1M) 和 cfgadm(1M)。
指示地址是点对点链路。此标志与 BROADCAST 互斥
此地址是首选 IPv6 源地址。该地址将用作与所有 IPv6 目标之间的 IPv6 通信的源地址,除非系统上有其他地址处于更合适的范围内。DEPRECATED 标志优先于 PREFERRED 标志。
指示不通告此地址。对于 RIP-2,此接口用于发送通告。不过,子网和此地址都不包含在发送到其他路由器的通告中。
指示接口处于混杂模式的只读标志。与处于混杂模式的接口关联的所有地址都将显示 PROMISC 标志(例如,为了响应 ifconfig -a)。
指示可通过接口转发 IP 包。
指示已分配接口所需的资源。对于某些接口,此标志还指示链路已启动。对于 IPMP IP 接口,只要组中的一个 IP 接口处于活动状态,就会设置 RUNNING。
指示此物理接口不会用于数据通信,除非 IPMP 组中的其他接口无法使用。INACTIVE 和 FAILED 标志指示目前是否正在使用此物理接口。
指示这是 RFC 3041 中定义的临时 IPv6 地址。
当链路的本地 IP 地址与系统中其他某一链路的本地地址相匹配时,将设置此标志。
指示逻辑接口(及关联的物理接口)已启动。IP 模块将接受发往 UP 地址(该地址为零时除外)以及任何关联的多播和广播 IP 地址的包。同样,IP 模块还允许以 UP 地址作为源地址发送包。
指示物理接口没有底层硬件。无法通过虚拟接口发送或接收包。这些接口用于配置可用在多个接口上的本地地址。(另请参见 usesrc 选项。)
指示已使用 dladm(1M) 中的 allowed-ips 链路属性对物理接口实施第 3 层保护。
指示 IPMP 组中的 FAILED 底层接口正在探测它是否已修复。PROBER 标志及其语义供 Solaris IPMP 实现内部使用,可能会有所更改。
Solaris TCP/IP 允许多个逻辑接口与一个物理网络接口关联。这样可以向单台计算机分配多个 IP 地址,即使该计算机只能有一个网络接口也是如此。物理网络接口的名称采用驱动程序名称后跟物理单元号格式,而逻辑接口的名称采用驱动程序名称后跟物理单元号:逻辑单元号格式。物理接口是使用 plumb 命令配置到系统中的。例如:
example% ifconfig eri0 plumb
在物理接口已“激活”后,即可通过 ifconfig 命令的单独选项 -plumb 或 -addif 配置与该物理接口关联的逻辑接口。
example% ifconfig eri0:1 plumb
以上命令分配与物理接口 eri0 关联的特定逻辑接口。以下命令
example% ifconfig eri0 addif 192.168.200.1/24 up
在 eri0 物理接口上分配下一个可用的逻辑单元号,并分配 address 和 prefix_length。
可使用不同于关联物理接口的参数(address、prefix_length 等)来配置逻辑接口。也可以为与同一物理接口关联的多个逻辑接口指定不同的参数。每个逻辑接口都必须与一个现有的启动状态物理接口关联。例如,只有在已激活物理接口 eri0 后,才能配置逻辑接口 eri0:1。
要删除逻辑接口,请使用 unplumb 或 removeif 选项。例如,
example% ifconfig eri0:1 down unplumb
将删除逻辑接口 eri0:1。
共享同一链路层广播域的各物理接口必须通过 group 子命令集中到单个 IP 多路径 (IP Multipathing, IPMP) 组中。每个 IPMP 组都有一个关联的 IPMP IP 接口;该接口可通过 ipmp 子命令显式创建(首选方法),也可通过 ifconfig 隐式创建,以便将 IP 接口放入新 IPMP 组。隐式创建的 IPMP 接口将命名为 ipmpN,其中 N 是不会与现有 IP 接口名称或 IPMP 组名发生冲突的最小整数。
每个创建的 IPMP IP 接口都具有匹配的 IPMP 组名,但可使用 group 子命令更改该名称。每个 IPMP IP 接口都承载一组高度可用的 IP 地址。只要组中至少有一个接口处于活动状态,这些地址就是始终可访问的,其中“活动”定义为至少有一个 UP 地址并已清除 INACTIVE、FAILED 和 OFFLINE。承载在 IPMP IP 接口中的 IP 地址可以静态进行配置,也可以通过 dhcp 子命令由 DHCP 配置。
分配给同一 IPMP 组的接口将被视为等效的,并由 in.mpathd 监视故障情况。如果组中的活动接口保留,将以对基于套接字的应用程序透明的方式处理 IP 接口故障(及任何后续修复)。此外,IPMP 还与动态重新配置框架集成(请参见 cfgadm(1M)),允许通过对基于套接字的应用程序不可见的方式更换网络适配器。
IP 模块自动在 IPMP 组中的所有活动接口之间对所有传出通信进行负荷分配。同样,也会在活动接口之间分发承载在 IPMP IP 接口中的所有 UP 地址,从而增强传入负荷分配能力。使用 ipmpstat(1M) 实用程序可以观察 IPMP 子系统的许多方面,包括 IP 数据地址与 IP 接口的当前绑定。
在将接口放入 IPMP 组后,所有 UP 逻辑接口都将“迁移”至 IPMP IP 接口,以供该组使用,但以下情况下除外:
逻辑接口标记为 NOFAILOVER;
逻辑接口承载 IPv6 链路本地地址;
逻辑接口承载 IPv4 0.0.0.0 地址。
同样,当接口位于组中后,如果对逻辑接口进行了更改,使它成为 UP 状态并且不属于上述任一排除情况,它也会迁移到关联的 IPMP IP 接口。逻辑接口从不回迁,即使从组中删除了提供地址的物理接口也是如此。
放入 IPMP 组中的每个接口都可以选择配置“测试”地址,in.mpathd 将使用该地址进行基于探测器的故障检测;请参见 in.mpathd(1M)。这些地址在标记为 UP 之前必须标记为 NOFAILOVER(使用 -failover 子命令)。测试地址也可以通过 dhcp 子命令由 DHCP 获取。
有关 IPMP 的更多背景知识,请参见《Oracle Solaris 管理:网络接口和网络虚拟化》的 IPMP 相关章节。
当 IPv6 物理接口已激活并通过 ifconfig 配置为启动时,它会自动分配有 IPv6 链路本地地址,该地址的后 64 位将基于该接口的 MAC 地址计算得出。
example% ifconfig eri0 inet6 plumb up
以下示例显示链路本地地址带有前缀 fe80::/10。
example% ifconfig eri0 inet6 ce0: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2 inet6 fe80::a00:20ff:fe8e:f3ad/10
链路本地地址仅用于本地子网上的通信,对其他子网是不可见的。
如果链路通告前缀中存在通告 IPv6 路由器,则新激活的 IPv6 接口将根据前缀通告自动配置逻辑接口。例如,对于前缀通告 2001:0db8:3c4d:0:55::/64,自动配置的接口如下所示:
eri0:2: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2 inet6 2001:0db8:3c4d:55:a00:20ff:fe8e:f3ad/64
即使链路上没有前缀通告,仍可以手动分配全局地址,例如:
example% ifconfig eri0 inet6 addif \ 2001:0db8:3c4d:55:a00:20ff:fe8e:f3ad/64 up
IP 隧道在概念上由两部分组成:一条连接两个或更多 IP 节点的虚拟链路和一个 IP 接口;该接口位于此链路之上,使系统可以发送和接收由底层链路封装的 IP 包。
可使用 dladm(1M) 命令配置隧道链路,使用 ifconfig 在这些隧道链路上配置 IP 接口。 IPv4-over-IPv4 隧道是通过在 IPv4 隧道链路上激活 IPv4 接口来创建的。IPv6-over-IPv4 隧道是通过在 IPv4 隧道链路上激活 IPv6 接口来创建的。
在 IP 隧道链路上激活 IPv6 接口后,将自动设置其 IPv6 地址。对于 IPv4 和 IPv6 隧道,将配置以下格式的源和目标链路本地地址:fe80::interface-id。对于 IPv4 隧道,interface-id 是 IPv4 隧道源或目标地址。对于 IPv6 隧道,interface-id 是 IPv6 隧道源或目标地址的后 64 位。例如,对于位于 10.1.2.3 与 10.4.5.6 之间的 IPv4 隧道,IPv6 接口的 IPv6 链路本地源和目标地址将分别为 fe80::a01:203 和 fe80::a04:506。对于位于 2000::1234:abcd 与 3000::5678:abcd 之间的 IPv6 隧道,该接口的 IPv6 链路本地源和目标地址将分别为 fe80::1234:abcd 和 fe80::5678:abcd。就像任何其他点对点接口一样,也可通过显式指定地址来覆盖这些缺省链路本地地址。
对于 6to4 隧道,将配置 2002:tsrc::1/16 格式的 6to4 全局地址。tsrc 部分是隧道 IPv4 源地址。6to4 接口的前缀长度将自动设置为 16,因为所有 6to4 包(位于 2002::/16 范围内的目标)都将转发到 6to4 隧道接口。例如,对于隧道源为 75.1.2.3 的 6to4 链路,IPv6 接口将具有 2002:4b01:203::1/16 格式的地址。
可以使用 addif 选项或通过激活其他逻辑接口,添加其他 IPv6 地址。
为了实现向后兼容性,激活具有专用名称的隧道 IP 接口时,将会隐式创建隧道链路,而不会调用 dladm create-iptun。这些隧道名称包括:
IPv4 隧道
IPv6 隧道
6to4 隧道
这些隧道是“隐式隧道”,在 dladm show-iptun 输出中以 i 标志表示。激活这些专用 IP 接口的隧道链路将会自动创建,当释放最后一个引用(也就是取消激活最后一个 IP 接口)时也会自动将其删除。
ifconfig 的 tsrc、tdst、encaplim 和 hoplimit 选项已过时,保留它们只是为了实现向后兼容性。这些选项等效于其 dladm(1M) 对应项。
IP 隧道接口的 ifconfig 输出指示是否为底层 IP 隧道链路配置 IPsec 策略。例如,如果存在 IPsec 策略,将会显示如下格式的一行内容:
tunnel security settings --> use 'ipsecconf -ln -i ip.tun1'
如果未使用 ifconfig 或 ipsecconf(1M) 设置安全策略,则不会显示隧道安全设置。
示例 1 使用 ifconfig 命令
如果未将工作站连接到以太网,则应将网络接口(例如,eri0)标记为“down”,如下所示:
example% ifconfig eri0 down
示例 2 打印寻址信息
要打印出每个接口的寻址信息,请使用以下命令:
example% ifconfig -a
示例 3 重置广播地址
要在正确设置网络掩码后重置每个接口的广播地址,请使用下一个命令:
example% ifconfig -a broadcast +
示例 4 更改以太网地址
要更改接口 ce0 的以太网地址,请使用以下命令:
example% ifconfig ce0 ether aa:1:2:3:4:5
示例 5 配置 IP-in-IP 隧道
要配置 IP-in-IP 隧道,请先创建 IP 隧道链路(tunsrc 和 tundst 是在 /etc/hosts 中有相应 IPv4 条目的主机名):
example% dladm create-iptun -T ipv4 -s tunsrc -d tundst tun0
然后激活点对点接口,应提供源和目标地址(mysrc 和 thedst 是在 /etc/hosts 中有相应 IPv4 条目的主机名):
example% ifconfig tun0 plumb mysrc thedst up
使用 ipsecconf(1M)(如上所述)配置隧道安全属性。
IPv6 隧道的配置是通过对 create-iptun 使用 ipv6 隧道类型来完成的。也可以在任何类型的隧道上激活 IPv6 接口。
示例 6 配置 6to4 隧道
要配置 6to4 隧道,请先创建 6to4 隧道链路(myv4addr 是在 /etc/hosts 中有相应 IPv4 条目的主机名):
example% dladm create-iptun -T 6to4 -s myv4addr my6to4tun0
然后在此链路上激活 IPv6 接口:
example% ifconfig my6to4tun0 inet6 plumb up
该接口的 IPv6 地址将会自动设置(如上所述)。
示例 7 对接口配置 IP 转发
要对单个接口启用 IP 转发,请使用以下命令:
example% ifconfig eri0 router
要对单个接口禁用 IP 转发,请使用以下命令:
example% ifconfig eri0 -router
示例 8 使用虚拟接口配置源地址选择
以下命令配置源地址选择,使本地生成的、没有绑定源地址且在 qfe2 上传出的每个包都首选 vni0 中承载的源地址。
example% ifconfig qfe2 usesrc vni0
qfe2 和 vni0 接口的 ifconfig -a 输出显示如下所示:
qfe2: flags=1100843<UP,BROADCAST,RUNNING,MULTICAST,ROUTER,IPv4> mtu 1500 index 4 usesrc vni0 inet 1.2.3.4 netmask ffffff00 broadcast 1.2.3.255 ether 0:3:ba:17:4b:e1 vni0: flags=20011100c1<UP,RUNNING,NOARP,NOXMIT,ROUTER,IPv4,VIRTUAL> mtu 0 index 5 srcof qfe2 inet 3.4.5.6 netmask ffffffff
注意观察以上 ifconfig 输出中的 usesrc 和 srcof 关键字。这些关键字也会显示在物理接口的逻辑实例中,即使这是每物理接口参数也不例外。用于配置接口的 ifconfig 没有 srcof 关键字。此信息通过设置了 usesrc 的接口集自动确定。
以下命令使用 none 关键字撤消了上述 ifconfig usesrc 命令的结果。
example% ifconfig qfe2 usesrc none
在执行此命令之后,会显示 ifconfig -a 输出,如下所示:
qfe2: flags=1100843<UP,BROADCAST,RUNNING,MULTICAST,ROUTER,IPv4> mtu 1500 index 4 inet 1.2.3.4 netmask ffffff00 broadcast 1.2.3.255 ether 0:3:ba:17:4b:e1 vni0: flags=20011100c1<UP,RUNNING,NOARP,NOXMIT,ROUTER,IPv4,VIRTUAL> mtu 0 index 5 inet 3.4.5.6 netmask ffffffff
请注意上述输出中没有 usesrc 和 srcof 关键字。
示例 9 为 IPv6 地址配置源地址选择
以下命令为 IPv6 地址配置源地址选择,该命令选择了 vni0 中承载的源地址。
example% ifconfig qfe1 inet6 usesrc vni0
在执行此命令之后,会显示 ifconfig -a 输出,如下所示:
qfe1: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 3 usesrc vni0 inet6 fe80::203:baff:fe17:4be0/10 ether 0:3:ba:17:4b:e0 vni0: flags=2002210041<UP,RUNNING,NOXMIT,NONUD,IPv6,VIRTUAL> mtu 0 index 5 srcof qfe1 inet6 fe80::203:baff:fe17:4444/128 vni0:1: flags=2002210040<RUNNING,NOXMIT,NONUD,IPv6,VIRTUAL> mtu 0 index 5 srcof qfe1 inet6 fec0::203:baff:fe17:4444/128 vni0:2: flags=2002210040<RUNNING,NOXMIT,NONUD,IPv6,VIRTUAL> mtu 0 index 5 srcof qfe1 inet6 2000::203:baff:fe17:4444/128
根据在 qfe1 上传出的包的目标范围,将从 vni0 及其别名中选择具有适当范围的源地址。
示例 10 对共享 IP 区域使用源地址选择
以下示例说明在 Solaris 中如何将 usesrc 功能与 zones(5) 工具结合使用。在全局区域中会调用以下各命令:
example% ifconfig hme0 usesrc vni0 example% ifconfig eri0 usesrc vni0 example% ifconfig qfe0 usesrc vni0
在执行上一个命令之后,将显示虚拟接口的 ifconfig -a 输出,如下所示:
vni0: flags=20011100c1<UP,RUNNING,NOARP,NOXMIT,ROUTER,IPv4,VIRTUAL> mtu 0 index 23 srcof hme0 eri0 qfe0 inet 10.0.0.1 netmask ffffffff vni0:1: flags=20011100c1<UP,RUNNING,NOARP,NOXMIT,ROUTER,IPv4,VIRTUAL> mtu 0 index 23 zone test1 srcof hme0 eri0 qfe0 inet 10.0.0.2 netmask ffffffff vni0:2: flags=20011100c1<UP,RUNNING,NOARP,NOXMIT,ROUTER,IPv4,VIRTUAL> mtu 0 index 23 zone test2 srcof hme0 eri0 qfe0 inet 10.0.0.3 netmask ffffffff vni0:3: flags=20011100c1<UP,RUNNING,NOARP,NOXMIT,ROUTER,IPv4,VIRTUAL> mtu 0 index 23 zone test3 srcof hme0 eri0 qfe0 inet 10.0.0.4 netmask ffffffff
每个区域(test1、test2 和 test3)都有一个虚拟接口别名。将从同一区域的虚拟接口别名中选择源地址。虚拟接口别名是使用 zonecfg(1M) 创建的,如下所示:
example% zonecfg -z test1 zonecfg:test1> add net zonecfg:test1:net> set physical=vni0 zonecfg:test1:net> set address=10.0.0.2
test2 和 test3 区域接口及地址的创建方法相同。
示例 11 禁用 DHCPv6
以下示例说明如何在所有接口上禁止自动使用 DHCPv6,以及如何直接在名为 hme0 的接口上关闭 DHCPv6。有关 DHCPv6 自动配置机制的更多信息,请参见 in.ndpd(1M) 和 ndpd.conf(4)。
example% echo ifdefault StatefulAddrConf false >> /etc/inet/ndpd.conf example% pkill -HUP -x in.ndpd example% ifconfig hme0 dhcp release
网络掩码数据。
缺省 Internet 协议类型。
有关以下属性的说明,请参见 attributes(5):
|
dhcpinfo(1)、cfgadm(1M)、dhcpagent(1M)、dladm(1M)、if_mpadm(1M)、in.mpathd(1M)、in.ndpd(1M)、in.routed(1M)、ipadm(1M)、ipmpstat(1M)、ipsecconf(1M)、ndd(1M)、netstat(1M)、zoneadm(1M)、zonecfg(1M)、ethers(3SOCKET)、gethostbyname(3NSL)、getnetbyname(3SOCKET)、hosts(4)、inet_type(4)、ndpd.conf(4)、netmasks(4)、networks(4)、nsswitch.conf(4)、attributes(5)、privileges(5)、zones(5)、arp(7P)、ipsecah(7P)、ipsecesp(7P)
ifconfig 发送的消息会指出:
指定的接口是否不存在
请求的地址是否未知
用户是否未经授权就尝试更改接口的配置
在选择主机名时,请不要选择 broadcast、down、private、trailers、up 名称或其他可能的选项名称。如果选择其中任一名称作为主机名,可能会导致很难诊断的异常问题。