本节讨论与 IPv6 相关的守护进程。
in.ndpd 守护进程可实现 IPv6 相邻节点搜索协议和路由器搜索。该守护进程还可实现 IPv6 的地址自动配置功能。下面显示了 in.ndpd 支持的选项。
启用调试功能。
针对特定事件启用调试功能。
指定要从中读取配置数据的文件,而不是缺省的 /etc/inet/ndpd.conf 文件。
列显与每个接口相关的信息。
不回送路由器通告。
忽略收到的包。
指定详细模式,报告各种类型的诊断消息。
启用包跟踪功能。
in.ndpd 守护进程由在 /etc/inet/ndpd.conf 配置文件中设置的参数以及 /var/inet/ndpd_state.interface 启动文件中适用的参数来控制。
如果 /etc/inet/ndpd.conf 文件存在,系统将解析该文件并使用它将节点配置为路由器。表 11–2 列出了此文件中可能出现的有效关键字。当主机引导之后,路由器可能无法立即使用。由路由器通告的包可能会被丢弃,当然,它们可能将无法送达到主机。
/var/inet/ndpd_state.interface 文件是一个状态文件。由每个节点定期更新。当该节点失败并重新启动之后,该节点可以在没有路由器的情况下配置其接口。此文件包含接口地址、上次更新文件的时间以及文件的有效期。此文件还包含从以前的路由器通告中“获知”的其他参数。
您不必修改状态文件的内容,in.ndpd 守护进程会自动维护状态文件。
有关配置变量和可允许值的列表,请参见 in.ndpd(1M) 手册页和 ndpd.conf(4) 手册页。
in.ripngd 守护进程可实现用于 IPv6 路由器的下一代路由信息协议 (Routing Information Protocol next-generation, RIPng)。RIPng 定义 IPv6 中与 RIP 等效的协议。在使用 routeadm 命令配置 IPv6 路由器并启用 IPv6 路由时,in.ripngd 守护进程可在路由器上实现 RIPng。
下面显示了 RIPng 支持的选项:
n 指定用于收发 RIPnG 包的备用端口号。
禁止显示路由信息。
强制显示路由信息,即使该守护进程充当路由器也是如此。
禁止使用毒性逆转 (poison reverse)。
如果 in.ripngd 不充当路由器,该守护进程将只输入每个路由器的缺省路由。
启用了 IPv6 的服务器应用程序可以既处理 IPv4 请求又处理 IPv6 请求,也可以仅处理 IPv6 请求。服务器始终通过 IPv6 套接字处理请求。另外,服务器还与相应的客户机使用相同的协议。要为 IPv6 添加或修改服务,请使用服务管理工具 (Service Management Facility, SMF) 中的命令。
有关 SMF 命令的信息,请参阅《系统管理指南:基本管理》中的“SMF 命令行管理实用程序”。
有关使用 SMF 配置在 SCTP 上运行的 IPv4 服务清单的示例任务,请参阅如何添加使用 SCTP 协议的服务。
要配置 IPv6 服务,必须确保该服务 inetadm 配置文件中的 proto 字段中列出了相应的值:
对于既处理 IPv4 请求又处理 IPv6 请求的服务,请选择 tcp6、udp6 或 sctp6。如果 proto 的值为 tcp6、udp6 或 sctp6,则会导致 inetd 向服务器传递 IPv6 套接字。服务器中包含映射到 IPv4 的地址以备 IPv4 客户机发出请求。
对于仅处理 IPv6 请求的服务,请选择 tcp6only 或 udp6only。如果 proto 的值为 tcp6only 或 udp6only,inetd 会向服务器传递 IPv6 套接字。
如果用其他实现来替代 Oracle Solaris : 命令,则必须验证所实现的服务是否支持 IPv6。如果该服务不支持 IPv6,则必须将 proto 值指定为 tcp、udp 或 sctp。
下面是针对 echo 服务清单运行 inetadm 时生成的配置文件,该服务清单既支持 IPv4 又支持 IPv6,并且在 SCTP 上运行:
# inetadm -l svc:/network/echo:sctp_stream SCOPE NAME=VALUE name="echo" endpoint_type="stream" proto="sctp6" 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 |
要更改 proto 字段的值,请使用以下语法:
# inetadm -m FMRI proto="transport-protocols" |
随 Oracle Solaris : 软件一起提供的所有服务器都只需要一个用来将 proto 指定为 tcp6、udp6 或 sctp6 的配置文件项。但是,远程 shell 服务器 (shell) 和远程执行服务器 (exec) 现在由单个服务实例组成,该服务实例要求 proto 值中同时包含 tcp 和 tcp6only 值。例如,要为 shell 设置 proto 值,可发出以下命令:
# inetadm -m network/shell:default proto="tcp,tcp6only" |
有关写入使用套接字且启用了 IPv6 的服务器的更多详细信息,请参见《编程接口指南》中的“IPv6 extensions to the Socket API”。
在为 IPv6 添加或修改服务时,请记住以下几点:
需要将 proto 值指定为 tcp6、sctp6 或 udp6,以便既支持 IPv4 连接又支持 IPv6 连接。如果将 proto 值指定为 tcp、sctp 或 udp,则该服务仅使用 IPv4。
尽管可以为 inetd 添加使用一对多样式的 SCTP 套接字的服务实例,但是建议不要这样做。inetd 不能处理一对多样式的 SCTP 套接字。
如果某个服务因其 wait-status 或 exec 属性不同而需要两项,则必须从初始服务创建两个实例/服务。