描述
此外掛程式使用 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
另請參閱
請參閱手冊。