使用PowerDNS实现内网DNS解析

2023-11-07

部署环境

公司内部安装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

  1. 使用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/
  1. 配置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
  1. 安装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
  1. 安装递归查询服务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
  1. 安装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
  1. 访问powerdns-admin页面并配置接口信息
    在这里插入图片描述
  • 添加A记录
    在这里插入图片描述
  1. 修改测试客户端10.y.y.195的dns ip为10.x.x.109并解析上一步添加的A记录
    在这里插入图片描述
  • 解析A记录
    在这里插入图片描述
  • 解析baidu.com,通过内网递归查询到外部域名
    在这里插入图片描述

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

备注:
高可用dns服务可通过后端mysql实现主从实现,配置两个pdns。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用PowerDNS实现内网DNS解析 的相关文章

  • 段错误...关于你好世界

    这段代码非常简单 但我在 x86 64 Linux 系统上遇到了段错误 这让我很烦恼 刚开始接触asm 请耐心等待 与 NASM 组装nasm f elf64 test asm 与连接ld o test test o SECTION tex
  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • 使用脚本检查 git 分支是否领先于另一个分支

    I have branch1 and branch2我想要某种 git branch1 isahead branch2 这将显示如果branch1已承诺branch2没有 也可能指定这些提交 我无法检查差异原因branch2 is在之前br
  • 使用 systemctl 获取 systemd 进程的正常运行时间或停机时间?

    喜欢使用systemctl is active
  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • Bash:将字符串添加到文件末尾而不换行

    如何将字符串添加到文件末尾而不换行 例如 如果我使用 gt gt 它将添加到文件末尾并换行 cat list txt yourText1 root host 37 echo yourText2 gt gt list txt root hos
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • ALSA:snd_pcm_writei 调用时缓冲区不足

    当运行我最近从灰烬中带回来的旧程序时 我遇到了缓冲区不足的情况 该程序将原始声音文件完全加载到内存中 2100 字节长 525 帧 并准备 ALSA 进行输出 44 1khz 2 通道 有符号 16 位 if err snd pcm set
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的

随机推荐

  • 基于Springboot+mysql+mybatis-plus+swagger+redis+rabbimq+Springcloud+eureka+feign(http)+Apollo的员工管理系统(1

    基于Springboot mysql mybatis plus swagger redis rabbimq Springcloud eureka feign http Apollo的员工管理系统 1 本系统基于Springboot集成各种组
  • SpringBoot+Kafka+ELK 完成海量日志收集

    整体流程大概如下 服务器准备 在这先列出各服务器节点 方便同学们在下文中对照节点查看相应内容 SpringBoot项目准备 引入log4j2替换SpringBoot默认log demo项目结构如下 pom
  • 字典序最小回文串

    字典序最小回文串 题目解读 给你一个由 小写英文字母 组成的字符串 s 你可以对其执行一些操作 在一步操作中 你可以用其他小写英文字母 替换 s 中的一个字符 请你执行 尽可能少的操作 使 s 变成一个 回文串 如果执行 最少 操作次数的方
  • odoo13搭建-odoo13源码在windows系统的搭建详细过程

    最近因为要用odoo 所以记录一下在windows系统下搭建odoo的过程 odoo使用的是github下载odoo13版本 资源信息 提前需要的准备的安装包和源码如下 odoo13源码 odoo13源码下载 https github co
  • 带通滤波器介数如何确定

    你在MATLAB界面左下角的Start里面选择filter design然后填入你的参数 MATLAB会自动帮你算出你设计的滤波器的阶数
  • 福禄克测试中的电阻参数:LOOP、PAIR UBL、P2P UBL代表什么?

    福禄克测试中的电阻参数 LOOP PAIR UBL P2P UBL分别代表什么 LOOP 直流环路电阻 PAIR UBL 线对电阻差 P2P UBL 线对电阻差的差 IEEE 标准 802 3 2012 规定导线之间的直流电阻 LOOP 不
  • template_event

    if f ES TEMPLATE DIR then echo generate event template curl XPUT http localhost 9200 template template event d cat ES TE
  • 单链表翻转--Java实现

    问题描述 将单链表的顺序翻转过来 代码实现 定义链表节点 static class ListNode int val ListNode next public ListNode int val ListNode next this val
  • 网络安全(黑客)自学路线笔记

    一 什么是黑客 黑客泛指IT技术主攻渗透窃取攻击技术的电脑高手 现阶段黑客所需要掌握的远远不止这些 二 为什么要学习黑客技术 其实 网络信息空间安全已经成为海陆空之外的第四大战场 除了国与国之间的博弈 国内企业与企业间也有显著的明争暗斗现象
  • 分库分表后的查询解决方案

    在分库分表之后 每个表的数据是分散存储在不同的数据库中的 因此 在查询数据时需要考虑如何查询跨多个数据库和表的数据 常见的解决方案有以下几种 1 应用层分页 将查询条件分发到各个数据库 然后在应用层合并结果集并进行分页 这种方案可以实现比较
  • Redux 是什么?怎么用?

    第1 章 Redux 介绍 本章涵盖 定义Redux 了解Flux 与Redux 之间的差异 使用Redux 和React 介绍action reducer 和store 学习何时使用Redux 在2018 年 如果你进入任何一个React
  • psql命令

    psql备份数据库 su postgres pg dump d map gt map sql 导出sql psql d map f map sql 导入sql psql导出数据到文件 COPY SELECT gid name FROM l
  • java强引用、软引用、弱引用、虚引用

    前言概述 在JDK1 2以前的版本中 当一个对象不被任何变量引用 那么程序就无法再使用这个对象 这就像在日常生活中 从商店购买了某样物品后 如果有用 就一直保留它 否则就把它扔到垃圾箱 由清洁工人收走 一般说来 如果物品已经被扔到垃圾箱 想
  • 【群智能算法】一种改进的蜣螂优化算法IDBO[2]【Matlab代码#18】

    文章目录 获取资源 请见文章第5节 资源获取 1 原始DBO算法 2 改进后的IDBO算法 2 1 Bernoulli混沌映射种群初始化 2 2 自适应因子 2 3 Levy飞行策略 2 4 动态权重系数 3 部分代码展示 4 效果图展示
  • Spring 事件发布机制

    目录 事件驱动 使用事件机制 Java 事件使用 Spring 事件使用 使用 Aware 不使用 Aware Spring 事件发布流程及源码解析 ApplicationEvent ApplicationListener 监听者注册 Ap
  • node常见面试题库

    node常见面试题库 1 检测系统中node版本号的指令是 node v 2 如何退出node执行环境 REPL环境 ctrl c c 3 node如何创建服务器 写出代码 var http require http var server
  • 合理设置的MTU值,解决“部分网站打不开”“上网速度慢”等问题,并且可以适当提升上网速度

    一般来讲 设计好本机的MTU值 可以解决 部分网站打不开 上网速度慢 的情况 但是如果你的共享主机或路由器的MTU设置有问题 有时问题仍然存或 或者出现网速过慢的情况 合理的设置路由器与本机的MTU值 就可以完全解决上述问题 使上网速度达到
  • AndroidJavaClass 和AndroidJavaClass

    很明显 AndroidJavaClass 就代表一个Java类 例如 com henry util 有一个静态方法 love 可以这样new AndroidJavaClass com henry util callstatic love 就
  • swagger mock文档服务器,通过 Swagger 定义自动生成 Mock 数据

    我最近的在做的项目是一个前后端分离的项目 前后端由不同的团队分别开发 并且前端的进度经常领先后端 这就意味着 当前端在开发一个新功能时 API 可能还没有准备好 不过 我们会先和后端先商议好 API Schema 然后使用 Mock 数据进
  • 使用PowerDNS实现内网DNS解析

    部署环境 公司内部安装powerdns实现局域网服务dns解析 避免通过ip访问 系统 CentOS 7 9 mysql版本 5 7 33 pdns版本 4 4 1 pdns recursor版本 4 4 2 PowerDNS admin版