首页 > 代码库 > linux服务器之dns

linux服务器之dns

DNS的本质是什么?

Domain Name System = DNS(域名系统)其实是一个数据库,是用于 TCP/IP 程序的分布式数据库,同时也是一种重要的网络协议。DNS储存了网络中的 IP 地址与对应主机的信息,邮件路由信息和其他网络应用方面的信息,用户通过询问解决库(解决库发送询问并对DNS回应进行说明)在 DNS 上查询信息。

DNS的作用是什么?

DNS是网络分层里的应用层协议,事实上他是为其他应用层协议工作的,简单说就是把域名,或者说主机名转化为IP地址(同时也提供反向域名查询的功能), 类似字典,比如访问 www.baidu.com,实际访问的是它的IP地址,因为机器识别的是拥有固定格式和含义的IP地址,而域名可以千奇百怪,甚至是中文,不利于识别。 还有比如公司内部的域验证,通过分配给员工的域账号登录内网就必须通过DNS来找到域名权限服务器,来认证身份,故有些书上说:DNS是因特网世界里不可 缺少的东西。

为什么叫域名系统,什么是域名?

人和人要互相识别和记忆,需要名字作为辅助,而对于网络世界,在因特网内也需要一种命名系统来做类似的事情,该系统使用了域来划分,任何一个网络里的主机 (或者路由器)都有独一无二的域名(类似国家代码),域又能继续划分为子域(类似每个国家有不同的省份代码),子域还能继续划分(每个省都有自己的各个城 市的代码)……在因特网内对应的就是顶级域名(com,net,cn,org等),二级域名……注意这仅仅是一种逻辑的划分。而这些域名系统在形式上组成 了一种树结构。

eg:www.baidu.com

               |           |

          二级域名 一级域名

名字(也叫标号)组成只能是英文或者数字,目前中文也支持了,长度不大于63个字符,总共完整域名长度不超过255个字符,英文域名不区分大小写,从右到左,域名级别依次降低。www是表示万维网,不属于域名。

DNS缓存

DNS中使用了高速缓存,因为域名到地址的映射不常变,故为提高效率而设,主机在启动时从本地服务器下载名和地址的全部数据,并维护存放自己最近使用的域 名的缓存,并且只在从缓存中找不到名字时才使用根域名服务器发起查询。实际中,当一个 DNS 服务器接收到一个 DNS 回答后,会将其信息缓存一段时间,当再有一个对相同域名的查询时,便可直接回复。通过 DNS 缓存,大部分查询都只需要本地 DNS 服务器便可完成解析。

DNS缓存污染

本地域名服务器在接收到DNS请求时,先查找DNS缓存,如果缓存命中直接返回结果,如果黑客攻入路由器,对部分域名的缓存进行了更改,比如将缓存的结果 指向不可描述的页面,那么即导致用户的正常请求被转移……,此时可以清除各级缓存(浏览器,系统,路由器,DNS缓存)。貌似无法避免,只能是提高安全意 识,即使使用了 HTTPS也不行,因为DNS解析过程发生在HTTPS请求交互前。

反向域名查询和垃圾邮件过滤

IP反向解析主要应用到邮件服务器中来阻拦垃圾邮件,比如用 xxx@xxx.com 给邮箱 xxxxx@qq.com 发了一封信。qq邮件服务器会查看信头文件,信头文件显示信是由哪个IP地址发出的,然后根据IP地址反向解析,如反向解析到这个IP所对应的域名是 xxx.com (不在黑名单)那么就接受,否则拒绝。     

一:主从dns配置

1:关闭火墙
2:安装
yum search dns
yum install -y bind.x86_64
3:启动服务
systemctl restart named   ##在启动过程需要在敲键盘,随机录入字符启动

1:编辑文件
vim /etc/named.conf
~~~~~~~~~

options {
        listen-on port 53 { any; };      ##回环接口,any表示内部都可以打开端口
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };        ##外部访问也可以打开端口
        forwarders      { 114.114.114.114; };  ##主dns服务器

~~~~~~~~~
systemctl restart named
2:测试
另一台设备,设置其dns解析为安装bind软件的ip
[root@localhost ~]# vim /etc/resolv.conf
nameserver 172.25.254.119

[root@localhost ~]# dig www.baidu.com
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17708
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 13, ADDITIONAL: 27
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.baidu.com.            IN    A
;; ANSWER SECTION:



本地dns服务器配置

vim /etc/named.conf
~~~~~~~~~

options {
        listen-on port 53 { any; };      ##回环接口,any表示内部都可以打开端口
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };        ##外部访问也可以打开端口

~~~~~~~~~

根据/etc/named.conf最后两行提示,编辑vim /etc/named.rfc1912.zones 文件

2)root@localhost named]# vim /etc/named.rfc1912.zones

 

zone "zpy.com" IN {      ##zpy.com为一个域
        type master;
        file "zpy.com.zone";  ##文件名称
        allow-update { none; };
};

(3)[root@localhost named]# cd /var/named/
cp -p named.loopback zpy.com.zone
[root@localhost named]# vim zpy.com.zone

$TTL 1D
@       IN SOA  dns.zpy.com. root.zpy.com. (       ##一定要加. 负责系统自动补上zpy.com
此处表示zpy.com                0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.zpy.com.
dns     A       172.25.254.123  ##dns ip 地址
www     A       1.1.1.1
news    A       1.1.1.2

(4)systemctl restart named
 dig www.zpy.com

DNS反向代理

即输入ip 查出域名

(1)root@localhost named]# vim /etc/named.rfc1912.zones  
~~~~~~~

zone "20.20.172.in-addr.arpa" IN {   ##表示ip为172.20.20 网段的ip
        type master;
        file "zpy.com.ptr";          ##文件名称  zpy.com.ptr
        allow-update { none; };
};

(2) cp -p named.loopback zpy.com.ptr  ##一定要加-p  表示也复制权限,负责会出现问题

[root@localhost named]# vim zpy.com.ptr  ##编辑文件

$TTL 1D
@       IN SOA  dns.zpy.com. root.zpy.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.zpy.com.
dns     A       172.25.254.123
1       PTR     bbs.zpy.com.

(3)systemctl restart named
另一台主机
dig -x 172.20.20.1  ##反向解析一定要加-x

指定用户指定解析配置

当想要给不同用户不同的dns解析时
题:需要给172.25.254.19 dns为zpy.com.zone 内的解析。给其他用户其他解析,怎样设置?

1) 新建zpy.com.inter 域,写入解析
[root@localhost named]# cp -p zpy.com.zone zpy.com.inter
[root@localhost named]#vim zpy.com.inter

$TTL 1D
@       IN SOA  dns.zpy.com. root.zpy.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.zpy.com.
bbs     CNAME   www.zpy.com.
dns     A       172.25.254.123
www     A       2.2.2.2
news    A       2.2.2.3

[root@localhost named]# cat zpy.com.zone

$TTL 1D
@    IN SOA    dns.zpy.com. root.zpy.com. (
                    0    ; serial
                    1D    ; refresh
                    1H    ; retry
                    1W    ; expire
                    3H )    ; minimum
    NS    dns.zpy.com.
bbs    CNAME    www.zpy.com.
dns    A    172.25.254.123    
www    A    1.1.1.1
news    A    1.1.1.2

 
记住以上两个域的dns解析域名对应的ip
(2) [root@localhost named]# cp /etc/named.rfc1912.zones /etc/named.rfc1913.zones
  [root@localhost named]# vim  /etc/named.rfc1913.zones

zone "zpy.com" IN {
        type master;
        file "zpy.com.inter";   ##更改地址为zpy.com.inter

(3)[root@localhost named]# vim /etc/named.conf


 /*
zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";                    ##注释掉之前只访问/etc/named.rfc1912.zones的代码
*/
view loacluser {                ##此处名字任意
        match-clients { 172.25.254.19; };        ##仅允许172.25.254.19访问
zone "." IN{                    
        type hint;
        file "named.ca";
};
include "/etc/named.rfc1912.zones";          ##下一步操作为访问此文件
};
view otheruser {
        match-clients { any; };           ##允许所有人访问/etc/named.rfc1913.zones下的文件域
zone "." IN{
        type hint;
        file "named.ca";                 
};
include "/etc/named.rfc1913.zones";
};

(4)重启服务测试
 systemctl restart named
任意ip访问的是/etc/named.rfc1913.zones里面包含的域
[root@localhost ~]# dig www.zpy.com

; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> www.zpy.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64146
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.zpy.com.            IN    A
;; ANSWER SECTION:
www.zpy.com.        86400    IN    A    2.2.2.2
;; AUTHORITY SECTION:
zpy.com.        86400    IN    NS    dns.zpy.com.
;; ADDITIONAL SECTION:
dns.zpy.com.        86400    IN    A    172.25.254.123
;; Query time: 0 msec
;; SERVER: 172.25.254.123#53(172.25.254.123)
;; WHEN: Wed Aug 09 01:10:24 EDT 2017
;; MSG SIZE  rcvd: 90
172.25.254.19 访问/etc/named.rfc1912.zones里面包含的域


本文出自 “12462896” 博客,转载请与作者联系!

linux服务器之dns