系统管理指南:IP 服务

Procedure如何添加使用 SCTP 协议的服务

SCTP 传输协议以与 TCP 类似的方式为应用层协议提供服务。但是,SCTP 允许单方或双方为多宿主系统的两个系统进行通信。SCTP 连接称为关联。在关联中,应用程序将要传输的数据分为一个或多个消息流,即多流化。SCTP 连接可以转到有多个 IP 地址的端点,这对电话应用程序尤其重要。如果站点使用 IP 过滤器或 IPsec,则 SCTP 的多宿主功能是出于安全考虑。sctp(7P) 手册页介绍了其中一些安全方面的考虑。

缺省情况下,SCTP 包括在 Oracle Solaris : 中,且不需要其他配置。但是,可能需要显式配置某些应用层服务才能使用 SCTP。echodiscard 就是这样的应用程序。下一过程说明如何添加使用 SCTP 一对一样式套接字的回显服务。


注 –

也可以使用以下过程为 TCP 和 UDP 传输层协议添加服务。


以下任务说明如何将 inetd 守护进程管理的 SCTP inet 服务添加到 SMF 系统信息库。然后,该任务说明如何使用服务管理工具 (Service Management Facility, SMF) 命令添加该服务。

开始之前

执行以下过程之前,请为服务创建清单文件。该过程以 echo 服务的清单 echo.sctp.xml 为例。

  1. 使用拥有系统文件的写入权限的用户帐户,登录到本地系统。

  2. 编辑 /etc/services 文件并添加新服务的定义。

    对于服务定义,使用以下语法。


    service-name |port/protocol | aliases
    
  3. 添加新服务。

    转到存储服务清单的目录,然后键入以下内容:


    # cd dir-name
    # svccfg import service-manifest-name
    

    有关 svccfg 的完整语法,请参阅 svccfg(1M) 手册页。

    假定您希望使用当前位于 service.dir 目录中的清单 echo.sctp.xml 添加新的 SCTP echo 服务,应键入以下内容:


    # cd service.dir
    # svccfg import echo.sctp.xml
    
  4. 验证是否已添加服务清单:


    # svcs FMRI
    

    对于 FMRI 参数,使用服务清单的故障管理资源标识符 (Fault Managed Resource Identifier, FMRI)。例如,对于 SCTP echo 服务,应使用以下命令:


    # svcs svc:/network/echo:sctp_stream
    

    输出应该与如下所示类似:


    	STATE          STIME    FMRI
    disabled       16:17:00 svc:/network/echo:sctp_stream

    有关 svcs 命令的详细信息,请参阅 svcs(1) 手册页。

    该输出指明,新的服务清单当前处于禁用状态。

  5. 列出服务的属性以确定是否必须进行修改。


    # inetadm -l FMRI
    

    有关 inetadm 命令的详细信息,请参阅 inetadm(1M) 手册页。

    例如,对于 SCTP echo 服务,应键入以下内容:


    # inetadm -l svc:/network/echo:sctp_stream
    SCOPE    NAME=VALUE
    	         name="echo"
    	         endpoint_type="stream"
    	         proto="sctp"
    	         isrpc=FALSE
    	         wait=FALSE
    	         exec="/usr/lib/inet/in.echod -s"
             .
             .
             default  tcp_trace=FALSE
           	default  tcp_wrappers=FALSE
  6. 启用新服务:


    # inetadm -e FMRI
    
  7. 验证服务是否已启用:

    例如,对于新的 echo 服务,应键入以下内容:


    # inetadm | grep sctp_stream
    .
    .
    	enabled   online         svc:/network/echo:sctp_stream

示例 5–9 添加使用 SCTP 传输协议的服务

以下示例给出要使用的命令以及使回显服务使用 SCTP 传输层协议所需的文件项。


$ cat /etc/services
.
.
echo            7/tcp
echo            7/udp
echo            7/sctp

# cd service.dir

	# svccfg import echo.sctp.xml

# svcs network/echo*
	STATE          STIME    FMRI
	disabled       15:46:44 svc:/network/echo:dgram
	disabled       15:46:44 svc:/network/echo:stream
	disabled       16:17:00 svc:/network/echo:sctp_stream

# inetadm -l svc:/network/echo:sctp_stream
	SCOPE    NAME=VALUE
	         name="echo"
	         endpoint_type="stream"
	         proto="sctp"
	         isrpc=FALSE
	         wait=FALSE
	         exec="/usr/lib/inet/in.echod -s"
	         user="root"
	default  bind_addr=""
	default  bind_fail_max=-1
	default  bind_fail_interval=-1
	default  max_con_rate=-1
	default  max_copies=-1
	default  con_rate_offline=-1
	default  failrate_cnt=40
	default  failrate_interval=60
	default  inherit_env=TRUE
	default  tcp_trace=FALSE
	default  tcp_wrappers=FALSE

# inetadm -e svc:/network/echo:sctp_stream

# inetadm | grep echo
	disabled  disabled       svc:/network/echo:stream
	disabled  disabled       svc:/network/echo:dgram
	enabled   online         svc:/network/echo:sctp_stream