logo
0
0
WeChat Login

SmartDNS ConfigService Client

基于 Apollo 的 SmartDNS 配置管理工具

编译

go version >= 1.22

./build.sh

会生成 aarch64 x86 等平台的二进制程序

安装

运行目录 /opt/cmclient

将对应平台的程序拷贝到运行目录,命名为 cmclient

拷贝 cmclient.yaml.demo 到运行目录,命名为 cmclient.yaml

拷贝 cmclient.service 到 /etc/systemd/system/

sudo systemctl daemon-reload

修改配置

下面是 cmclient.yaml 的配置说明

configServer: http://192.168.74.40:8080 #Apollo Config Server 地址
appId: smartdns                         # Apollo Appid
cluster: beijing                        # Apollo 集群名称
accessKey: xxxx                         # Apollo 鉴权 AppKey
targetConfig: /etc/smartdns/conf.d/     # 将生成的配置存在哪里?
reloadCmd: /usr/bin/systemctl restart smartdns # 重启服务的命令
namespaces:
  - service
  - nameservers.txt
  - rules.txt
  - domains

安装 SmartDNS 并进行配置

根据 SmartDNS 文档进行安装

创建 /etc/smartdns/conf.d/ 目录

创建 smartdns.conf 内容如下

conf-file conf.d/*.conf

Apollo 的配置

  • 私有 properties service 服务通用配置
dualstack-ip-selection = yes
bind = :53
user = dns
speed-check-mode = ping,tcp:80,tcp:443
response-mode = fastest-ip
audit-enable = yes
audit-num = 16
audit-size = 16M
audit-file-mode = 0644
audit-file = /var/log/smartdns/smartdns-audit.log
log-level = error
log-num = 8
log-size = 2M
log-file-mode = 0644
log-file = /var/log/smartdns/smartdns.log
expand-ptr-from-address = yes
#reload = true
  • 私有 txt nameservers 上游DNS服务器
# nameservers
server tls://223.6.6.6
server tls://223.5.5.5
  • 私有 txt rules 解析策略
# rules
domain-rules /bj-home-ros-v6.ddns.hex.ac.cn/ -no-cache
domain-rules /hb-home-ros-ydv6.ddns.hex.ac.cn/ -no-cache
  • 私有 properties domains 内网域记录
xxx.com = A,192.168.100.100

Cmclient 控制

systemctl start cmclient.service  # 启动
systemctl enable cmclient.service # 自启
journalctl -f -u cmclient         # 日志

About

基于 Apollo 的 SmartDNS 配置管理工具

Language
Go94.3%
Markdown4.2%
License1%
Shell0.2%
Others0.3%