linux笔记-DNS

来源:互联网 发布:u盘安装centos 6.5教程 编辑:程序博客网 时间:2024/04/27 22:13
################
#####  DNS  ######
################


yum install bind -y        ##安装软件
systemctl start named    ##启动服务
systemctl enable named    ##开机启动
firewall-cmd --permanent --add-service=dns    ##防火墙允许该服务
firewall-cmd --reload    ##重启防火墙
chmod g+s /var/named

###  一、DNS正向解析
将域名解析为对应IP

服务端配置:

1、vim /etc/named.conf
********
.....
zone "hello.com" IN {
        type master;    
        file "hello.com.zone";    
        allow-update { none; };    
        forwarders {172.25.254.250};
};
dnssec-validation no;    ##非权威,内部测试用
.....
********

2、vim /etc/named.rfc1912.zones
************
...
添加:
zone "hello.com" IN {
        type master;
        file "hello.com.zone";
        allow-update { none; };
};
...
************

3、cp -p /var/named/named.localhost /var/named/hello.com.zone

4、vim /var/named/hello.com.zone
************
$TTL 1D
@       IN SOA  dns.hello.com. root.redhat.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.hello.com.
dns     A       172.25.254.67
www     A       172.25.254.100

************
*************
$TTL 1D    #该区域数据库文件的生存周期
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
    #域名服务器刷新记录的时间为1天,辅助域名服务器每隔1天向主域名服务器发送更新请求
                                        1H      ; retry
    #当辅DNS 1天后无法与主DNS 通信,则每隔1小时向主DNS发送更新请求。
                                        1W      ; expire
    #过期时间为1周。即,辅DNS 1周时间无法与主域名服务器通信,则对应的记录将失效
                                        3H )    ; minimum
    #TTL的最小值为3小时
        NS      @
    #NS记录,表明域名服务器记录对应的主机域名
        A       127.0.0.1
    #A记录,记录主机与域名的映射关系
        AAAA    ::1
    #IPv6的主机AAAA记录
***************




5、systemctl restart named


客户端测试:
vim /etc/resolv.conf
**********
search example.com
nameserver 172.25.254.67
**********

[root@localhost ~]# dig www.hello.com
.......
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58134
......
;; ANSWER SECTION:
www.hello.com.        86400    IN    A    172.25.254.100
........
;; ADDITIONAL SECTION:
dns.hello.com.        86400    IN    A    172.25.254.67
;; SERVER: 172.25.254.67#53(172.25.254.67)    ##DNS服务器的IP地址和端口号    
.......

### 二、DNS轮询机制
一个域名对应两个IP地址,解析的时候会以轮询的方式解析

服务端:
vim /etc/named/hello.com.zone
************
.........
添加:
www     A       172.25.254.200
************
systemctl restart named

客户端测试:

[root@localhost ~]# dig www.hello.com
.............
;; ANSWER SECTION:
www.hello.com.        86400    IN    A    172.25.254.100
www.hello.com.        86400    IN    A    172.25.254.200
............

[root@localhost ~]# dig www.hello.com
...........
;; ANSWER SECTION:
www.hello.com.        86400    IN    A    172.25.254.200
www.hello.com.        86400    IN    A    172.25.254.100
............


### 三、CNAME解析
域名的别名,例如:www.aa.com,又叫www.bb.com,都对应一个IP

服务端配置:

1、vim /etc/named/hello.com.zone
************
.........
添加:
what    CNAME   www.hello.com.
************

2、systemctl restart named

客户端测试:

[root@localhost ~]# dig what.hello.com
**********
.............
;; ANSWER SECTION:
what.hello.com.        86400    IN    CNAME    www.hello.com.
www.hello.com.        86400    IN    A    172.25.254.100
www.hello.com.        86400    IN    A    172.25.254.200
;; AUTHORITY SECTION:
hello.com.        86400    IN    NS    dns.hello.com.
;; ADDITIONAL SECTION:
dns.hello.com.        86400    IN    A    172.25.254.67
..........
**********

#### 四、MX
域里面的邮件服务器

服务端:
vim /etc/named/hello.com.zone
************
.........
添加:
hello.com.        MX 1    172.25.254.67
************
systemctl restart named

客户端测试:
[root@localhost ~]# dig -t mx hello.com
***********
.........
;; QUESTION SECTION:
;hello.com.            IN    MX
;; ANSWER SECTION:
hello.com.        86400    IN    MX    1 172.25.254.67.hello.com.
.........
***********
[root@localhost ~]# mail root@www.hello.com
Subject: hello
123
.
EOT
[root@localhost ~]# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
48C7FEAEE9      442 Wed Mar  1 04:28:00  root@localhost.localdomain
               (connect to www.hello.com[172.25.254.200]:25: No route to host)
                                         root@www.hello.com

-- 0 Kbytes in 1 Request.

#### 五、反向解析
将IP解析为域名
# !它和正向解析没有关系!
1、vim /etc/named.rfc1912.zones
*********
添加
...........
zone "254.25.172.in-addr.arpa" IN {
        type master;
        file "hello.com.ptr";
        allow-update { none; };
};
..........
*********

2、cp -p named.localhost hello.com.ptr
3、vim /var/named/hello.com.ptr
************
...........
$TTL 1D
@       IN SOA  dns.hello.com. root.hello.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.hello.com.
        A       172.25.254.67
67      PTR     www.hello.com.
111     PTR     www.redhat.com.
222     PTR     www.linux.com.
.............
# 注意:以上域名必须以‘.’结尾,否则会默认在它们后面加上‘.hello.com’后缀
************

4、systemctl restart named

客户端测试:
[root@localhost ~]# dig -x 172.25.254.222
*********
.......
;; ANSWER SECTION:
222.254.25.172.in-addr.arpa. 86400 IN    PTR    www.linux.com.
.......
*********

################
####  DNS集群  ####
################

#### 一、辅助DNS


辅DNS:
1、yum install bind
2、vim /etc/named.conf
************
.............
        listen-on port 53 { any; };
 ..............
        allow-query     { any; };
............
************
    
3、vim /etc/named.rfc1912.zones
************
..........
zone "hello.com" IN {
        type slave;
        master {172.25.254.67;};
        file "slaves/hello.com.zone";
        allow-update { none; };
};
.........
************
4、systemctl restart named

主:
1、vim /etc/named.rfc1912.zones
************5
..........
zone "hello.com" IN {
        type master;
        file "hello.com.zone";
        allow-update { none; };
        allow-transer{ 172.25.254.105;};
};
.........
************
2、systemctl restart named

测试:
dig dns.hello.com
**********
........
;; ANSWER SECTION:
dns.hello.com.        86400    IN    A    172.25.254.67
........
**********



### 二、同步主DNS
当主DNS修改了记录时,辅助DNS并不会改变,因此辅助DNS就需要同步主DNS的记录。

主DNS配置:

vim /etc/named.rfc1912.zones
***********
.......
zone "hello.com" IN {
        type master;
        file "hello.com.zone";
        allow-update { none; };
        allow-transfer {172.25.254.105;};    ##允许谁同步
        also-notify {172.25.254.105;}; ##更新时通知辅DNS
};
..........
**********

测试:

主DNS:
vim /var/named/hello.com.zone
************
$TTL 1D
@       IN SOA  dns.hello.com. root.redhat.com.  (
                                        2       ; serial
##每次修改域名或者IP都改变该数字,辅DNS才会知道同步
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns.hello.com.
dns             A       172.25.254.67
www             A       172.25.254.100
www             A       172.25.254.233
what            CNAME   www.hello.com.
hello.com.      MX 1    172.25.254.67
************

辅DNS:
每次主DNS修改配置文件 /var/named/hello.com.zone中的‘serial’和IP或域名后
辅DNS执行:dig www.hello.com


#### 三、辅DNS更新主DNS

1)、指定IP更新

vim /etc/named.rfc1912.zones
*********
zone "hello.com" IN {
        type master;
        file "hello.com.zone";
        allow-update { 172.25.254.105; };
        allow-transfer {172.25.254.105;};
        also-notify {172.25.254.105;};
};
*********
2、systemctl restart named
3、chmod 770 /var/named
4、cp -p /var/named/hello.com.zone /mnt

测试:

[root@localhost named]# nsupdate
> server 172.25.254.67
> update delete www.hello.com
> send
[root@localhost named]# dig www.hello.com
.........
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 42186
.........
[root@localhost named]# nsupdate
> server 172.25.254.67
> update add www.hello.com 86400 IN A 172.25.254.111
> send
[root@localhost named]# dig www.hello.com
...........
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49266
.........
;; ANSWER SECTION:
www.hello.com.        86400    IN    A    172.25.254.111
..........

注意:只有当主DNS重启服务后才会更新/var/named/hello.com.zone该文件

##恢复

rm -fr /var/named/hello.com.zone.jnl
cp -p /mnt/hello.com.zone /var/named/hello.com.zone #不要移动


####  四、加密更新

当其他人的IP和辅DNS的IP一致时,别人也可更新,不安全!于是就需要用密钥进行身份验证来更新。

主DNS配置:

1、dnssec-keygen -a HMAC-MD5 -b 128 -n HOST hello
 -a:指定加密方式    -b:密码长度    -n:密码用途
生成  Khello.+157+61162.key和Khello.+157+61162.private两个文件,公钥私钥两个加密字符一样

cat Khello.+157+61162.key
*********
hello. IN KEY 512 3 157 2rhbDFQ+fR8h+iGE4au9AA==
*********

2、cp -p /etc/rndc.key /etc/hello.key

3、vim /etc/hello.key
***********
key "hello" {
        algorithm hmac-md5;
        secret "2rhbDFQ+fR8h+iGE4au9AA==";
};
***********

4、vim /etc/named.conf
*********
添加:
include "/etc/hello.key";
注意:在其他大括号外添加
*********

#只允许拥有对应key的才能更新
5、vim /etc/named.rfc1912.zones
***********
........
zone "hello.com" IN {
        type master;
        file "hello.com.zone";
        allow-update { key hello; };
        allow-transfer {172.25.254.105;};
        also-notify {172.25.254.105;};
};
........
***********

#将钥匙分发给辅DNS
scp Khello.+157+61162.* root@172.25.254.105:/mnt


测试:

辅DNS:
nsupdate -k /mnt/Khello.+157+61162.private
> server 172.25.254.67
> update delete www.hello.com
> send

dig www.hello.com
**********
.........
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 16551
.....
;www.hello.com.            IN    A
........
**********

#恢复
rm -f /var/named/hello.com.zone
rm -f /var/named/hello.com.zone.jnl
cp -p /mnt/hello.com.zone /var/named/
注意:一定要还原文件,2次的更新方式不同,/var/named/hello.com.zone文件格式会改变,会有冲突

#### 五、花生壳DDNS
DDNS原理:DNS+DHCP=DDNS
DHCP负责IP解析,给客户机分配IP
DNS负责域名解析,A记录里记录了每个IP对应的域名

当dns所维护的域里的主机的IP获取方式为dhcp时,每次辅DNS重启网络服务时,都有可能会更改IP。DNS服务器里的A记录,就可能错误,所以需要dhcp分发IP时主动更改DNS服务器里的A记录。

1、配置dhcp服务(以前已经做过)。
2、修改dhcp配置
vim /etc/dhcp/dhcpd.conf
**********
该文件所有实质内容:
option domain-name "hello.com";
option domain-name-servers 172.25.254.67;
ddns-update-style interim;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 172.25.254.0 netmask 255.255.255.0 {
  range 172.25.254.100 172.25.254.200;
  option routers 172.25.254.67;
  filename "pxelinux.0";        #不用写,这是做pxe的
  next-server 172.25.254.67; #不用写,这是做pxe的
}
key hello {
        algorithm hmac-md5;
        secret "2rhbDFQ+fR8h+iGE4au9AA==";
};

zone hello.com {
        primary 127.0.0.1;
        key hello;
}
*************
3、chmod 770 /var/named
4、systemctl restart dhcpd
5、systemctl restart named

测试

测试机修改主机名:wang.hello.com
DNS机重启dhcpd和named,测试机重启named和network

0 0