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

[经验分享] linux网络服务之dns

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-23 09:58:31 | 显示全部楼层 |阅读模式
   dns:即domain name system,用于实现从域名到IP的转换,在DNS系统出现之前,windows系统通过主机文件(c:\windwos\system32\drivers\etc\hosts)提供域名转换功能,linux通过主机文件(/etc/hosts)提供域名转换功能。
    默认情况下,操作系统DNS解析的查找步骤:

    主机文件---->DNS缓存---->DNS服务器

    在linux系统中,通过调整配置文件(/etc/nsswitch.conf ),可以调整查找步骤
1
2
3
4
# vim /etc/nsswitch.conf 文件中有一行
hosts:      files dns  //files表示主机文件,先查找主机文件查找dns服务器
如果改成:
hosts:      dns files  //这样优先查找dns




    linux平台的dns软件叫bind,即Berkeley Internet Name Domain,DNS服务器的类型:
    1.主DNS服务器

    2.辅助DNS服务器

    3.缓存DNS服务器


    bind的数据库文件叫做区域数据文件,区域数据文件由资源记录组成。

    资源记录的类型:

    1.SOA:Start Of Authority,起始授权机构

    2.NS:Name Server,域名服务器

    3.MX:Mail Exchange,邮件交换器

    4.A:Address,A记录(从FQDN到IP的转换)

    5.PTR: 反向记录(从IP到FQDN的转换)

    6.AAAA: IPv6的A记录(从FQDN到IPv6的转换)

    7.CNAME: 别名记录


    资源记录的格式:

1
2
3
4
name [ttl]     IN    RRtype    Value
name: 区域名称,简写为@
ttl:  DNS缓存时间
value: 主DNS服务器的FQDN




    SOA:只能有一个  
1
2
3
4
5
6
@    600    IN    SOA    ns.py.com. root.py.com. (
            2014092201; 序列号
            2H; 刷新时间
            1H; 重试时间
            1D; 过期时间
            )




    NS记录:可以有多条

1
@    600    IN     NS    ns.py.com.




    A记录:只能定义在正向区域数据文件中   
1
www    600    IN    A    192.168.57.1




     MX记录:可以有多条
1
@    600    IN     MX    10    mail




    PTR记录:  
1
1    600    IN     PTR    www.py.com.




    CNAME记录:  
1
ftp    600    IN    CNAME    www




    主DNS服务器的安装配置:
    1.安装dns服务器软件

1
# yum -y install bind



服务器的IP为:192.168.57.23,域名为py.com

    2.配置:主配置文件(/etc/named.conf)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# vim /var/named.conf
options {
//      listen-on port 53 { 127.0.0.1; };   #定义named服务侦听的端口和IP地址,默认为侦听                                              所有IP地址的53号端口。
//      listen-on-v6 port 53 { ::1; };      #针对IPv6的侦听端口和IP设置。
        directory       "/var/named";       #定义工作目录(即区域文件的路径)

        allow-query     { localhost; };    #此项通常仅用于服务器是缓存名称服务器时,只开                                             放查询功能给本地客户端;
        recursion yes;                     #定义允许递归查询的IP


zone "." IN {
        type hint;
        file "named.ca";
};

//以下四行新增加
zone "py.com" IN {
        type master;
        file "py.com.zone";
};

//以下四行新增加
zone "57.168.192.in-addr.arpa" IN {
        type master;
        file "named.py.com";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

检查主配置文件语法
# named-checkconf




    3.配置正向区域:区域配置文件(/var/named/py.com.zone)      

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# vim py.com.zone
$TTL 1D
@       IN SOA  ns.py.com. root.py.com. (
                                2014092201      ; serial  #序列号
                                        1H      ; refresh #每隔多久到主服务器检查一次
                                        5M      ; retry   #重试时间,应该小于refresh时间
                                        3D      ; expire  #过期时间
                                        12H )   ; minimum
        IN NS  ns.py.com.
ns      IN A   192.168.57.23
s1      IN A   192.168.57.1
s2      IN A   192.168.57.2
mail    IN A   192.168.57.3
mail2   IN A   192.168.57.4
www     IN CNAME s1
ftp     IN CNAME s2
@       IN MX  10 mail
@       IN MX  20 mail

//修改文件权限
# chown root:named py.com.zone
# chmod 640 py.com.zone

//检查区域配置文件语法
# named-checkzone py.com  "/var/named/py.com.zone"         
zone py.com/IN: loaded serial 2014092201
OK




    4.配置正向区域:区域配置文件(/var/named/named.py.com)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# vim /var/named/named.py.com
$TTL 1D
@       IN SOA ns.py.com. root.py.com. (
                                2014092201      ; serial
                                        1H      ; refresh
                                        5M      ; retry
                                        3D      ; expire
                                        12H )   ; minimum
        IN NS   ns.py.com.
1       IN PTR  s1.py.com.
2       IN PTR  s2.py.com.
3       IN PTR  mail.py.com.
4       IN PTR  mail2.py.com.

//修改文件权限
# chown root:named named.py.com
# chmod 640 named.py.com

//检查配置文件
# named-checkzone 57.168.192.in-addr.arpa /var/named/named.py.com
zone 57.168.192.in-addr.arpa/IN: loaded serial 2014092201
OK




    5.启动named服务

1
# service named start




    6.排错:可以查看日志文件排错

1
# tail -f /var/log/messages




    7.测试:测试工具有dig,host,nslookup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//修改服务器的DNS指向本机IP
# vim /etc/resolv.conf
nameserver 192.168.57.23

//host命令格式:
host [-t type] {name} [server]

# host -t A s1.py.com 192.168.57.23
Using domain server:
Name: 192.168.57.23
Address: 192.168.57.23#53
Aliases:

s1.py.com has address 192.168.57.1

# host -t CNAME www.py.com 192.168.57.23      
Using domain server:
Name: 192.168.57.23
Address: 192.168.57.23#53
Aliases:

www.py.com is an alias for s1.py.com.

# host -t PTR 1.57.168.192.in-addr.arpa 192.168.57.23
Using domain server:
Name: 192.168.57.23
Address: 192.168.57.23#53
Aliases:

1.57.168.192.in-addr.arpa domain name pointer s1.py.com.

//dig命令格式:
# dig [-t type] [name] [@server] [query options]
常用的query options:
+[no]trace
+[no]recurse
+[no]tcp

# dig -t A s1 @192.168.57.23

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> -t A s1 @192.168.57.23
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 62522
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;s1.                            IN      A

;; AUTHORITY SECTION:
.                       10800   IN      SOA     a.root-servers.net. nstld.verisign-grs.com. 2014092200 1800 900 604800 86400

;; Query time: 31 msec
;; SERVER: 192.168.57.23#53(192.168.57.23)
;; WHEN: Mon Sep 22 15:26:24 2014
;; MSG SIZE  rcvd: 95

# dig -t CNAME www @192.168.57.23

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> -t CNAME www @192.168.57.23
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 55815
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;www.                           IN      CNAME

;; AUTHORITY SECTION:
.                       10800   IN      SOA     a.root-servers.net. nstld.verisign-grs.com. 2014092200 1800 900 604800 86400

;; Query time: 33 msec
;; SERVER: 192.168.57.23#53(192.168.57.23)
;; WHEN: Mon Sep 22 15:26:38 2014
;; MSG SIZE  rcvd: 96

//nslookup命令格式:
# nslookup 回车
>server server_ip
>set q=RRtype
>name

# nslookup
> server 192.168.57.23
Default server: 192.168.57.23
Address: 192.168.57.23#53
> set q=A     
> s1.py.com
Server:         192.168.57.23
Address:        192.168.57.23#53

Name:   s1.py.com
Address: 192.168.57.1



    辅助(从)DNS服务器的安装配置:

    1.安装bind

1
# yum -y install bind



服务器IP:192.168.57.230,域名:py.com

    2.配置:主配置文件(/etc/named.conf)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# vim /etc/named.conf
//增加以下行
zone "py.com" IN {
        type slave;
        masters { 192.168.57.23; };
        file "slaves/py.com.zone";
};

zone "57.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.57.23; };
        file "slaves/named.py.com";
};

//注释下面这一行
recursion yes;


//检查文件
# named-checkconf




    3.启动named服务

1
# service named start




    4.查看salves目录


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# cd /var/named/slaves
# cat py.com.zone
$ORIGIN .
$TTL 86400      ; 1 day
py.com                  IN SOA  ns.py.com. root.py.com. (
                                2014092201 ; serial
                                3600       ; refresh (1 hour)
                                300        ; retry (5 minutes)
                                259200     ; expire (3 days)
                                43200      ; minimum (12 hours)
                                )
                        NS      ns.py.com.
                        MX      10 mail.py.com.
                        MX      20 mail2.py.com.
$ORIGIN py.com.
ftp                     CNAME   s2
mail                    A       192.168.57.3
mail2                   A       192.168.57.4
ns                      A       192.168.57.23
s1                      A       192.168.57.1
s2                      A       192.168.57.2
www                     CNAME   s1

# cat named.py.com
$ORIGIN .
$TTL 86400      ; 1 day
57.168.192.in-addr.arpa IN SOA  ns.py.com. root.py.com. (
                                2014092201 ; serial
                                3600       ; refresh (1 hour)
                                300        ; retry (5 minutes)
                                259200     ; expire (3 days)
                                43200      ; minimum (12 hours)
                                )
                        NS      ns.py.com.
$ORIGIN 57.168.192.in-addr.arpa.
1                       PTR     s1.py.com.
2                       PTR     s2.py.com.
3                       PTR     mail.py.com.
4                       PTR     mail2.py.com.



    5.测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# dig -t CNAME www.py.com @192.168.57.230

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> -t CNAME www.py.com @192.168.57.230
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42102
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.py.com.                    IN      CNAME

;; ANSWER SECTION:
www.py.com.             86400   IN      CNAME   s1.py.com.

;; AUTHORITY SECTION:
py.com.                 86400   IN      NS      ns.py.com.

;; ADDITIONAL SECTION:
ns.py.com.              86400   IN      A       192.168.57.23

;; Query time: 0 msec
;; SERVER: 192.168.57.230#53(192.168.57.230)
;; WHEN: Mon Sep 22 15:52:04 2014
;; MSG SIZE  rcvd: 78




    子DNS服务器的安装配置:
    1.安装bind
1
# yum -y install bind



服务器IP:192.168.57.230,域名:tech.py.com
    2.配置:主配置文件(/etc/named.conf)
1
2
3
4
5
6
7
8
9
10
11
12
13
//增加下列行
zone "tech.py.com" IN {
        type master;
        file "tech.py.com";
};

zone "58.168.192.in-addr.arpa" IN {
        type master;
        file "named.tech.py.com";
};

//检查配置文件
# named-checkconf




     3.配置父DNS服务器的区域配置文件(/var/named/py.com.zone),授权子域

1
2
3
//增加下列行
tech.py.com.        IN NS  ns.tech.py.com.
ns                  IN A   192.168.57.230




    4.重启named服务

1
#  service named restart




    5.在主服务器上测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# dig -t A www.tech.py.com @192.168.57.230

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> -t A www.tech.py.com @192.168.57.230
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 13703
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.tech.py.com.               IN      A

;; Query time: 1 msec
;; SERVER: 192.168.57.230#53(192.168.57.230)
;; WHEN: Mon Sep 22 16:25:28 2014
;; MSG SIZE  rcvd: 33




    配置区域转发:

    区域转发负责把本机不能解析的请求发往指下的DNS服务器,可以在全局区配置转发,也可以配置特定区域转发。
    格式如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//配置全局转发
# vim /etc/named.conf
options {
    forward only|first;
    forwarders { IP; }
    };
     
//配置特定区域转发
# vim /var/named/py.com.zone
zone "py.com" IN {
    type forward;
    forwarders { IP; }
    forward only|forward;
};




    bind配置选项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//用于控制主DNS服务器允许区域复制给辅助DNS服务器的白名单(在主DNS服务器上配置)
allow-transfer { ip; };

//用于服务器是缓存名称服务器时,只开放查询功能给本地客户端
allow-query { ip; };

//定义递归查询白名单(DNS服务器要配置转发的时候,本机的IP必须在对方的递归白名单中)
allow-recursion { ip; };

//为了安全通常是关闭的。
allow-update { none; };

定义ACL,用于上述选项的调用
acl ACL_NAME {
    192.168.57.0/24;
    10.245.32.0/21;
};

bind的4个内置ACL:
    any: 任何主机
    none: 无一主机
    local: 本机
    localnet: 本机所在的网络
     
//view:(针对不同来源的IP地址,使用不同的DNS区域文件)
acl telecom {
    202.96.0.0/16;
    };

acl unicom {
        61.192.0.0/26;   
    };

view telecom {
    match-clients { telecom; };
    zone "py.com" IN {
        type master;
        file "py.com.telecom";
        };
    };

view unicom {
    match-clients { unicom; };
    recursion no;
    zone "magelinux.com" IN {
        type master;
        file "py.com.unicom";
        };
    };

view default {
    match-clients { any; };
    zone "py.com" IN {
        type master;
        file "py.com.unicom";
        };
    };






运维网声明 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-25182-1-1.html 上篇帖子: Netty4.X 获取客户端IP 下篇帖子: linux系统回收站功能的实现 网络服务 linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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