JavaScript is required to for searching.
跳过导航链接
退出打印视图
在 Oracle Solaris 11.1 中使用固定网络配置连接系统     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

1.  固定网络配置概述

2.  配置系统网络

3.  使用数据链路

4.  使用 IP 接口

基本 ipadm 命令

删除 IP 接口配置 (ipadm delete-ip)

禁用 IP 接口配置 (ipadm disable-ip)

删除接口的地址 (ipadm delete-addr)

设置 IP 接口属性

启用包转发

设置 IP 地址属性

设置 TCP/IP 协议属性

全局启用包转发

设置特权端口

在多宿主主机上实现对称路由

实施通信拥塞控制

更改 TCP 接收缓冲区大小

监视 IP 接口和地址

获取有关 IP 接口的常规信息

获取有关 IP 接口的信息

获取有关 IP 接口属性的信息

获取有关 IP 地址的信息

获取有关 IP 地址属性的信息

5.  在运行 Oracle Solaris 的手提电脑上配置无线联网

A.  对应关系比较:ifconfigipadm 命令

B.  对应关系比较:nddipadm 命令

索引

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

设置 TCP/IP 协议属性

使用 ipadm 命令可配置协议属性,也称为可调参数ipadm 取代了早期发行版中常用于设置可调参数的 ndd 命令。

TCP/IP 属性可以是基于接口的,也可以是全局性的。属性可以应用于特定接口,也可全局性地应用于区域中的所有接口。全局属性在不同的非全局区域中可以有不同的值。有关支持的协议属性的列表,请参阅 ipadm(1M) 手册页。

通常情况下,TCP/IP Internet 协议的缺省值足以使网络正常工作。但是,如果缺省值对您的网络拓扑来说不够用,则可以根据需要定制这些属性。

有以下三个用于设置 TCP/IP 接口属性的 ipadm 子命令:


注 - 如果属性可以接收多个值,则使用 += 限定符将多个值分配给属性,如下所示:

ipadm set-prop -p property+=value1 [value2 value3 ...].

要从属性的一组值中删除一个值,可以使用 -= 限定符,如下所示:

ipadm set-prop -p property-=value2


全局启用包转发

启用包转发显示了如何在接口上启用包转发。通过设置 IP 接口上的包转发属性,可以有选择性地实现此功能。可以仅在系统的特定接口上启用此属性。

如果要在不考虑 IP 接口数量的情况下在整个系统上启用包转发,则使用协议属性:在协议中,属性名称与 IP 接口中的属性名称相同,均为 forwarding。必须分别发出命令才能在 IPv4 和 IPv6 协议上启用包转发。

以下示例显示如何在系统上对所有 IPv4 和 IPv6 通信启用包转发:

# ipadm show-prop -p forwarding ip
PROTO   PROPERTY     PERM   CURRENT   PERSISTENT   DEFAULT   POSSIBLE
ipv4    forwarding   rw     off       --           off       on,off
ipv6    forwarding   rw     off       --           off       on,off
#
# ipadm set-prop -p forwarding=on ipv4
# ipadm set-prop -p forwarding=on ipv6
#
# ipadm show-prop ip
PROTO   PROPERTY     PERM   CURRENT   PERSISTENT   DEFAULT   POSSIBLE
ipv4    forwarding   rw     on        on           off       on,off
ipv4    ttl          rw     255       --           255       1-255
ipv6    forwarding   rw     on        on           off       on,off
ipv6    hoplimit     rw     255       --           255       1-255#

注 - IP 接口的 forwarding 属性与协议的该属型不是互斥的。您可以同时为接口和协议设置该属性。例如,可以在协议上全局性地启用包转发,然后在系统上定制每个 IP 接口的包转发。因此,尽管全局启用包转发,但系统仍可选择包转发。


设置特权端口

在传输协议(如 TCP、UDP 和 SCTP)上,端口 1–1023 是缺省的特权端口,只有使用 root 权限运行的进程才可以绑定到这些端口。通过使用 ipadm 命令,您可以将超出此给定缺省范围的一个端口保留为特权端口。因此,只有 root 进程可以绑定到该端口。要设置特权端口,请定制以下传输协议属性:

例如,假设要将 TCP 端口 30013050 设置为特权端口,并且仅限 root 用户访问。smallest_nonpriv_port 属性指示 1024 是非特权端口的最小端口号。因此,指定的端口 30013050 可以更改为特权端口。应发出类似于以下内容的命令以继续:

# ipadm show-prop -p smallest_nonpriv_port tcp
PROTO PROPERTY                PERM   CURRENT   PERSISTENT   DEFAULT   POSSIBLE
tcp   smallest_nonpriv_port   rw     1024      --           1024      1024-32768

# ipadm show-prop -p extra_priv_ports tcp
PROTO   PROPERTY           PERM   CURRENT     PERSISTENT   DEFAULT     POSSIBLE
tcp     extra_priv_ports   rw     2049,4045   --           2049,4045   1-65535

# ipadm set-prop -p extra_priv_ports+=3001 tcp        
# ipadm set-prop -p extra_priv_ports+=3050 tcp
# ipadm show-prop -p extra_priv_ports tcp
PROTO   PROPERTY           PERM   CURRENT     PERSISTENT   DEFAULT     POSSIBLE
tcp     extra_priv_ports   rw     2049,4045   3001,3050    2049,4045   1-65535
                                  3001,3050

要删除其中一个端口(如 4045)以避免成为特权端口,应键入以下命令:

# ipadm set-prop -p extra_priv_ports-=4045 tcp
# ipadm show-prop -p extra_priv_ports tcp
PROTO   PROPERTY           PERM   CURRENT     PERSISTENT   DEFAULT     POSSIBLE
tcp     extra_priv_ports   rw     2049,3001   3001,3050    2049,4045   1-65535
                                  3050

在多宿主主机上实现对称路由

缺省情况下,具有多个接口的系统(也称为多宿主主机)基于路由表中到通信流的目标的最长匹配路由来路由其网络通信流。如果存在多个长度相等的到目标的路由路径,Oracle Solaris 将应用等成本多路径 (Equal-Cost Multi-Path, ECMP) 算法将通信流量分配到这些路由。

在某些情况下,以这种方式分配通信流量并不合适。可能通过多宿主主机上的一个接口发送了 IP 包,但是此主机与该包中的 IP 源地址不位于同一子网上。此外,如果传出数据包是对某传入请求(例如 ICMP 回显请求)的响应,则请求和响应可能不经过相同的接口。这种通信路由配置称为非对称路由。如果您的 Internet 服务提供商按照 RFC 3704 (http://rfc-editor.org/rfc/bcp/bcp84.txt) 中所述实现准入过滤,则非对称路由配置可能导致提供商丢弃传出数据包。

RFC 3704 旨在限制拒绝服务攻击在 Internet 上扩散。为了与它保持一致,必须将您的网络配置为对称路由。在 Oracle Solaris 中,可以通过使用 IP hostmodel 属性满足这一要求。此属性控制通过多宿主主机接收或传送 IP 数据包的行为。

hostmodel 属性可以具有以下三个可能值之一:

strong

对应于 RFC 1122 中定义的强端系统 (end system, ES) 模型。此值实现对称路由。

weak

对应于 RFC 1122 中定义的弱 ES 模型。在采用此值的情况下,多宿主主机使用非对称路由。

src-priority

通过使用首选路由配置数据包路由。如果路由表中存在多个目标路由,则使用在其上配置传出数据包的 IP 源地址的接口的路由,就是首选路由。如果不存在这样的路由,则传出数据包将使用到数据包的 IP 目标的最长匹配路由。

以下示例显示了如何在多宿主主机上实现 IP 包的对称路由。

# ipadm set-prop -p hostmodel=strong ip
# ipadm show-prop -p hostmodel ip
PROTO  PROPERTY   PERM  CURRENT  PERSISTENT  DEFAULT   POSSIBLE
ipv6   hostmodel  rw    strong   --          weak      strong,
                                                       src-priority,
                                                       weak
ipv4   hostmodel  rw    strong   --          weak      strong,
                                                       src-priority,
                                                       weak

实施通信拥塞控制

当节点发送的包数超过网络可以容纳的量时,通常会出现路由器缓冲区溢出形式的网络拥塞。各种算法通过对发送系统实施控制来防止通信拥塞。下面的算法在 Oracle Solaris 中受支持,可以轻松地添加或直接插入到操作系统中。

下表列出和说明了支持的算法。

算法
Oracle Solaris 名称
说明
NewReno
newreno
Oracle Solaris 中的缺省算法。控制机制包括发送者的拥塞窗口、慢速启动和拥塞避免。
HighSpeed
highspeed
针对高速网络的 NewReno 的最广为人知和最简单的修改版之一。
CUBIC
cubic
Linux 2.6 中当前的缺省算法。将拥塞避免阶段从线性窗口增加更改为 cubic 函数。
Vegas
vegas
基于延迟的经典算法,该算法尝试预测拥塞而不会引起实际包损失。

通过设置以下控制相关的 TCP 属性来启用拥塞控制。尽管下面列出的属性为 TCP 的属性,但由这些属性启用的控制机制也适用于 SCTP 通信。

要将用于实施拥塞控制的算法添加到协议中,请发出以下命令:

# ipadm set-prop -p cong_enabled+=algorithm tcp

要删除算法,请发出以下命令:

# ipadm set-prop -p cong_enabled-=algorithm tcp

要替换缺省算法,请发出以下命令:

# ipadm set-prop -p cong_default=algorithm tcp

注 - 添加或删除算法时不遵循任何序列规则。您可以先删除属性的算法,然后再将其他算法添加到该属性。但是,cong_default 属性必须始终具有已定义的算法。


以下示例显示了实施拥塞控制可能需要执行的步骤。在此示例中,将 TCP 协议的缺省算法从 newreno 更改为 cubic。然后,从已启用的算法列表中删除 vegas 算法。

# ipadm show-prop -p cong_default,cong_enabled tcp
PROTO  PROPERTY      PERM  CURRENT          PERSISTENT   DEFAULT   POSSIBLE
tcp    cong_default  rw    newreno          --           newreno   -
tcp    cong_enabled  rw    newreno,cubic,   --           newreno   newreno,cubic,
                           highspeed,                              highspeed,vegas
                           vegas

# ipadm set-prop -p cong_enabled-=vegas tcp
# ipadm set-prop -p cong_default=cubic tcp

# ipadm show-prop -p cong_default,confg_enabled tcp
PROTO  PROPERTY      PERM  CURRENT          PERSISTENT   DEFAULT   POSSIBLE
tcp    cong_default  rw    cubic            --           newreno   -
tcp    cong_enabled  rw    newreno,cubic,   --           newreno   newreno,cubic,
                           highspeed                               highspeed,vegas

更改 TCP 接收缓冲区大小

TCP 接收缓冲区大小是通过使用 TCP 属性 recv_buf 来设置的,缺省情况下为 128 KB。但是,应用程序没有均匀使用可用带宽。因此,连接延迟可能会要求您更改缺省大小。例如,使用 Oracle Solaris 的安全 Shell 功能会产生带宽使用开销,因为有其他校验和与加密进程在数据流上执行。因此,可能需要增加缓冲区大小。同样,为使执行批量传输的应用程序能有效使用带宽,也需要进行相同的缓冲区大小调整。

通过估算带宽延迟乘积 (bandwidth delay product, BDP),可以计算要使用的正确接收缓冲区大小,如下所示:

BDP = available_bandwidth * connection-latency

使用 ping -s host 可获取连接延迟的值。使用 uperfiperf 工具可估计带宽使用情况。

合适的接收缓冲区大小接近 BDP 的值。但请注意,带宽使用情况还取决于各种条件。共享基础结构或争用带宽的应用程序和用户的数量可能会影响该估算值。

要更改缓冲区大小的值,请使用以下语法:

# ipdadm set-prop -p recv_buf=value tcp

以下示例显示了如何将缓冲区大小增加到 164 KB

# ipadm show-prop -p recv_buf tcp
PROTO PROPERTY   PERM CURRENT   PERSISTENT   DEFAULT  POSSIBLE
tcp   recv_buf   rw   128000       --        128000   2048-1048576

# ipadm set-prop -p recv_buf=164000 tcp

# ipadm show-prop -p recv_buf tcp
PROTO PROPERTY   PERM CURRENT   PERSISTENT   DEFAULT  POSSIBLE
tcp   recv_buf   rw   164000       --        164000   2048-1048576

最好不要设置缓冲区大小的值,因为首选大小在不同的情况下有所不同。考虑以下针对每种网络在各自特定条件下显示不同 BDP 值的情况:

典型的 1 Gbps LAN,其中缓冲区的缺省大小是 128 KB:
BDP = 128 MBps * 0.001 s = 128 kB
理论上的 1Gbps WAN,延迟为 100 毫秒:
BDP = 128 MBps * 0.1 s = 12.8 MB
欧洲到美国链路(带宽由 uperf 测量)
BDP = 2.6 MBps * 0.175 = 470 kB

如果无法计算 BDP,请使用以下观测值作为指导:


注意

注意 - 增加 TCP 接收缓冲区大小的同时会增加许多网络应用程序的内存资源占用。