接上文,使用 PowerDNS 搭建根服务器后,我又想尝试搭建权威域名服务器。
首先说一下我的观点:自建权威域名服务器犀利而无用。他要求高昂的成本但几乎没有回报。我的权威域名服务器是在两台我弃用的服务器上搭建的,因此可以无视成本。但我不建议各位这么做。
利用 PowerDNS 的 Lua 支持,我们可以轻松的搭建出一套支持分线路解析的 GeoDNS 服务器。
需要:
- 一个 Maxmind 账户
- 至少两台 VPS 服务器(目前域名服务商要求最少需要两个权威域名服务器)
配置地理信息库
- 去 Maxmind 官网 获取账户的密钥,需要密钥来更新数据库。
安装
geoipupdate
工具。apt install geoipupdate
创建文件夹
/etc/geoip
,并修改/etc/GeoIP.conf
:AccountID [账户编号] LicenseKey [授权密钥] EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country DatabaseDirectory /etc/geoip
用 Cron 设置上自动更新:
crontab -e
0 0 /usr/bin/geoipupdate
安装 GeoIP 后端
apt install -y pdns-backend-geoip
修改配置文件
/etc/powerdns/pdns.conf
enable-lua-records=yes launch=gmysql,geoip geoip-database-files=/etc/geoip/GeoLite2-City.mmdb
配置 GeoDNS
在 PowerDNS Lua 中,用户的 IP 地址作为一个变量bestwho
存在。不过如果用户的 DNS 服务器没有告知上游服务器用户的地址,那么bestwho
就会指向 DNS 服务器的地址。
PowerDNS 提供了一个 lua 函数pickclosest
,该函数从一个 IP 列表中选择离bestwho
地理位置最近的服务器返回。
还有一个函数country
,可以分辨国家。
两者的使用:
A "pickclosest({'1.1.1.1','8.8.8.8','114.114.114.114','223.5.5.5'})"
A ";if(country('CN')) then return '223.5.5.5' else return '1.1.1.1' end"
3 条评论
烫知识,b站图床跨域会403,所以你头像爆了
好好好 拿学校电脑测真炸了
没炸 你云上美国的问题吧