系统管理指南:网络服务

SLP 和多宿主

多宿主服务器在多个 IP 子网中用作主机。该服务器有时可以有多个网络接口卡,并可用作路由器。包括多点传送包在内的 IP 包将在接口之间进行路由。在有些情况下,会禁用接口之间的路由。以下各节介绍如何为此类情况配置 SLP。

用于 SLP 的多宿主配置

无需进行任何配置,slpd 便可侦听缺省网络接口上的多点传送和 UDP/TCP 单点传送。如果在多宿主机器的接口之间启用了单点传送和多点传送路由,则无需进行附加配置。这是因为到达另一接口的多点传送包已正确路由至缺省接口。因此,对 DA 或其他服务通知的多点传送请求将到达 slpd。如果由于某种原因未打开路由,则需要进行配置。

何时配置非路由的多个网络接口

如果下面的任何一个条件存在,都可能需要配置多宿主机器。

接口之间的多点传送路由被禁用时,通常是因为网络中尚未部署多点传送。在此情况下,广播通常用于不基于 DA 的服务搜索和个别子网上的 DA 搜索。通过将 net.slp.isBroadcastOnly 属性设置为 True 来配置广播。

配置非路由的多个网络接口(任务列表)

表 9–5 配置非路由的多个网络接口

任务 

说明 

参考 

配置 net.slp.interfaces 属性

设置此属性,以使 slpd 侦听指定接口上的单点传送和多点传送/广播 SLP 请求。

配置 net.slp.interfaces 属性

安排代理服务通知,以使子网上的 UA 获得具有可访问地址的服务 URL 

将代理通知限制到正在运行 slpd(它与单个子网而非多宿主主机连接)的机器。

多宿主主机上的代理通知

放置 DA 并配置范围,以确保 UA 和 SA 之间的可访问性 

在具有一个接口主机名或地址的多宿主主机上配置 net.slp.interfaces 属性。

在多宿主主机上运行 DA 但配置范围,以使每个子网上的 SA 和 UA 使用不同的主机。 

DA 放置和范围名称指定

配置 net.slp.interfaces 属性

如果设置了 net.slp.interfaces 属性,slpd 将侦听该属性所列接口而非缺省接口上的单点传送和多点传送/广播 SLP 请求。

通常,设置 net.slp.interfaces 属性时同时会通过设置 net.slp.isBroadcastOnly 属性来启用广播,原因是网络中尚未部署多点传送。但是,如果已经部署多点传送,而多点传送未在此特定多宿主主机上路由,则多点传送请求可从多个接口到达 slpd。当包的路由由与子网(接口为这些子网提供服务)连接的另一台多宿主主机或路由器处理时,会出现此情况。

出现此类情况时,发送请求的 SA 服务器或 UA 将收到来自多宿主主机上的 slpd 的两个响应。然后,客户机库对响应进行过滤,客户机将看不到这些响应。但这些响应在 snoop 跟踪中可见。


注 –

如果关闭单点传送路由,则所有子网都无法访问多宿主主机上的 SA 客户机通知的服务。如果这些服务无法访问,SA 客户机可以执行以下操作:


SA 客户机库不执行任何操作来确保已对可访问的 URL 进行通知。服务计划(它可能处理也可能不处理多宿主主机)将负责确保已对可访问的 URL 进行通知。

在禁用单点传送路由的多宿主主机上部署服务时,请使用 snoop 来确定服务是否可以正确处理来自多个子网的请求。此外,如果计划在多宿主主机上部署 DA,请参见 DA 放置和范围名称指定

Procedure如何配置 net.slp.interfaces 属性

使用以下过程在 slp.conf 文件中更改 net.slp.interfaces 属性。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 停止 slpd 和主机上的所有 SLP 活动。


    # svcadm disable network/slp
    
  3. 在更改配置设置之前,先备份缺省的 /etc/inet/slp.conf 文件。

  4. slpd.conf 文件中更改 net.slp.interfaces 属性:


    net.slp.interfaces=value
    
    value

    网络接口卡的 IPv4 地址或主机名的列表,DA 或 SA 应在该网络接口卡上侦听端口 427 上的多点传送、单点传送 UDP 和 TCP 消息

    例如,具有三个网络接口卡和已关闭的多点传送路由的服务器将连接至三个子网。这三个网络接口的 IP 地址为 192.147.142.42192.147.143.42192.147.144.42。子网掩码为 255.255.255.0。以下属性设置将使 slpd 侦听所有三个接口上的单点传送和多点传送/广播消息:


    net.slp.interfaces=192.147.142.42,192.147.143.42,192.147.144.42

    注 –

    可为 net.slp.interfaces 属性指定 IP 地址或可解析的主机名。


  5. 保存更改并关闭文件。

  6. 重新启动 slpd 以激活更改。


    # svcadm enable network/slp
    

多宿主主机上的代理通知

如果具有多个接口的主机通过使用 slpd 和代理注册来通知服务,slpd 通知的服务 URL 必须包含可访问的主机名或地址。如果在接口之间启用单点传送路由,则所有子网上的主机都可以访问其他子网上的主机。还可以对任何子网上的服务进行代理注册。但是,如果已禁用单点传送路由,则一个子网上的服务客户机将无法通过多宿主主机来访问另一子网上的服务。但这些客户机可能可以通过另一路由器来访问服务。

例如,假设缺省主机名为 bigguy 的主机在三个不同的非路由子网中有三个接口卡。在这些子网中主机名分别为 bigguy(IP 地址为 192.147.142.42)、bigguy1(IP 地址为 192.147.143.42)和 bigguy2(IP 地址为 192.147.144.42)。现在,假设传统打印机 oldprinter 连接至 143 子网,并且用 net.slp.interfaces 将 URL service:printing:lpr://oldprinter/queue1 配置为侦听所有接口。oldprinter URL 在所有接口上都通知代理。142144 子网中的机器将接收 URL 以响应服务请求,但无法访问 oldprinter 服务。

对此问题的解决方案是用只与 143 子网连接的机器(而非多宿主主机)上运行的 slpd 来执行代理通知。只有 143 子网上的主机可以获得通知,以作为对服务请求的响应。

DA 放置和范围名称指定

为了确保客户机获得可访问的服务,在具有多宿主主机的网络中进行 DA 放置和范围名称指定时必须格外谨慎。当已禁用路由并且已配置 net.slp.interfaces 属性时,要特别注意。此外,如果在多宿主机器的接口之间启用单点传送路由,则不需要进行任何特殊 DA 和范围配置。将以从任何子网中都可访问的 DA 标识服务对通知进行高速缓存。但是,如果已禁用单点传送路由,则不合适的 DA 放置将产生问题。

要确定是什么问题导致上一个示例,请考虑 bigguy 运行 DA 并且所有子网中的客户机都具有相同范围时可能出现的情况。143 子网中的 SA 将向 DA 注册其服务通知。即使 143 子网中的主机无法访问,144 子网上的 UA 也可以获得这些服务通知。

对此问题的一个解决方案是在每个子网而非多宿主主机上运行 DA。在此情况下,多宿主主机上的 net.slp.interfaces 属性应配置一个接口主机名或地址,或者应将其保留为不配置,从而强制使用缺省接口。此解决方案的一个缺点是,多宿主主机通常是可以更好处理 DA 的计算负载的大型机器。

另一个解决方案是在多宿主主机上运行 DA 但配置范围,以使每个子网上的 SA 和 UA 具有不同范围。例如,在前面的情况下,142 子网上的 UA 和 SA 可能具有一个名为 scope142 的范围。143 子网上的 UA 和 SA 可能具有名为 scope143 的另一个范围,而 144 子网上的 UA 和 SA 可能具有名为 scope144 的第三个范围。可在具有三个接口的 bigguy 中配置 net.slp.interfaces 属性,以使 DA 对这三个子网中的三个范围提供服务。

配置非路由的多个网络接口时的注意事项

配置 net.slp.interfaces 属性可使多宿主主机上的 DA 在子网之间桥接服务通知。如果网络中关闭了多宿主路由但在多宿主主机的接口之间启用了单点传送路由,此类配置将很有用。 由于单点传送在接口之间进行路由,因此服务所在子网之外的子网中的主机可在收到服务 URL 时联系服务。没有 DA 时,特定子网上的 SA 服务器只能接收同一子网上的广播,因此,它们无法找到其子网之外的服务。

当网络中未部署多点传送而改用广播时,会出现必须配置 net.slp.interfaces 属性的常见情况。在其他情况下,需要慎重地考虑和规划,以避免不必要的重复响应或无法访问的服务。