命令行客户端将DNS托管区域与本地区域文件同步
dnssync的Python项目详细描述
dnssync脚本允许在不同的dns提供程序上托管dns区域 与本地绑定样式的文本区域文件同步。这允许 DNS区域易于版本控制,即使服务 提供程序不直接支持。
当前支持的DNS服务提供商:
- DomainMonster(通过html抓取)
- PowerDNS
- ZoneEdit(通过html抓取)
- Register.LY(通过html抓取)
安装
$ pip install dnssync
用法
从powerdns下载区域:
$ dnssync download --driver powerdns --param apikey={KEY} --domain {DOMAIN}{ZONEFILE}
这些命令行选项也可以存储在配置文件中, 例如config.ini:
driver=powerdnsapikey={KEY}domain={DOMAIN}zonefile={ZONEFILE}
然后调用dnssync,如下所示:
$ dnssync download --config config.ini
上载区域:
$ dnssync upload --config config.ini
以及显示托管区域和本地区域之间的差异 分区文件:
$ dnssync diff --config config.ini
并测试DNS服务器是否按指定的方式为区域提供服务:
$ dnssync verify --config config.ini
注意,verify命令在精度方面有一些限制 可能是的。例如,无法从 DNS(只有剩余时间,而不是总时间,到期)。
配置
dnssync配置文件可以指定以下选项:
driver:
特定DNS宿主服务的驱动程序;当前支持 值:
- domainmonster:对于domainmonster.com
- powerdns:对于powerdns.net
- zoneedit:用于zoneedit.com
domain:
要操作的区域的名称。
zonefile:
本地区域文件的文件名。如果在 配置,它被认为是相对于配置 文件。如果在命令行中指定,则将其视为相对的 到当前工作目录。
域名怪兽
以下选项为^ {tt4}$$驱动程序:
username:
要用其登录到domainmonster的帐户的用户名。
password:
指定的用户名帐户的密码。
重要
驱动程序使用html抓取操作 托管区域。这意味着,不幸的是,它非常脆弱 如果domainmonster更改其html结构,则可能会中断。如果这个 似乎正在发生,请报告给 https://github.com/metagriffin/dnssync/issues我会尽快修好的。
powerdns
对于{{TT5}$驱动程序存在以下选项:
apikey:
powerdns提供的api访问密钥。注意,帐户必须 首先启用(通过powerdns网站),然后才能使用它。
重要
截至2016年9月29日,powerdns服务已经终止。那个 意味着您需要已经购买了帐户和服务 才能使用这个驱动程序。
区域编辑
< > >以下选项存在:username:
要登录到ZoneEdit的帐户的用户名。
password:
指定的用户名帐户的密码。
重要
zoneedit驱动程序使用html抓取在托管的 区域(尽管ZoneEdit发布了什么广告,但它们没有 管理其DNS区域)。这意味着不幸的是 易碎,如果ZoneEdit更改其HTML结构可能会断裂。如果 似乎发生了这种情况,请报告给 https://github.com/metagriffin/dnssync/issues我会尽快修好的。
多个配置文件
几个不同的配置文件可以存储在同一配置中;每个配置文件 配置文件应该有一个以域命名的节。全局参数可以 存储在“defau”中“部分。例如:
[DEFAULT]# set some global parametersdriver=powerdnsapikey=2f16eef6-5b1f-4d80-96f7-0237da03db48# set the default domain to managedomain=example.com[example.com]zonefile=example-com.zone[other-example.com]zonefile=other-example-com.zone
然后,要上载区域:
# upload 'example.com' $ dnssync upload -c config.ini # upload 'other-example.com' $ dnssync upload -c config.ini -d other-example.com
区域文件局部变量
zonefile还可以通过emacs样式指定配置文件 局部变量。在命令行中指定的配置文件, 但是,优先考虑。例如,假设 example-com.zonezonefile:
;; -*- coding: utf-8; dnssync-config: config.ini -*- $ORIGIN example.com. example.com. 3600 IN SOA ... ... more DNS records ...
以下命令将从^{tt1}中提取所有选项$ 文件:
# report differences $ dnssync diff example-com.zone # upload a new version $ dnssync upload example-com.zone