配置DNS和DHCP服务器
DNS
DNS:域名系统(英文:Domain Name System)是一个域名系统,是万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。类似于生活中的114服务,可以通过人名找到电话号码,也可以通过电话号码找到人名(生活中没有那么准确的原因是人名有重名,而域名是全世界唯一的)。
DNS协议运行在UDP协议之上,使用端口号53
域名:
域名是一个网站的逻辑地址,比如www.zuolaoshi.cn,相比IP地址更加方便人类记忆,所以被广泛使用。
鉴于互联网中的域名和IP地址对应关系数据库太过庞大,DNS域名解析服务采用了类似目录树的层次结构来记录域名与IP地址之间的对应关系,从而形成了一个分布式的数据库系统
DNS域名解析服务采用的目录树层次结构
域名后缀一般分为国际域名和国内域名。原则上来讲,域名后缀都有严格的定义,但在实际使用时可以不必严格遵守。
目前最常见的域名后缀有.com(商业组织)、.org(非营利组织)、.gov(政府部门)、.net(网络服务商)、.edu(教研机构)、.pub(公共大众)、.cn(中国国家顶级域名)等。
DNS技术作为互联网基础设施中重要的一环,为了为网民提供不间断、稳定且快速的域名查询服务,保证互联网的正常运转,提供了下面三种类型的服务器。
主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。
从服务器:从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况。
缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。
简单来说,主服务器是用于管理域名和IP地址对应关系的真正服务器,从服务器帮助主服务器“打下手”,分散部署在各个国家、省市或地区,以便让用户就近查询域名,从而减轻主服务器的负载压力。缓存服务器不太常用,一般部署在企业内网的网关位置,用于加速用户的域名查询请求。
当用户向就近的一台DNS服务器发起对某个域名的查询请求之后其查询流程大致如图所示。
事实上,一个 DNS 的查询过程非常复杂,它分成很多个步骤:
第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果(域名对应的IP地址)返回。
第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域) 的主域名服务器的地址。
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
第五步:重复第四步,直到找到正确的纪录。
第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
DNS服务器通过分级查询逐级获取到对应域名的 IP 地址,大致过程如下:
- 从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录;
- 从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录;
- 从"次级域名服务器"查出"主机名"的IP地址。
这里提到了一些概念,例如 NS A 记录,这些是 DNS 的记录类型,常见的记录类型有:
- A 地址记录(Address),返回域名指向的IP地址。
- NS 域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
- MX 邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
- CNAME 规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。
- PTR 逆向查询记录(Pointer Record),只用于从IP地址查询域名
- CAA CAA(Certification Authority Authorization,证书颁发机构授权)是一项防止HTTPS证书错误颁发的安全措施,遵从IETF RFC6844。从2017年9月8日起,要求CA(Certification Authority,证书颁发)机构执行CAA强制性检查。
通常来说,为了服务的安全可靠,至少应该有两条NS 记录,而A记录和MX记录也可以有多条,这样就提供了服务的冗余性,防止出现单点失败。
13台根DNS服务器的具体信息
根域名服务器(root name server)是互联网域名解析系统(DNS)中最高级别的域名服务器,负责返回顶级域名的权威域名服务器的地址。我们在网址中键入的域名,其背后都需要通过 DNS 系统去解析返回 IP,从而让用户访问指定的服务器资源。而 DNS 查询解析记录并不是直接去根服务器去查询,而是逐级递归往上一层一层的去查。
目前世界上共计有 13 台根服务器,由12 个不同的独立组织运营,其中美国控制的有10台,欧洲2台,位于英国和瑞典,亚洲1台位于日本。具体的根服务器信息,可也在 https://root-servers.org/ 查看。
名称 | 管理单位 | 地理位置 | IP地址 |
---|---|---|---|
A | INTERNIC.NET | 美国-弗吉尼亚州 | 198.41.0.4 |
B | 美国信息科学研究所 | 美国-加利弗尼亚州 | 128.9.0.107 |
C | PSINet公司 | 美国-弗吉尼亚州 | 192.33.4.12 |
D | 马里兰大学 | 美国-马里兰州 | 128.8.10.90 |
E | 美国航空航天管理局 | 美国加利弗尼亚州 | 192.203.230.10 |
F | 因特网软件联盟 | 美国加利弗尼亚州 | 192.5.5.241 |
G | 美国国防部网络信息中心 | 美国弗吉尼亚州 | 192.112.36.4 |
H | 美国陆军研究所 | 美国-马里兰州 | 128.63.2.53 |
I | Autonomica公司 | 瑞典-斯德哥尔摩 | 192.36.148.17 |
J | VeriSign公司 | 美国-弗吉尼亚州 | 192.58.128.30 |
K | RIPE NCC | 英国-伦敦 | 193.0.14.129 |
L | IANA | 美国-弗吉尼亚州 | 199.7.83.42 |
M | WIDE Project | 日本-东京 | 202.12.27.33 |
我们可以使用 dig 命令去查看即可,如下所示:
# CentOS7需要安装bind-utils
yum install bind-utils
# dig 命令查看 dns设置
dig
; <<>> DiG 9.10.6 <<>> @114.114.114.114
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26189
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;. IN NS
;; ANSWER SECTION:
. 658 IN NS a.root-servers.net.
. 658 IN NS b.root-servers.net.
. 658 IN NS c.root-servers.net.
. 658 IN NS d.root-servers.net.
. 658 IN NS e.root-servers.net.
. 658 IN NS f.root-servers.net.
. 658 IN NS g.root-servers.net.
. 658 IN NS h.root-servers.net.
. 658 IN NS i.root-servers.net.
. 658 IN NS j.root-servers.net.
. 658 IN NS k.root-servers.net.
. 658 IN NS l.root-servers.net.
. 658 IN NS m.root-servers.net.
;; Query time: 39 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Wed Jun 26 17:30:51 CST 2019
;; MSG SIZE rcvd: 239
配置DNS服务
# 关防火墙关SELinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
需要安装软件包: bind
服务名称: named
## CentOS7安装启动
yum -y install bind*
systemctl restart named
systemctl enable named
## 配置文件位于/etc/bind/目录下,主要包括named.conf.options和named.conf.local两个文件。
# 查看named的主配置文件
vim /etc/named.conf
###############################################
listen-on port 53 { any; }; # 绑定的地址需要修改
allow-query { any; }; # 允许查询的服务地址
##############################################
# 配置如下域名
www.test.com 192.168.8.22
mail.test.com 192.168.8.33
dns.test.com 192.168.8.133
ftp.test.com 192.168.8.122
new.test.com 192.168.8.101
# 确定“域”名 --> test.com
# /etc/named.conf 或 /etc/named.rfc1912.zones
vim /etc/named.rfc1912.zones # 辅助域配置文件
#######################################################
# 定义正向解析域
zone "test.com" IN {
type master;
file "test.com.zone";
# 正向解析是设定好域名,通过域名从正向解析文件中找响应的IP地址。
allow-update { none; }; # 默认不允许slave从服务器同步
}; # 别忘记加;
# 定义反向解析域
zone "8.168.192.in-addr.arpa" IN {
type master;
file "8.168.192.zone"; # 设定好ip的网络段,通过ip找域名
allow-update { none; }; # 默认不允许slave从服务器同步
}; # 别忘记加;
#######################################################
# 到/var/named 下创建并修改zone文件
cd /var/named/
touch test.com.zone 8.168.192.zone
vim test.com.zone
:r ./named.localhost
##################################################################
$TTL 1D
@ IN SOA test.com. root.test.com. (
133 ; serial 版本号
1D ; refresh 更新时间
1H ; retry 重试时间
1W ; expire 终止时间
3H ) ; minimum 默认DNS缓存时间
IN NS dns.test.com.
IN MX 10 mail.test.com.
www IN A 192.168.8.22
mail IN A 192.168.8.33
dns IN A 192.168.8.133
ftp IN A 192.168.8.122
new IN A 192.168.8.101
##################################################################
vim 8.168.192.zone
:r ./named.loopback
##################################################################
$TTL 1D
@ IN SOA test.com. root.test.com. (
133 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.test.com.
22 PTR www.test.com.
33 PTR mail.test.com.
133 PTR dns.test.com.
122 PTR ftp.test.com.
101 PTR new.test.com.
##################################################################
# 重启服务,检查dns是否生效
systemctl restart named
# 修改网卡的dns设置为dns服务器:192.168.8.133
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=192.168.8.133
# 重启网卡
systemctl restart network
nslookup
> www.test.com
Server: 192.168.8.133
Address: 192.168.8.133#53
Name: www.test.com
Address: 192.168.8.22
------------------dns配置成功------------------
DNS从服务器设置
yum -y install bind*
systemctl restart named
systemctl enable named
# 查看named的主配置文件
vim /etc/named.conf
###############################################
listen-on port 53 { any; }; # 绑定的地址需要修改
allow-query { any; }; # 允许查询的服务地址
##############################################
vim /etc/named.rfc1912.zones
##################################################################
zone "test.com" IN {
type slave; #服务类型为从服务器
masterfile-format text; #主服务器同步过来的数据配置文件的格式为文本,不然会乱码
masters { 192.168.8.133; }; #主服务器的IP地址是192.168.8.133
file "slaves/test.com.zone"; #同步过来的数据配置文件放在/var/named/slaves文件夹下,并调用
}; # 别忘记加 ;
# 定义反向解析域
zone "8.168.192.in-addr.arpa" IN {
type slave;
masterfile-format text; #主服务器同步过来的数据配置文件的格式为文本,不然会乱码
masters { 192.168.8.133; }; #主服务器的IP地址是192.168.8.133
file "slaves/8.168.192.zone"; #同步过来的数据配置文件放在/var/named/slaves文件夹下,并调用
};
##################################################################
# 主服务器需要更改的地方
vim /etc/named.rfc1912.zones
# 定义正向解析域
zone "test.com" IN {
type master;
file "test.com.zone";
allow-update { 192.168.8.140; }; # 允许的同步的从服务IP
also-notify { 192.168.8.140; }; # 动态通知从DNS更新
notify yes; # 有更新会告知从服务器
};
# 定义反向解析域
zone "8.168.192.in-addr.arpa" IN {
type master;
file "8.168.192.zone"; # 设定好ip的网络段,通过ip找域名
allow-update { 192.168.8.140; }; # 允许的同步的从服务IP
also-notify { 192.168.8.140; }; # 动态通知从DNS更新
notify yes; # 有更新会告知从服务器
};
# 分别重启主从的DNS服务器
systemctl restart named
# 同步成功时从服务器的/var/named/slaves/目录下会同步生成zone文件。
cd /var/named/slaves/
ls
# 修改网卡的dns设置为dns服务器:192.168.8.140
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=192.168.8.140
# 重启网卡
systemctl restart network
# 从服务器测试,然后停掉主服务器再测试。
nslookup
> www.test.com
Server: 192.168.8.140
Address: 192.168.8.140#53
Name: www.test.com
Address: 192.168.8.22
DHCP
动态主机配置协议 ( DHCP )服务器为网络上的每个设备动态分配IP地址和其他网络配置参数。
DHCP协议采用客户端/服务器模型(C/S模型),服务端可以为客户端提供IP、掩码、网关、主机名、DNS等信息。客户端只需将IP获得方式设置为自动获取即可。
目前可以提供DHCP服务的设备有很多,比如:
- DHCP服务器(windows server、linux)
- 硬件路由器
- 家用宽带路由
DHCP服务搭建
1、安装dhcp服务
[root@dhcp ~]# yum -y install dhcp
2、设置dhcp配置文件(设置的dhcp网段需要和自己网卡在一个网段)
[root@dhcp /]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@dhcp ~]# vim /etc/dhcp/dhcpd.conf
#第47行
#设置dhcp网段和子网掩码,注意必须和本机IP的网段保持一致
subnet 192.168.8.0 netmask 255.255.255.0 {
#设置dhcp地址池范围
range 192.168.8.100 192.168.8.200;
#dns服务器IP地址
option domain-name-servers 114.114.114.114;
#设置网关
option routers 192.168.8.30;
#广播地址
option broadcast-address 192.168.8.255;
#设置默认租约时间:4小时
default-lease-time 14400;
#设置最大租约时间:8小时
max-lease-time 28800;
}
3、启动dhcp服务
[root@dhcp ~]# systemctl start dhcpd
4、查看启动进程
[root@dhcp ~]# netstat -anptu|grep dhcpd
增加保留地址
host prtsvr {
hardware Ethernet 客户机的mac地址;
fixed-address 保留IP地址;
}
注释:放在subnet 大括号里面的对局部有效,放在外面的对全局有效