mysql

原始碼 首頁

啟用方式
mysql:github.com/cloud66-oss/coredns_mysql

mysql - CoreDNS 的 MySQL 後端

描述

此外掛程式使用 MySQL 作為後端來儲存 DNS 記錄。這些記錄將可以由 CoreDNS 提供服務。後端使用一個簡單的單一資料表結構,可以與其他系統共享,從 DNS 伺服器添加和移除記錄。由於外掛程式中沒有儲存狀態,因此可以透過使用相同資料庫支援多個 CoreDNS 實例來擴展服務。

語法

mysql {
    dsn DSN
    [table_prefix TABLE_PREFIX]
    [max_lifetime MAX_LIFETIME]
    [max_open_connections MAX_OPEN_CONNECTIONS]
    [max_idle_connections MAX_IDLE_CONNECTIONS]
    [ttl DEFAULT_TTL]
    [zone_update_interval ZONE_UPDATE_INTERVAL]
}
  • dsn MySQL 的 DSN,請參考 https://github.com/go-sql-driver/mysql 的範例。您可以在 DSN 中使用 $ENV_NAME 格式,它將被替換為環境變數的值。
  • table_prefix MySQL 資料表的前綴。預設為 coredns_
  • max_lifetime SQL 連線的持續時間(以 Golang 格式)。預設為 1 分鐘。
  • max_open_connections 連接到資料庫伺服器的最大開啟連線數。預設為 10。
  • max_idle_connections 資料庫連線池中的最大閒置連線數。預設為 10。
  • ttl 沒有指定 TTL 的記錄的預設 TTL(以秒為單位)。預設為 360(秒)。
  • zone_update_interval 從資料庫載入所有網域之間的最大時間間隔。預設為 10 分鐘。

支援的記錄類型

A、AAAA、CNAME、SOA、TXT、NS、MX、CAA 和 SRV。此後端不支援 AXFR 請求。它也不支援萬用字元記錄。

設定(作為外部外掛程式)

將此作為外部外掛程式新增到 plugin.cfg 檔案中

mysql:github.com/cloud66-oss/coredns_mysql

然後執行

$ go generate
$ go build

根據提示將任何所需的模組添加到 CoreDNS 程式碼中。

資料庫設定

此外掛程式目前不建立或遷移資料庫結構。要建立資料庫和資料表,請使用以下資料表結構(請注意資料表名稱前綴)

CREATE TABLE `coredns_records` (
    `id` INT NOT NULL AUTO_INCREMENT,
	`zone` VARCHAR(255) NOT NULL,
	`name` VARCHAR(255) NOT NULL,
	`ttl` INT DEFAULT NULL,
	`content` TEXT,
	`record_type` VARCHAR(255) NOT NULL,
	PRIMARY KEY (`id`)
) ENGINE = INNODB AUTO_INCREMENT = 6 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;

記錄設定

此外掛程式提供的每個記錄都應屬於 CoreDNS 允許其服務的網域。以下是一些範例

-- Insert batch #1
INSERT INTO coredns_records (zone, name, ttl, content, record_type) VALUES
('example.org.', 'foo', 30, '{"ip": "1.1.1.1"}', 'A'),
('example.org.', 'foo', '60', '{"ip": "1.1.1.0"}', 'A'),
('example.org.', 'foo', 30, '{"text": "hello"}', 'TXT'),
('example.org.', 'foo', 30, '{"host" : "foo.example.org.","priority" : 10}', 'MX');

可以使用 dig 像這樣查詢

$ dig A MX foo.example.org 

另請參閱

請參閱手冊