设为首页 收藏本站
查看: 884|回复: 0

[经验分享] DNS服务器的搭建

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-8-7 08:27:29 | 显示全部楼层 |阅读模式
DNS: Domain Name Service
    C/S
        S: bind   bekerley internet name domain
        C: 共享库
    53/udp, 53/tcp

    名称解析:主机名解析
        把一种名称转换为另一种名称的过程
        名称:字串、数字
        解析库:某种存储
            username <--> uid
            某种存储:
                文本文件
                关系型数据库
                LDAP:Lightweight Directory Access Protocol, 389/tcp
        解析:根所用户所提供一种名称,去查询解析库,以得到另一种名称
    hosts: 文本文件
        IANA:
            文本文件
            ftp:--> DNS(中心服务器)
        Unix:
        向下授权管理机制
        根域:root domain
            一级域:top-level domain(顶级域)
            二级域:公司、组织、个人使用
            主机:www
                     其中根域和顶级域是有inan直接管理分配的
        递归:
            A --> B --> C –> D        A问B;B自己不知道,但B知道C有A要的结果,然后B去找C要结果;但C自己也不知道,但C知道D有A要的结果,然后C去找D要结果;得到结果后逐级上报结果,D给C,C给B,B给A
        迭代:
            A --> B
            A --> C
            A –> D
        互联网上是     递归 + 迭代的方式,
    根结点:全球的根节点一共13个
    DNS中的名称与对应的主机的真实主机名不要求是一样。这可以实现负载均衡
        一个名称可以对应多个IP
        一个IP上也可以多个名称
    DNS名称解析:
        FQDN --> IP正向解析
        IP --> FQDN反向解析。邮件服务器要求必须是反向解析的,负责认为是垃圾邮箱服务
       反向解析的域名后缀  .in-addr.arpa
    一级域:
        组织域: .com, .org, .net, .mil军事组织, .edu, .gov政府组织,                .info, .cc, .me, .tv
        国家域:.cn, .us, .uk, .jp, .tw, .hk, .iq, .ir
        反向域:.in-addr.arpa
    域:domain是一个逻辑概念, 区域:zone是一个物理概念,任何一个解析库都叫做一个区域,故一个域有2个区域,但并不是域包含区域,层级不同。
        正向解析:FQDN --> IP
            正向解析库     从物理概念来讲是个文件
        反向解析:IP --> FQDN
            反向解析库     从物理概念来讲也是个文件
    区域解析库:
        资源记录:rr(resource record)     每一行的条目,用来标记不同的身份
            有类型的概念:用于标记此记录解析的属性
                SOA: Start Of Authority, 起始授权记录,一个区域文件只能有一个,标记这个NS服务器区域由谁来管理;
                NS:Name Server名称服务器,可以有多个
                MX: Mail eXchange, 邮件交换器,MX记录有优先级属性(0-99);
                A:FQDN --> IP,专用于正向解析库
                PTR: IP --> FQDN,专用于反向解析库
                AAAA:FQDN --> IPv6,专用于正向解析库
                CNAME: Canonical Name,正式名称
    DNS查询:
        递归
        迭代
        hosts --> local dns cache --> dns server (cache) --> 迭代
        非权威应答:通过缓存,未必准确
客户端要接入互联网就要给其DNS指向,linux是在/etc/resolv.conf里面用nameserver配置指向DNS服务器的,可以有多个,一般只有第一个生效,在第一个出问题后第二个才生效
    DNS服务器类型:
        主DNS服务器
        从DNS服务器
        缓存服务器:只负责一半的任务,不用注册,只管出去迭代,而不给外部解析本地。
        解析库文件同步的过程:区域传送 (单方向传送)
            zone transfer
                完全区域传送:axfr
                增量区域传送: ixfr
                周期性检查 + 通知
子域授权:
    为什么要创建子域呢?比如在一个大公司中申请了一个域名,但公司有上百台主机,而且每个不同的部门要求自我独立互不影响,此时一个域管理起来就很困难了,所以在这个域下划分几个子域来实现更好的管理。
wKioL1PiaCPgKIF2AAF64kXUO3U831.jpg
    正向子域授权:
               只需要在父域的区域解析库中添加“胶水记录”, glue record
                  子域名称      IN     NS  子域的名称服务器,注意每个子域可能有主从多台服务器,此时用ns,ns2,ns3,……。
                ops     IN      NS      ns.ops
                 ns.ops     IN         A       172.16.100.77
               
        子域和父域不一定在同一网段下,只要2个能够通信即可。例如,这里用父域172.16.249.191;子域是192.168.1.199。
  先编辑/var/named/mageedu.com.zone加入我们所需的条目
wKioL1PiaDjj0I8QAACk5oeBl8c029.jpg
重新载入# rndc reload
wKiom1PiZzSzbm2oAAAwLY45gX4482.jpg
本地测试# dig -t NS ops.mageedu.com @172.16.249.191
wKiom1PiZ0biCwYmAAFunnFboVs649.jpg 为什么解不到了,本地有记录的啊。
我们做完全区域传送看下# dig -t AXFR mageedu.com @172.16.249.191
wKioL1PiaG6S5pAXAAKT7wLwP0U197.jpg 其实是因为此时子域服务器还未建立,所以一切都无法响应

接下来我们建立子域服务器:我们子域的地址是:192.168.1.199
     进入我们所在主机,安装bind后  在# vim /etc/named.conf中把不方便我们实验的东西注释掉;然后直接启动named,由于是第一次安装启动bind,所有启动是生成/etc/rndc.key会慢些。完成后,编辑# vim /etc/named.rfc1912.zones文件,定义新的区域:zone   “ops.mageedu.com” IN  {
                                                                                                           type    master;
                                                                                                            file    “ops.mageedu.com.zone”;
                                                                                                             };
    配置好后,本地测试# dig -t A mail.ops.mageedu.com @192.168.1.199
wKioL1PiaH2QoLjRAAISaJ00RLU815.jpg
而后去父节点测试# dig -t NS ops.mageedu.com @172.16.249.191
wKiom1PiZ3bjTK-lAAHT86U3myk232.jpg 此时OK。

配置转发器:
# vim /etc/named.conf配置
wKioL1PiaKLBiPmRAABQuX4XB1M173.jpg 加入允许递归项和转发对象:172.16.249.191就当前而言就是父域的服务器。
# named-checkconf
wKioL1PiaLKTKPlsAAAc9ui0fno894.jpg 检测语法是否有误。
# rndc reconfig重读配置文件
wKiom1PiZ6vDidnvAAAbYRdaOs0696.jpg
# dig -t A www.mageedu.com @192.168.1.199解析mageedu.com域
wKioL1PiaNHCNqrfAAIB27EVpTc464.jpg 。这里转发的是所有的非本机负责的区域给父级DNS服务器。
                    也可以转发某个或某些特定的区域给上层DNS服务器;配置转发器:
   首先改变/etc/named.conf的配置,然后清空缓存#rndc flush
wKioL1PiaODTrBV3AAAVZd9Asec857.jpg
配置#vim /etc/named.rfc1912.zones文件
wKiom1PiZ9SQCkuSAABIZKGNiaM316.jpg
检查
wKioL1PiaPviH6sFAAA0FrEW9kA204.jpg
此时想解析# dig -t A www.sohu.com就解析不了了
wKioL1PiaQjD8K01AACtMw-yy3Y451.jpg





    编译安装
    首先得到所需的bind源代码,此处以bind-9.9.5为例,解压后cd到bind-9.9.5下
  确保系统用户named的存在,不存在则添加之。
# ./configure --prefix=/usr/local/bind9.9.5 --sysconfdir=/etc/named/ --enable-threads --disable-chroot --disable-ipv6
wKiom1PiZ_-haiFKAAIZBeB2HjA371.jpg
# make && make install。
# vim /etc/profile.d/bind.sh
wKioL1PiaSnDNRsXAAA2vm2IY0Y290.jpg
提供主配置文件/etc/named/named.conf
为根及localhost提供区域解析库
# dig -t NS . @a.root-servers.net > /var/named/named.ca
# named-checkconfig
    # named -g -u named -c /etc/named/named.conf
    # named -u named
、提供rndc
    # rndc-confgen -r /dev/urandom > /etc/named/rndc.conf
    # chown root:named /etc/named/rndc.conf
    # chmod 440 /etc/named/rndc.conf
把rndc.conf中的后半段复制到named.conf中,并启用之;
提供脚本
                #!/bin/bash
                #
                # description: named daemon
                # chkconfig: - 25 80
                #
                pidFile=/usr/local/bind9/var/run/named.pid
                lockFile=/var/lock/subsys/named
                confFile=/etc/named/named.conf
                [ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions
                start() {
                    if [ -e $lockFile ]; then
                        echo "named is already running..."
                        exit 0
                    fi
                    echo -n "Starting named:"
                    daemon --pidfile "$pidFile" /usr/local/bind9/sbin/named -u named -c "$confFile"
                    RETVAL=$?
                    echo
                    if [ $RETVAL -eq 0 ]; then
                        touch $lockFile
                        return $RETVAL
                    else
                        rm -f $lockFile $pidFile
                        return 1
                    fi
                }
                stop() {
                    if [ ! -e $lockFile ]; then
                        echo "named is stopped."
                    #    exit 0
                    fi
                    echo -n "Stopping named:"
                    killproc named
                    RETVAL=$?
                    echo
                    if [ $RETVAL -eq 0 ];then
                        rm -f $lockFile $pidFile
                        return 0
                    else
                        echo "Cannot stop named."
                        failure
                        return 1
                    fi
                }
                restart() {
                    stop
                    sleep 2
                    start
                }
                reload() {
                    echo -n "Reloading named: "
                    killproc named -HUP
                    #killall -HUP named
                    RETVAL=$?
                    echo
                    return $RETVAL
                }
                status() {
                    if pidof named &> /dev/null; then
                        echo -n "named is running..."
                        success
                        echo
                    else
                        echo -n "named is stopped..."
                        success
                        echo
                    fi
                }
                usage() {
                    echo "Usage: named {start|stop|restart|status|reload}"
                }
                case $1 in
                start)
                    start ;;
                stop)
                    stop ;;
                restart)
                    restart ;;
                status)
                    status ;;
                reload)
                    reload ;;
                *)
                    usage
                    exit 4
                    ;;   
                esac   



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-23308-1-1.html 上篇帖子: AIX RAC构建错误之--未配置Default Gateway 下篇帖子: DNS的子域授权、转发以及view 服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表