Docker 部署 BIind9 DNS 服务器

打印 上一主题 下一主题

主题 1818|帖子 1818|积分 5454

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、环境准备


  • 安装 Docker 环境
    确保服务器已安装 Docker 和 Docker Compose(若利用 Compose 方式)。
    若离线部署,需提前在有网络的环境中下载镜像 sameersbn/bind 及相干依靠包。
  • 创建长期化存储目录
    1. mkdir -p /opt/docker/bind  # 用于存储配置文件和区域数据
    复制代码

二、部署 BIND DNS 容器

方案一:直接通过 docker run 命令部署

  1. docker run -d --name dns-server \
  2.   --restart=always \
  3.   --publish 53:53/tcp \      # 开放 DNS 服务 TCP/UDP 端口
  4.   --publish 53:53/udp \
  5.   --publish 10000:10000/tcp \  # Webmin 管理界面端口
  6.   --volume /opt/docker/bind:/data \  # 挂载配置目录
  7.   --env ROOT_PASSWORD=your_password \  # 设置 Webmin 登录密码
  8.   --env TZ='Asia/Shanghai' \       # 指定时区
  9.   --env WEBMIN_INIT_SSL_ENABLED=false \  # 可选:禁用 SSL(若通过代理管理)
  10.   sameersbn/bind:9.16.1-20200524
复制代码
方案二:通过 Docker Compose 部署(保举)

创建 docker-compose.yml 文件:
  1. version: '3.1'
  2. services:
  3.   dns:
  4.     image: sameersbn/bind:9.16.1-20200524
  5.     container_name: dns-server
  6.     restart: always
  7.     environment:
  8.       TZ: 'Asia/Shanghai'
  9.       ROOT_PASSWORD: your_password  # Webmin 密码
  10.       WEBMIN_ENABLED: 'true'        # 启用 Webmin
  11.     ports:
  12.       - "53:53/tcp"
  13.       - "53:53/udp"
  14.       - "10000:10000/tcp"
  15.     volumes:
  16.       - ./data:/data                # 数据持久化目录
  17.     networks:
  18.       - dns-network                 # 可选:自定义网络
  19. networks:
  20.   dns-network:
  21.     external: true
复制代码
启动服务:
  1. docker compose up -d
复制代码

三、Webmin 管理界面配置


  • 访问 Webmin
    欣赏器访问 https://<服务器IP>:10000,利用 root 和预设密码登录。
    注意:必须利用 HTTPS,否则会提示 SSL 错误。
  • 基础设置
    进入 Webmin -> Change Language and Theme,选择中文主题(部分菜单可能仍为英文)。
    确认时区设置与容器启动参数同等。

四、配置 DNS 解析规则


  • 创建主地区(正向解析)
    进入 服务器 -> BIND DNS 服务器,点击 创建新的主地区
    填写域名(如 example.com),主服务器名称设为 localhost,邮箱格式为 admin.example.com。
  • 添加 A 记录
    在新建的主地区中,选择 地址,输入子域名(如 www)和对应 IP(如 192.168.1.100)。
    支持通配符 * 解析全部未界说子域名。
  • 反向解析(可选)
    创建反向地区(如 192.168.1.0/24),添加 PTR 记录将 IP 映射回域名。
  • 应用配置
    每次修改后点击右上角 应用配置 或重启容器使生效:
    1. docker restart dns-server
    复制代码

五、客户端测试与利用


  • 配置客户端 DNS
    修改客户端 DNS 服务器地址为 BIND 容器所在宿主机的 IP。

    • Linux:编辑 /etc/resolv.conf,添加 nameserver 192.168.1.200。
    • Windows:在网络适配器设置中指定 DNS 地址。

  • 解析验证
    1. nslookup www.example.com 192.168.1.200  # 指定 DNS 服务器查询
    2. ping www.example.com                    # 验证解析结果
    复制代码
  • 缓存革新(若需)

    • Windows:ipconfig /flushdns
    • Linux:systemctl restart systemd-resolved。


六、注意事项与优化


  • 防火墙与 SELinux
    开放端口:53/tcp、53/udp、10000/tcp。
    若 SELinux 启用,需调整计谋或临时禁用。
  • 转发外部 DNS(可选)
    在容器内修改 /data/bind/etc/resolv.conf,添加公共 DNS(如 114.114.114.114)以解析外部域名。
    修改 /data/bind/etc/named.conf.options,添加 allow-query { any; }; 允许全部查询。
  • 性能与安全
    避免在容器内运行非必要服务(如 Webmin 的监控功能),减少资源占用。
    定期备份 /opt/docker/bind 目录防止配置丢失。

常见问题



  • 端口辩论:若宿主机 53 端口被占用,可改为 -p 5353:53/udp,但需客户端显式指定端口。
  • Webmin 访问异常:确保利用 HTTPS,欣赏器忽略证书警告或配置有效证书。
  • 解析耽误:检查 DNS 缓存,或重启容器逼迫革新。

links:
https://blog.csdn.net/qq_30442207/article/details/114971723

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表