跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:IP 服务 Oracle Solaris 11 Information Library (简体中文) |
传输层协议 TCP、SCTP 和 UDP 是标准 Oracle Solaris 软件包的一部分。这些协议通常无需进行干预即可正常运行。但是,站点上的具体情况可能要求您记录或修改通过传输层协议运行的服务。因而,您必须使用服务管理工具 (Service Management Facility, SMF) 修改这些服务的配置文件,《Oracle Solaris 管理:常见任务》中的第 6 章 "管理服务(概述)"对此工具进行了介绍。
inetd 守护进程负责在系统引导时启动标准 Internet 服务。这些服务包括将 TCP、SCTP 或 UDP 用作其传输层协议的应用程序。可以使用 SMF 命令修改现有的 Internet 服务或添加新服务。有关 inetd 的更多信息,请参阅inetd Internet 服务守护进程。
涉及传输层协议的操作包括:
记录所有的传入 TCP 连接
添加通过传输层协议(例如 SCTP)运行的服务
为访问控制配置 TCP 包装工具
有关 inetd 守护进程的详细信息,请参阅 inetd(1M) 手册页。
有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"。
# inetadm -M tcp_trace=TRUE
SCTP 传输协议以与 TCP 类似的方式为应用层协议提供服务。但是,SCTP 允许单方或双方为多宿主系统的两个系统进行通信。SCTP 连接称为关联。在关联中,应用程序将要传输的数据分为一个或多个消息流,即多流化。SCTP 连接可以转到有多个 IP 地址的端点,这对电话应用程序尤其重要。如果站点使用 IP 过滤器或 IPsec,则 SCTP 的多宿主功能是出于安全考虑。sctp(7P) 手册页介绍了其中一些安全方面的考虑。
缺省情况下,SCTP 包括在 Oracle Solaris 中,且不需要其他配置。但是,可能需要显式配置某些应用层服务才能使用 SCTP。echo 和 discard 就是这样的应用程序。下一过程说明如何添加使用 SCTP 一对一样式套接字的回显服务。
注 - 也可以使用以下过程为 TCP 和 UDP 传输层协议添加服务。
以下任务说明如何将 inetd 守护进程管理的 SCTP inet 服务添加到 SMF 系统信息库。然后,该任务说明如何使用服务管理工具 (Service Management Facility, SMF) 命令添加该服务。
有关 SMF 命令的信息,请参阅《Oracle Solaris 管理:常见任务》中的"SMF 命令行管理实用程序"。
有关语法信息,请参阅该过程中所引用的 SMF 命令的手册页。
有关 SMF 的详细信息,请参阅 smf(5) 手册页。
开始之前
执行以下过程之前,请为服务创建清单文件。该过程以 echo 服务的清单 echo.sctp.xml 为例。
service-name |port/protocol | aliases
转到存储服务清单的目录,然后键入以下内容:
# 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
# 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) 手册页。
该输出指明,新的服务清单当前处于禁用状态。
# 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
# inetadm -e FMRI
例如,对于新的 echo 服务,应键入以下内容:
# inetadm | grep sctp_stream . . enabled online svc:/network/echo:sctp_stream
示例 3-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
tcpd 程序可实现 TCP 包装。TCP 包装介于守护进程和传入的服务请求之间,为诸如 ftpd 之类的服务守护进程提供了安全措施。TCP 包装记录成功的和不成功的连接尝试。此外,TCP 包装可以提供访问控制,根据发出请求的位置允许或拒绝连接。可以使用 TCP 包装保护诸如 SSH、Telnet 和 FTP 之类的守护进程。sendmail 应用程序也可以使用 TCP 包装,如《Oracle Solaris 管理:网络服务》中的"sendmail 版本 8.12 支持 TCP 包装"中所述。
有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"。
# inetadm -M tcp_wrappers=TRUE
此手册页可以在 /usr/sfw/man 目录中找到。