简述
为了降低用户访问网络资源的门槛,域名系统(Domain Name System,DNS)技术应运而生。这是一项用于管理和解析域名与IP地址对应关系的技术。简单来说,就是能够接受用户输入的域名或IP地址,然后自动查找与之匹配(或者说具有映射关系)的IP地址或域名,即将域名解析为IP地址(正向解析),或将IP地址解析为域名(反向解析)。这样一来,只需要在浏览器中输入域名就能打开想要访问的网站了。DNS域名解析技术的正向解析也是我们最常使用的一种工作模式。
3种类型的服务器。
-
主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。 -
从服务器:从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况。 -
缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。
查询方式
DNS域名解析服务采用分布式的数据结构来存放海量的“区域数据”信息,在执行用户发起的域名查询请求时,具有递归查询和迭代查询两种方式。
所谓递归查询,是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。
而迭代查询则是指,DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
域名分类
. :根域,可省略不写 com:顶级域,由ICANN组织指定和管理 分类: 国家地区域名:cn(中国)、hk(香港)、sg(新加坡)等通用顶级域名:com(商业机构)、org (非营利组织)、edu(教育机构)等新通用顶级域名:red(红色、热情)、top(顶级、高端)等 atguigu:二级域(注册域),可由个人或组织申请注册
www:三级域(子域),服务器网站名代表 主机名:s1.www.atguigu.com.中的s1就是主机名,一般用来表示具体某一台主机
流程
- 首先查找/etc/hosts
- 查找本地缓存
- 请求转发指定DNS服务器
- 查找域名是否本地解析
- 查找DNS服务器缓存
- 向根服务器发DNS请求,返回org域地址列表
- 使用某一个org域的ip,发送DNS请求,org域返回kernel域服务器地址列表
- 使用某一个kernel域的ip,发送DNS请求,kernel域返回www.kernel主机的ip地址,本地DNS服务收到后,返回客户机,并在本地DNS服务器保存一份
软件信息
软件名 bind 或bind-chroot
服务名 named
端口53
配置
/etc/named.conf
把第11行和第19行的地址均修改为any,分别表示服务器上的所有IP地址均可提供DNS域名解析服务,以及允许所有人对本服务器发送DNS查询请求。这两个地方一定要修改准确
[root@linuxprobe ~]
1 //
2 // named.conf
3 //
4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
5 // server as a caching only nameserver (as a localhost DNS resolver only).
6 //
7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
8 //
9
10 options {
11 listen-on port 53 { any; };
12 listen-on-v6 port 53 { ::1; };
13 directory "/var/named";
14 dump-file "/var/named/data/cache_dump.db";
15 statistics-file "/var/named/data/named_stats.txt";
16 memstatistics-file "/var/named/data/named_mem_stats.txt";
17 secroots-file "/var/named/data/named.secroots";
18 recursing-file "/var/named/data/named.recursing";
19 allow-query { any; };
20
21 /*
22 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
23 - If you are building a RECURSIVE (caching) DNS server, you need to enable
24 recursion.
25 - If your recursive DNS server has a public IP address, you MUST enable access
26 control to limit queries to your legitimate users. Failing to do so will
27 cause your server to become part of large scale DNS amplification
28 attacks. Implementing BCP38 within your network would greatly
29 reduce such attack surface
30 */
31 recursion yes;
32
33 dnssec-enable yes;
34 dnssec-validation yes;
35
36 managed-keys-directory "/var/named/dynamic";
37
38 pid-file "/run/named/named.pid";
39 session-keyfile "/run/named/session.key";
40
41 /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
42 include "/etc/crypto-policies/back-ends/bind.config";
43 };
44
45 logging {
46 channel default_debug {
47 file "data/named.run";
48 severity dynamic;
49 };
50 };
51
52 zone "." IN {
53 type hint;
54 file "named.ca";
55 };
56
57 include "/etc/named.rfc1912.zones";
58 include "/etc/named.root.key";
59
区域配置文件 /etc/named.rfc1912.zones
数据配置文件 /etc/named/XXXX
实验
基本
正向
vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
vim /etc/named.rfc1912.zones
zone "syh.com" IN {
type master;
file "syh.com.zone";
allow-update {none;};
};
cp -a named.localhost /etc/named/syh.com.zone
vim /var/named/syh.com.zone
$TTL 1D
@ IN SOA syh.com. root.syh.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.syh.com.
ns IN A 192.168.222.110
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
IPADDR=192.168.222.110
NETMASK=255.255.255.0
DNS1=192.168.222.110
GATEWAY=192.168.222.110
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="ens33"
UUID="b5c352d6-b21b-4925-8cc0-a2f6f287b876"
DEVICE="ens33"
ONBOOT="yes"
service network restart
[root@syh named]
Server: 192.168.222.110
Address: 192.168.222.110
Name: ns.syh.com
Address: 192.168.222.110
反向
vim /etc/named.rfc1912.zones
zone "syh.com" IN {
type master;
file "syh.com.zone";
allow-update {none;};
};
zone "222.168.192.in-addr.arpa" IN {
type master;
file "192.168.222.arpa";
};
cp -a /var/named/named.loopback /var/named/192.168.222.arpa
主从服务
主
vim /etc/named.rfc1912.zones
zone "syh.com" IN {
type master;
file "syh.com.zone";
allow-update { 192.168.222.111; };
};
zone "222.168.192.in-addr.arpa" IN {
type master;
file "192.168.222.arpa";
allow-update { 192.168.222.111; };
};
从
vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
vim /etc/named.rfc1912.zones
zone "syh.com" IN {
type slave;
masters { 192.168.222.110; };
file "slaves/syh.com.zone";
};
zone "222.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.222.110; };
file "slaves/192.168.222.arpa";
};
缓存服务器
1
forwarders { 上级DNS服务器地址; };”,上级DNS服务器地址指的是获取数据配置文件的服务器。
vim /etc/named.conf
allow-query { any; };
forwarders { 210.73.64.1; };
yum install dnsmasq -y
vim /etc/dnsmasq.conf
domain=www.syh.com
server=192.168.222.110
cache-size=15000
智能DNS
dns
第1步:修改bind服务程序的主配置文件,把第11行的监听端口与第19行的允许查询主机修改为any。由于配置的DNS分离解析功能与DNS根服务器配置参数有冲突,所以需要把第52~55行的根域信息删除。
第2步:编辑区域配置文件。把区域配置文件中原有的数据清空,然后按照以下格式写入参数。首先使用acl参数分别定义两个变量名称(china与america),当下面需要匹配IP地址时只需写入变量名称即可,这样不仅容易阅读识别,而且也利于修改维护。这里的难点是理解view参数的作用。它的作用是通过判断用户的IP地址是中国的还是美国的,然后去分别加载不同的数据配置文件(linuxprobe.com.china或linuxprobe.com.america)。这样,当把相应的IP地址分别写入到数据配置文件后,即可实现DNS的分离解析功能。这样一来,当中国的用户访问linuxprobe.com域名时,便会按照linuxprobe.com.china数据配置文件内的IP地址找到对应的服务器。
acl "china" {122.71.115.0/24; };
acl "america" { 106.185.25.0/24; };
view "china" {
match-clients { "china"; };
zone "syh.com" {
type master;
file "syh.com.china";
};
};
view "america" {
match-clients { "america"; };
zone "syh.com" {
type master;
file "syh.com.america";
};
};
第3步:建立数据配置文件。分别通过模板文件创建出两份不同名称的区域数据文件,其名称应与上面区域配置文件中的参数相对应。
[root@linuxprobe ~]
[root@linuxprobe named]
[root@linuxprobe named]
[root@linuxprobe named]
题
https://www.linuxprobe.com/basic-learning-13.html#136
|