主机域名

利用PowerDNS实现内网DNS解析

主机域名 我的站长站 2022-12-22 人阅读

部署环境

公司内部安装powerdns实现局域网服务DNS解析,避免通过ip访问。

系统: CentOS 7.9

mysql版本: 5.7.33

pdns版本: 4.4.1

pdns-recursor版本: 4.4.2

PowerDNS-admin版本: 0.2.3

DNS服务器主机: 10.x.x.109

测试服务器ip: 10.y.y.195

使用docker方式安装mysql,docker-compose.yml如下所示:

---
version: '3.7'
services:
  mysql:
    hostname: mysql
    container_name: mysql
    restart: always
    image: mysql:5.7.33
    ports:
      - 3306:3306
    command: [
      '--default-authentication-plugin=mysql_native_password',
      '--max_connections=5000',
      '--expire_logs_days=5',
      '--character-set-server=utf8mb4',
      '--collation-server=utf8mb4_unicode_ci',
      '--slow_query_log=on',
      '--long_query_time=2',
      '--slow_query_log_file=/var/lib/mysql/slow_query.log'
    ]
    environment:
      MYSQL_DATABASE: powerdns
      MYSQL_ROOT_PASSWORD: XpWxxxxx0WmE
      MYSQL_USER: normal
      MYSQL_PASSWORD: 2GVoxxxxxtUsI5y
    volumes:
      - /data/mysql/data:/var/lib/mysql
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
      - ./my.cnf:/etc/mysql/my.cnf
    networks:
      - mysql
networks:
  mysql:
    external: true

mysql配置my.cnf如下:

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
slow_query_log = on
long_query_time = 2
slow_query_log_file = /var/lib/mysql/slow_query.log
log_queries_not_using_indexes = ON
max_connections = 4000
skip-name-resolve
#lower_case_table_names = 1
# Custom config should go here
!includedir /etc/mysql/conf.d/

配置powerdns yum源

yum install epel-release yum-plugin-priorities &&
curl -o /etc/yum.repos.d/powerdns-auth-44.repo https://repo.powerdns.com/repo-files/centos-auth-44.repo && yum makecache fast

安装pdns及pdns连接mysql插件

yum install pdns.x86_64 pdns-backend-mysql.x86_64

修改pdns.conf配置:

api=yes
api-key=Qno9k64Vkkkyfz1LtC3klk
daemon=no
guardian=no
launch=gmysql
gmysql-host=10.x.x.109
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=root
gmysql-password=XpWxxxxx0WmE
local-address=0.0.0.0, ::
local-port=5300
setgid=pdns
setuid=pdns
webserver=yes
webserver-address=0.0.0.0
webserver-allow-from=0.0.0.0/0
webserver-port=8081

初始化数据库:

mysql -h10.x.x.109 -uroot -pXpWxxxxx0WmE -e "use powerdns; source /usr/share/doc/pdns-backend-mysql-4.4.1/schema.mysql.sql;"

启动pdns服务:

systemctl start pdns && systemctl enable pdns

安装递归查询服务pdns-recursor

配置yum源

curl -o /etc/yum.repos.d/powerdns-rec-44.repo https://repo.powerdns.com/repo-files/centos-rec-44.repo && yum makecache fast

安装pdns-recursor

yum install pdns-recursor

修改pdns-recursor配置文件pdns-recursor.conf

allow-from=10.10.0.0/16, 10.20.0.0/16      #对应权威服务器的allow-recursion 允许哪些ip进行递归
#forward-zones=mydomain.com=10.x.x.109:5300      #哪些域名需要自己的权威服务器来解析,域名=权威服务器ip:端口
forward-zones-file=/etc/pdns-recursor/zones
forward-zones-recurse=.=223.5.5.5, .=180.76.76.76, .=114.114.114.114           # 除forward-zones外其他所有的请求发至223.5.5.5, 180.76.76.76, 114.114.114.114
local-address=0.0.0.0         #对应权威服务器的local-address
local-port=53
setgid=pdns-recursor
setuid=pdns-recursor

配置哪些域名强制走内网dns解析,/etc/pdns-recursor/zones配置如下

+mydomain.com=10.x.x.109:5300
test.dev.mydomain.com=10.x.x.109:5300
test2.prod.mydomain.com=10.x.x.109:5300

启动pdns-recursor服务

systemctl start pdns-recursor && systemctl enable pdns-recursor

安装PowerDNS管理后台服务powerdns-admin,docker-compose.ymk如下

---
version: '3.7'
services:
  powerdnsadmin:
    hostname: pdnsadmin
    container_name: pdnsadmin
    image: ngoduykhanh/powerdns-admin:0.2.3
    restart: always
    ports:
      - 80:80
    networks:
      - pdns
    volumes:
      - /data/pdnsadmin/data:/data
    logging:
      driver: json-file
      options:
        max-file: '3'
        max-size: '10m'
networks:
  pdns:
    driver: bridge
    external: true

访问powerdns-admin页面并配置接口信息

添加A记录

修改测试客户端10.y.y.195的dns ip为10.x.x.109并解析上一步添加的A记录

解析A记录

解析baidu.com,通过内网递归查询到外部域名

至此内网单机版dns服务器部署完毕,可以正常解析域名。

相关推荐
  • DNS解析
  • Cloudns免费DNS解析服务网站
    Cloudns免费DNS解析服务网站

    Cloudns介绍Cloudns是一款可以免费使用的国外DNS解析服务网站,Cloudns一个账号可以免费DNS解析一个域名,但是可以用邮箱注册多个账号。免费套餐:4 Unicast DNS服务器、1 DNS区域、50 DNS记录、500K ...

    主机域名 159 1年前
  • 国外免费dns解析服务网站大全收藏

    1、Godaddy网址:www.godaddy.com简介:Godaddy相信大家应该熟悉,可能有些人购买其域名或者网站空间,有些人不晓得其中还有DNS服务。请看“如何使用godaddy免费DNS解析域名”告诉你如何利用godaddyDNS服务,值得推荐。2、DNSPARK网址:www.dnspark.net简介:DNSP...

    主机域名 417 1年前
  • 西部数码如何修改设置域名DNS
    西部数码如何修改设置域名DNS

    西部数码修改域名DNS的方法和其他服务商平台一样,只是修改的位置不同,分为两个步骤即可完成修改,具体方法如下:第一步:进入西部数码域名管理界面,找到对应的“修改域名DNS”这个位置第二步:进入后,选择“...

    服务器配置 326 4年前
最新更新