云计算百科
云计算领域专业知识百科平台

Docker 部署 BIind9 DNS 服务器

一、环境准备

  • 安装 Docker 环境 确保服务器已安装 Docker 和 Docker Compose(若使用 Compose 方式)。 若离线部署,需提前在有网络的环境中下载镜像 sameersbn/bind 及相关依赖包。

  • 创建持久化存储目录

    mkdir -p /opt/docker/bind # 用于存储配置文件和区域数据


  • 二、部署 BIND DNS 容器

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

    docker run -d –name dns-server \\
    –restart=always \\
    –publish 53:53/tcp \\ # 开放 DNS 服务 TCP/UDP 端口
    –publish 53:53/udp \\
    –publish 10000:10000/tcp \\ # Webmin 管理界面端口
    –volume /opt/docker/bind:/data \\ # 挂载配置目录
    –env ROOT_PASSWORD=your_password \\ # 设置 Webmin 登录密码
    –env TZ='Asia/Shanghai' \\ # 指定时区
    –env WEBMIN_INIT_SSL_ENABLED=false \\ # 可选:禁用 SSL(若通过代理管理)
    sameersbn/bind:9.16.1-20200524

    方案二:通过 Docker Compose 部署(推荐)

    创建 docker-compose.yml 文件:

    version: '3.1'
    services:
    dns:
    image: sameersbn/bind:9.16.120200524
    container_name: dnsserver
    restart: always
    environment:
    TZ: 'Asia/Shanghai'
    ROOT_PASSWORD: your_password # Webmin 密码
    WEBMIN_ENABLED: 'true' # 启用 Webmin
    ports:
    "53:53/tcp"
    "53:53/udp"
    "10000:10000/tcp"
    volumes:
    ./data:/data # 数据持久化目录
    networks:
    dnsnetwork # 可选:自定义网络

    networks:
    dns-network:
    external: true

    启动服务:

    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 映射回域名。

  • 应用配置 每次修改后点击右上角 应用配置 或重启容器使生效:

    docker restart dns-server


  • 五、客户端测试与使用

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

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

    nslookup www.example.com 192.168.1.200 # 指定 DNS 服务器查询
    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

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Docker 部署 BIind9 DNS 服务器
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!