要了解 IP 过滤器功能的信息,建议您查看 Solaris 10 系统管理指南。当前的 Solaris Cluster 3.2 文档并不包含该指南,但我们将在下一个修补程序中将其写入文档。
Solaris 10(FCS,最新版本为 Solaris 10 11/06 (Update 3))中的 IP 过滤器以 STREAMS 模块形式存在,该模块在任何流中都必须位于 IP 之下。network/pfil 和 network/ipfilter SMF 服务自动推送 pfil 模块(基于 /etc/ipf/pfil.ap),并在引导时装入过滤规则(来自 /etc/ipf/ipf.conf)。过滤规则可以基于接口、IP 地址/子网、协议和端口。
注意:此时,ipfilter 不支持可伸缩服务。这些步骤只用于为故障转移服务配置 ipfilter。要启用群集范围的过滤器,请确保在所有节点上重复该配置过程。
步骤 1
编辑 /etc/iu.ap,以使与公共 NIC 设备对应的行将 "clhbsndr pfil" 用作模块列表。要使更改生效,应重新引导节点。可以采用滚动方式重新引导节点。
注意,"pfil" 必须是列表中的最后一个模块。
ex : # scstat -i -h `uname -n`
-- IPMP Groups --
Node Name | Group | Status | Adapter | Status |
IPMP Group: node1 | sc_ipmp1 | Online | ce2 | Online |
IPMP Group: node1 | sc_ipmp1 | Online | bge2 | Online |
IPMP Group: node1 | sc_ipmp0 | Online | ce0 | Online |
IPMP Group: node1 | sc_ipmp0 | Online | bge0 | Online |
/etc/iu.ap 会按如下所示修改这些行(针对 ce/bge)
ce -1 0 clhbsndr pfil
bge -1 0 clhbsndr pfil
步骤 2
根据需要将过滤器规则添加到所有节点的 /etc/ipf/ipf.conf 中。有关 IP 过滤器规则语法的更多信息,请参见 ipf(4) 手册页。
ex: block in quick on bge0 from 129.146.106.0/23 to any
block in quick on ce0 from 129.146.106.0/23 to any
步骤 3
启用 ipfilter SMF 服务。
svcadm enable /network/ipfilter:default
过滤规则
群集会在各节点之间进行网络地址故障转移。在进行故障转移时不需要任何特殊的过程或代码。
请确保引用 LogicalHostname 和 SharedAddress 资源的 IP 地址的过滤规则在所有群集节点上均相同。
备用节点上的规则将引用不存在的 IP 地址。但该规则仍是 IP 过滤器的活动规则集的一部分,并且会在故障转移后节点收到地址时生效。
此外,必须设置统一应用于同一 IPMP 组中的所有 NIC 的规则。也就是说,如果规则特定于接口,那么对于同一 IPMP 组中的其他接口,也必须存在相同的规则。
非群集模式
在非群集模式下,/etc/iu.ap ���包含 clhbsndr 的行不会生效,这是因为 clhbsndr 未注册。��由 SMF 服务 network/pfil 随后设置的自动推送将成功(在“群集”模式下出现故障)。这可以确保还会在非群集模式下推送 pfil。
除了 /etc/iu.ap 以外,用户还必须更新 /etc/ipf/pfil.ap。对 pfil.ap 的更新略有不同。有关更多详细信息,请参阅 IP 过滤器文档。
有状态过滤
IP 过滤器不支持使用 IPMP 进行有状态过滤,这是因为同一会话的传出包可能通过多个接口。Sun Cluster 要求使用 IPMP 组,从而继承同一限制。
因此,群集仅支持无状态过滤。
NAT 模式
不支持路由模式下的 NAT。也就是说,不能将群集节点设置为路由器/网关,以在此节点与其他节点之间转发包。这是因为此类设置可以很容易地为整个群集创建单一故障点,而不首先使路由机制具备高可用性。
支持使用 NAT 进行本地地址转换。NAT 转换在线上 (on-the-wire) 重写数据包,因此 NAT 转换对于群集软件来说是透明的。
注意:包含由群集(例如,LogicalHostname 资源)管理的 IP 地址的 NAT 规则必须在所有群集节点上相同。
群集传输上的 IPFILTER
如果在专用网络和公共网络中使用相同类型的适配器,则对 /etc/iu.ap 的编辑会将 pfil 推送至专用网络流中。但群集传输模块将在创建流时删除所有不需要的模块。因此将删除 pfil。不需要特殊用户过程。
John Blair
QA 部门经理
Solaris Cluster