文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  群組複製 IP 位址權限

20.6.4 群組複製 IP 位址權限

當且僅當 XCom 通訊堆疊用於建立群組通訊時(group_replication_communication_stack=XCOM),群組複製外掛程式可讓您指定允許清單,列出可接受連入群組通訊系統連線的主機。如果您在伺服器 s1 上指定允許清單,那麼當伺服器 s2 為了參與群組通訊而建立與 s1 的連線時,s1 會先檢查允許清單,然後才接受來自 s2 的連線。如果 s2 在允許清單中,則 s1 會接受連線,否則 s1 會拒絕 s2 的連線嘗試。系統變數 group_replication_ip_allowlist 用於指定允許清單。

注意

當 MySQL 通訊堆疊用於建立群組通訊時(group_replication_communication_stack=MYSQL),group_replication_ip_allowlist 的設定會被忽略。請參閱第 20.6.1 節「用於連線安全性管理的通訊堆疊」

如果您未明確指定允許清單,則群組通訊引擎 (XCom) 會自動掃描主機上的作用介面,並識別出具有私人子網路位址的介面,以及為每個介面設定的子網路遮罩。這些位址以及 IPv4 和 IPv6 的 localhost IP 位址會用於建立自動群組複製允許清單。因此,自動允許清單包括在套用適當的子網路遮罩後,在以下範圍內為主機找到的任何 IP 位址

IPv4 (as defined in RFC 1918)
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

IPv6 (as defined in RFC 4193 and RFC 5156)
fc00:/7 prefix    - unique-local addresses
fe80::/10 prefix  - link-local unicast addresses

127.0.0.1 - localhost for IPv4
::1       - localhost for IPv6

會將一個條目新增至錯誤記錄,說明已為主機自動允許的位址。

私人位址的自動允許清單不能用於來自私人網路外部伺服器的連線,因此,即使伺服器在公用 IP 上有介面,預設也不允許來自外部主機的群組複製連線。若要讓不同機器上的伺服器執行個體之間進行群組複製連線,您必須提供公用 IP 位址,並將這些位址指定為明確的允許清單。如果您為允許清單指定任何條目,則不會自動新增私人和 localhost 位址,因此,如果您使用任何這些位址,則必須明確指定它們。

若要手動指定允許清單,請使用 group_replication_ip_allowlist 系統變數。您可以在群組複製執行時變更清單。

允許清單必須包含每個成員的 group_replication_local_address 系統變數中指定的 IP 位址或主機名稱。此位址與 MySQL 伺服器 SQL 協定主機和連接埠不同,且未在伺服器執行個體的 bind_address 系統變數中指定。如果用作伺服器執行個體群組複製本機位址的主機名稱解析為 IPv4 和 IPv6 位址,則 IPv4 位址會優先用於群組複製連線。

指定為分散式復原端點的 IP 位址,以及成員標準 SQL 用戶端連線的 IP 位址(如果該位址用於分散式復原,這是預設情況),則不需要新增至允許清單。允許清單僅適用於每個成員的 group_replication_local_address 所指定的位址。加入的成員必須允許其與群組的初始連線通過允許清單,才能擷取分散式復原的位址。

在允許清單中,您可以指定下列任何組合

  • IPv4 位址(例如,198.51.100.44

  • 具有 CIDR 標記法的 IPv4 位址(例如,192.0.2.21/24

  • IPv6 位址(例如,2001:db8:85a3:8d3:1319:8a2e:370:7348

  • 具有 CIDR 標記法的 IPv6 位址(例如,2001:db8:85a3:8d3::/64

  • 主機名稱(例如,example.org

  • 具有 CIDR 標記法的主機名稱(例如,www.example.com/24

主機名稱可以解析為 IPv4 位址、IPv6 位址或兩者皆可。如果主機名稱同時解析為 IPv4 和 IPv6 位址,則群組複寫連線一律使用 IPv4 位址。您可以使用 CIDR 標記法結合主機名稱或 IP 位址,以允許特定網路前置碼的 IP 位址區塊,但請務必確保指定子網路中的所有 IP 位址都在您的控制之下。

注意

當來自 IP 位址的連線嘗試因為該位址不在允許清單中而被拒絕時,拒絕訊息一律會以 IPv6 格式列印 IP 位址。 IPv4 位址在此格式中會以 ::ffff: 開頭(IPv4 對應的 IPv6 位址)。您不需要使用此格式在允許清單中指定 IPv4 位址;請使用它們的標準 IPv4 格式。

逗號必須分隔允許清單中的每個項目。例如

mysql> SET GLOBAL group_replication_ip_allowlist="192.0.2.21/24,198.51.100.44,203.0.113.0/24,2001:db8:85a3:8d3:1319:8a2e:370:7348,example.org,www.example.com/24";

若要加入複寫群組,伺服器需要在種子成員上被允許,並向該成員發出加入群組的請求。通常,這會是複寫群組的啟動成員,但它可以是 group_replication_group_seeds 選項中列出的任何伺服器,該選項在加入群組的伺服器組態中。如果群組的任何種子成員在 group_replication_group_seeds 選項中以 IPv6 位址列出,而加入成員的 group_replication_local_address 為 IPv4,或反之亦然,您也必須為加入成員設定並允許種子成員所提供協定的替代位址(或解析為該協定位址的主機名稱)。這是因為當伺服器加入複寫群組時,它必須使用種子成員在 group_replication_group_seeds 選項中宣告的協定(無論是 IPv4 或 IPv6)與種子成員建立初始連線。如果加入成員沒有針對適當協定的允許位址,則其連線嘗試將被拒絕。如需管理混合 IPv4 和 IPv6 複寫群組的更多資訊,請參閱第 20.5.5 節「支援 IPv6 及混合 IPv6 和 IPv4 群組」

當複寫群組重新設定時(例如,當選出新的主要成員或成員加入或離開時),群組成員會重新建立彼此之間的連線。如果群組成員僅被重新設定後不再屬於複寫群組的伺服器允許,則它無法重新連線到複寫群組中不允許它的其餘伺服器。為了完全避免這種情況,請為屬於複寫群組的所有伺服器指定相同的允許清單。

注意

可以根據您的安全性需求在不同的群組成員上設定不同的允許清單,例如,為了保持不同的子網路分隔。如果您需要設定不同的允許清單以滿足您的安全性需求,請確保複寫群組中的允許清單之間有足夠的重疊,以最大程度地提高伺服器在沒有原始種子成員的情況下重新連線的可能性。

對於主機名稱,名稱解析僅在其他伺服器發出連線請求時發生。無法解析的主機名稱不會被視為允許清單驗證,並且警告訊息會寫入錯誤日誌。會對已解析的主機名稱執行前向確認反向 DNS (FCrDNS) 驗證。

警告

主機名稱在允許清單中本質上比 IP 位址安全性低。 FCrDNS 驗證提供了良好的保護級別,但可能會被某些類型的攻擊破壞。僅在絕對必要時才在允許清單中指定主機名稱,並確保用於名稱解析的所有元件(例如 DNS 伺服器)都受到您的控制。您也可以使用 hosts 檔案在本機執行名稱解析,以避免使用外部元件。