MySQL 8.0 参考手册  / 第十八章 组复制  / 18.6 组复制安全  /  17.6.1 组复制 IP 地址白名单

17.6.1 组复制 IP 地址白名单

Group Replication 插件有一个配置选项,用于确定可以接受来自哪些主机的传入 Group Communication System 连接。此选项称为 group_replication_ip_whitelist。如果您在服务器 s1 上设置此选项,则当服务器 s2 建立到 s1 的连接以进行组通信时,s1 在接受来自 s2 的连接之前首先检查白名单。如果 s2 在白名单中,则 s1 接受连接,否则 s1 拒绝 s2 的连接尝试。

如果您没有明确指定白名单,组通信引擎 (XCom) 会自动扫描主机上的活动接口,并识别那些地址位于私有子网上的接口。这些地址和localhost IPv4 的 IP 地址用于创建自动组复制白名单。因此,自动白名单包括在以下范围内为主机找到的任何 IP 地址:

10/8 prefix       (10.0.0.0 - 10.255.255.255) - Class A
172.16/12 prefix  (172.16.0.0 - 172.31.255.255) - Class B
192.168/16 prefix (192.168.0.0 - 192.168.255.255) - Class C
127.0.0.1 - localhost for IPv4

错误日志中会添加一个条目,说明已自动为主机列入白名单的地址。

私有地址的自动允许列表不能用于来自私有网络外部服务器的连接,因此服务器,即使它在公共 IP 上有接口,默认情况下也不允许来自外部主机的组复制连接。对于位于不同计算机上的服务器实例之间的组复制连接,您必须提供公共 IP 地址并将这些地址指定为显式允许列表。如果您为白名单指定任何条目,localhost 则不会自动添加私有地址和地址,因此如果您使用其中任何一个,则必须明确指定它们。

要手动指定白名单,请使用该 group_replication_ip_whitelist 选项。当服务器是复制组的活动成员时,您无法更改服务器上的白名单。如果成员处于活动状态,您必须STOP GROUP_REPLICATION 在更改白名单之前发布声明,并在 START GROUP_REPLICATION之后发布声明。

在白名单中,您可以指定以下任意组合:

  • IPv4 地址(例如,198.51.100.44

  • 带有 CIDR 表示法的 IPv4 地址(例如, 192.0.2.21/24

  • 主机名,来自 MySQL 5.7.21(例如, example.org

  • 带有 CIDR 表示法的主机名,来自 MySQL 5.7.21(例如, www.example.com/24

MySQL 5.7 不支持 IPv6 地址和解析为 IPv6 地址的主机名。您可以将 CIDR 表示法与主机名或 IP 地址结合使用,以将具有特定网络前缀的 IP 地址块列入许可名单,但请确保指定子网中的所有 IP 地址都在您的控制之下。

您必须停止并重新启动成员上的组复制才能更改其白名单。必须用逗号分隔白名单中的每个条目。例如:

mysql> STOP GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_ip_whitelist="192.0.2.21/24,198.51.100.44,203.0.113.0/24,example.org,www.example.com/24";
mysql> START GROUP_REPLICATION;

group_replication_local_address 白名单必须包含在每个成员的系统变量 中指定的 IP 地址或主机名 。此地址与 MySQL 服务器 SQL 协议主机和端口不同,并且未在 bind_address服务器实例的系统变量中指定。

当一个复制组被重新配置时(例如,当一个新的主节点被选出或者一个成员加入或离开时),组成员重新建立它们之间的连接。如果组成员仅被重新配置后不再属于复制组的服务器列入白名单,则它无法重新连接到复制组中未将其列入白名单的其余服务器。要完全避免这种情况,请为属于复制组成员的所有服务器指定相同的允许列表。

笔记

可以根据您的安全要求为不同的组成员配置不同的白名单,例如,为了将不同的子网分开。如果您需要配置不同的白名单以满足您的安全要求,请确保复制组中的白名单之间有足够的重叠,以最大限度地提高服务器在其原始种子成员不存在的情况下能够重新连接的可能性。

对于主机名,仅当另一台服务器发出连接请求时才会进行名称解析。无法解析的主机名不会被考虑用于白名单验证,并且警告消息会写入错误日志。对已解析的主机名进行前向确认反向 DNS (FCrDNS) 验证。

警告

主机名本质上不如白名单中的 IP 地址安全。FCrDNS 验证提供了良好的保护级别,但可能会受到某些类型的攻击。仅在绝对必要时才在允许列表中指定主机名,并确保用于名称解析的所有组件(例如 DNS 服务器)都在您的控制之下。您还可以使用主机文件在本地实现名称解析,以避免使用外部组件。