首页 > 代码库 > 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