首页 > 其他分享 >smartdns 一个强大的dns 服务器

smartdns 一个强大的dns 服务器

时间:2023-11-02 10:34:22浏览次数:43  
标签:smartdns 53 server dns coredns 服务器 com

参考架构

 

一个集成其他dns的参考玩法

 

集成示例

基于docker-compose 运行

  • docker-compose.yaml
version: "3"
services:
  pdnsadmin:
    image: powerdnsadmin/pda-legacy:0.3
    networks:
      dns:
        ipv4_address: 172.16.238.9
    ports:
      - 80:80
    environment:
    - PDNS_API_KEY=a_strong_api_key
    - PDNS_STATS_URL=http://pdns:8081
    - PDNS_API_URL=http://pdns:8081
    - PDNS_VERSION=4.6.2
  pdns:
    image: interlegis/powerdns:4.6.2
    networks:
      dns:
        ipv4_address: 172.16.238.10
    ports:
      -  3053:53
      -  3053:53/udp
      -  8081:8081
    environment:
      - PDNSCONF_API_KEY=a_strong_api_key
      - PDNSCONF_DNSUPDATE=yes
      - SECALLZONES_CRONJOB=yes
      - PDNSCONF_GMYSQL_USER=root
      - PDNSCONF_GMYSQL_DBNAME=powerdns
      - PDNSCONF_GMYSQL_PASSWORD=dalong
  coredns:
    image: dalongrong/coredns
    command: -conf=/opt/Corefile
    networks:
      dns:
        ipv4_address: 172.16.238.11
    volumes:
      - ./Corefile:/opt/Corefile
    ports:
      - 2053:53
      - 2053:53/udp
  mysql:
    image: mysql:8.0.32
    command: --default-authentication-plugin=mysql_native_password --log-bin --binlog-format=ROW --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    networks:
      dns:
        ipv4_address: 172.16.238.12
    environment:
      - MYSQL_ROOT_PASSWORD=dalong
      - MYSQL_DATABASE=powerdns
    ports:
      - 3306:3306
  app:
     image: pymumu/smartdns:latest
     networks:
      dns:
        ipv4_address: 172.16.238.13
     volumes:
       - ./smartdns:/etc/smartdns
     ports:
       - 1053:53/udp
       - 1053:53/tcp
networks:
  dns:
    driver: bridge
    ipam:
      driver: default
      config:
      - subnet: 172.16.238.0/24
  • coredns 配置
.:53 {
   mysql {
    dsn root:dalong@tcp(mysql:3306)/powerdns?tls=skip-verify&autocommit=true
    ttl 20
  }
}
  • smartdns 配置
    此服务包含了转发coredns 以及powerdns 的配置
 
bind [::]:53
server 8.8.8.8
server 1.222.1.1
server 172.16.238.11
server 172.16.238.10
server 114.114.114.114
audit-enable yes
cache-size 32768
rr-ttl 5
cache-persist yes
prefetch-domain yes
log-level   debug
log-console  yes
cache-file /var/cache/file
serve-expired-prefetch-time 0
address /example.com/1.2.3.4
address /example.com/4.5.6.7,8.9.10.11,12.13.14.15,113.156.178.1
cname /dalong.com/example.com
ip-alias 1.2.3.4/32 192.168.1.1
  • 启动
docker-compose up -d 

注意启动之后需要创建coredns 的记录表,powerdns 就不需要

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;

配置powerdns admin 以及添加coredns 记录

 


添加记录

 


coredns 记录

 
INSERT INTO coredns_records (zone, name, ttl, content, record_type) VALUES
('appdemo.org.', 'foo', 30, '{"ip": "1.1.1.1"}', 'A')
  • 查询效果

 

说明

基于smartdns 提供的一些能力以及利用一些开源dns server 可以实现比较灵活的dns 控制,完整的示例我已经push 到github 了,可以参考

参考资料

https://github.com/pymumu/smartdns
https://github.com/PowerDNS/pdns
https://github.com/PowerDNS-Admin/PowerDNS-Admin
https://pymumu.github.io/smartdns/configuration/
https://coredns.io/
https://github.com/rongfengliang/smartdns_coredns_powerdns_learning

标签:smartdns,53,server,dns,coredns,服务器,com
From: https://www.cnblogs.com/rongfengliang/p/17804830.html

相关文章

  • 一台服务器最大能支持多少条 TCP 连接?
    一台服务器最大能打开的文件数调整服务器能打开的最大文件数示例一台服务器最大能支持多少连接一台客户端机器最多能发起多少条连接其他相关实际问题之前有一位读者向我诉苦,有次面试,好不容易(今年行情大家都懂的)熬到到技术终面,谁知道面试官突然放个大招问他:一台服务器最大......
  • 使用IDEA管理服务器Docker及远程仓库
    目录配置连接Docker服务器及远程仓库连接服务器Docker远程仓库(可选)IDEA管理确保docker服务器已经开启了远程守护进程访问。[1]配置连接Docker服务器及远程仓库连接服务器Docker在IDEADocker配置中填入服务器IP及端口下方提示ConnectionSuccessful即可。tcp://192.1......
  • 2023年,除了宝塔,还有好用的服务器运维监控工具么?
    很多运维人员、工程师在日常工作中会产生自己岗位的独特需求,小编在主机/服务器运维的过程中也提炼了几点:无需安装其他软件,随时远程连接家里的电脑/服务器实时监控服务器的运行状态,有异常情况可以告警可以做一些安全扫描,防止被入侵在使用了宝塔、向日葵等几款工具后,我“机缘巧......
  • 【工具】pycharm:远程连接服务器调试代码
    pycharm:远程连接服务器调试代码      参考资料1. pycharm:远程连接服务器调试代码......
  • 恒创科技:香港服务器不稳定的几种情况
    ​近年来,随着互联网的迅猛发展,香港作为一个重要的网络枢纽地区,扮演着连接中国内地和国际网络的重要角色。一些用户表示在使用香港服务器时可能会遇到不稳定的情况,导致访问困难、加载缓慢甚至无法连接。为什么香港服务器会出现不稳定表现呢?我们需要从香港服务器内部......
  • 创建一个Web服务器并保持其运行,可以使用Python的Flask库。以下是一个基本的示例: ```p
    创建一个Web服务器并保持其运行,可以使用Python的Flask库。以下是一个基本的示例:```pythonfromflaskimportFlask,requestimportosapp=Flask(__name__)@app.route('/webhook',methods=['POST'])defwebhook():  data=request.get_json()  #在这里添加你的......
  • 海外网站租用服务器费用是多少?如何降低服务器租用成本?
    对于想要在海外运营网站的企业,在选择服务器时,除了需要关注服务器性能和稳定性外,也需要对服务器租用费用进行预估和评估。那么,海外网站租用服务器的费用是多少呢?又如何降低服务器租用的成本呢?下面将为大家解答这些问题。海外网站租用服务器的费用海外网站租用服务器的费用受供应......
  • 使用​​Flask​​库来创建一个Webhook服务器,该服务器可以接收HTTP请求
    在Python中,你可以使用Flask库来创建一个Webhook服务器,该服务器可以接收HTTP请求,处理请求体,并发送响应。以下是一个简单的示例:fromflaskimportFlask,request,jsonifyapp=Flask(__name__)@app.route('/webhook',methods=['POST'])defwebhook():#获取请求体中的数......
  • DNS_PROBE_STARTED 错误分析
    这种错误通常是由于DNS(DomainNameSystem,域名系统)解析问题引起的。在本文中,我将详细解释DNS_PROBE_STARTED错误的含义,并提供一些可能的原因和解决方法。一、DNS_PROBE_STARTED错误的含义当您在Chrome浏览器中访问网页时,浏览器会首先尝试将网站域名(如www.example.com)解析为对应的IP......
  • DNS_PROBE_FINISHED_BAD_CONFIG 错误分析
    常见错误电脑上能够正常使用微信电脑版访问网络,但在Chrome浏览器里无法打开任何网页,出现了DNS_PROBE_FINISHED_BAD_CONFIG的提示。这种错误通常是由于DNS(DomainNameSystem,域名系统)配置错误引起的。在本文中,我将详细解释DNS_PROBE_FINISHED_BAD_CONFIG错误的含义,并提供一些......