使用docker在Centos上做DNS服务器的配置

Posted 吃螃蟹的小孩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用docker在Centos上做DNS服务器的配置相关的知识,希望对你有一定的参考价值。

我的博客: 小呆博客

1. Docker安装DNS

1.1 安装docker

curl -sSL https://get.daocloud.io/docker | sh

1.2 启动docker服务

systemctl start docker

1.3 运行DNS容器

Docker使用sameersbn/bind搭建DNS服务器

docker run --name bind -d --restart=always --publish 53:53/tcp --publish 53:53/udp --publish 10000:10000/tcp --volume /srv/docker/bind:/data sameersbn/bind:9.16.1-20200524

测试时记得将本机的dns修改为dns服务器的地址,并且关闭ipv6的连接

运行成功访问https://ip:10000,注意此处是https非http

默认账号root,密码password

1.4 运行nginx容器

为测试提供一个域名访问网站路径

docker run --name nginx -d -p 80:80 nginx

1.5 docker相关问题解决

  • 53端口占用:

    netstat -ntlp|grep 53 
    #查出pid
    kill -9 pid
    
  • 容器启动失败:

    • 检查网络连接

    • 检查docker虚拟存储容量是否足够

    • 镜像下载完毕的情况下运行

      docker restart 容器ID
      

2.两种方式配置

  • 手动配置文件进行域名拦截

2.1 手动配置文件进行域名拦截

拦截www.getcharzp.cn 这个域名到上面启动的nginx服务中

  1. 编辑/srv/docker/bind/bind/etc/named.conf.local文件中

    vim /srv/docker/bind/bind/etc/named.conf.local
    

    新增下面内容(正向解析:域名解析为IP地址)

    zone "cn" 
            type master;
            file "/var/lib/bind/cn.hosts";
            ;
    
  2. /srv/docker/bind/bind/lib下新增cn.hosts文件

    vim /srv/docker/bind/bind/lib/cscn.hosts
    

    下方的9d427dee11c8为自己docker容器的ID qq.qq.com为邮箱地址

    $ttl 38400
    cn.     IN      SOA     2bb72646050f. admin.qq.com (
                            1640000819
                            10800
                            3600
                            604800
                            38400 )
    cn.     IN      NS      2bb72646050f.
    my.cn.  IN      A       192.168.46.133
    
  3. 重启bind服务

    docker restart bind
    

2.2 通过web界面进行域名拦截

2.2.1 访问后台

账号: root ,密码: password

2.2.2 进入后台

  • Dashboard ==> Servers ==> BIND DNS Server

2.2.3 配置master zone

  • 反向解析

    • 勾选Reverse(Address to Names)
    • Domain name/Network 填入 IP
    • 输入随便一个Email address
    • 点击Create
    • 进入Zone
    • 点击Reverse Address
    • 创建后点击最后一张图的保存按钮
    • 最后到命令行输入docker restart bind

  • 正向解析

    • 勾选Forward(Names to Address)
    • Domain name / Network填入域名
    • 随便输入Email address
    • 点击Create
    • 点击Address
    • 输入二级域名前缀
    • 输入IP地址
    • 点击create后点击右上角保存
    • 最后到命令行输入docker restart bind

2.2.4 查看配置文件

根据手动配置文件位置去找或者点击如下图所示查看路径/配置文件内容

正向解析/反向解析原理相同

3. 测试

使用另一台机去测试

首先输入下面命令配置

vim /srv/docker/bind/bind/etc/resolv.conf

在里面加入条nameserver (DNS服务器IP),放在nameserver的第一条

测试方法有多种:

  • 直接浏览器访问是否存在nginx欢迎页面
  • 使用nslookup查看是否配置成功
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1B5JoASe-1640272734160)(dns/image-20211220213929438.png)]

配置成功后,访问其他的肯定是不行的所以要将原来的nameserver改回去或者改成nameserver 8.8.8.8

以上是关于使用docker在Centos上做DNS服务器的配置的主要内容,如果未能解决你的问题,请参考以下文章

使用docker在Centos上做DNS服务器的配置

docker (centOS 7) 使用笔记5 - skydns

项目环境搭建Docker+k8s二 || centos7服务器通用设置

Docker安装和配置Nginx服务

Docker安装和配置Nginx服务

DNS小实验