第16课:上接第15课
6)部署从服务器
在DNS域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率。
6.1)在主服务器192.168.10.10的区域配置文件/etc/named.rfc1912.zones中配置允许从服务器192.168.10.20地址的更新请求,即修改allow-update {允许更新区域信息的主机地址;};参数,然后重启主服务器的DNS服务程序。
[root@linuxprobe ~]# vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
type master;
file "linuxprobe.com.zone";
allow-update { 192.168.10.20; };
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "192.168.10.arpa";
allow-update { 192.168.10.20; };
};
[root@linuxprobe ~]# systemctl restart named
6.2)在从服务器192.168.10.20的区域配置文件/etc/named.rfc1912.zones中填写主服务器的IP地址192.168.10.10与要抓取的区域信息,然后重启服务。
注意:从服务器的服务类型应该是slave(从),而不再是master(主);masters参数后面应该为主服务器的IP地址,file参数后面定义的是同步数据配置文件后要保存的目录slaves,重启named服务后可以在该目录内看到同步的文件。
[root@linuxprobe ~]#vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
type slave;
masters { 192.168.10.10; };
file "slaves/linuxprobe.com.zone";
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.10.10; };
file "slaves/192.168.10.arpa";
};
[root@linuxprobe ~]# systemctl restart named
6.3)检验解析结果,使用nslookup命令查看解析结果。
说明:当从服务器的DNS服务程序重启后,一般就已经自动从主服务器上同步了数据配置文件,而且该文件默认会放置在区域配置文件所定义的slaves目录中。随后修改从服务器的网卡配置参数,把DNS地址参数修改成192.168.10.20,这样即可使用从服务器自身提供的DNS域名解析服务。
[root@linuxprobe ~]# cd /var/named/slaves
[root@linuxprobe slaves]# ls
192.168.10.arpa linuxprobe.com.zone
[root@linuxprobe slaves]# nslookup
> www.linuxprobe.com //正向解析
Server: 192.168.10.20
Address: 192.168.10.20#53
Name: www.linuxprobe.com
Address: 192.168.10.10
> 192.168.10.10 //反向解析
Server: 192.168.10.20
Address: 192.168.10.20#53
10.10.168.192.in-addr.arpa name = www.linuxprobe.com.
10.10.168.192.in-addr.arpa name = ns.linuxprobe.com.
10.10.168.192.in-addr.arpa name = mail.linuxprobe.com.
7)安全的加密传输TSIG
互联网中的绝大多数DNS服务器(超过95%)都是基于BIND域名解析服务搭建的,而bind服务程序为了提供安全的解析服务,已经对TSIG(RFC 2845)加密机制提供了支持。TSIG主要是利用了密码编码的方式来保护区域信息的传输(Zone Transfer),即TSIG加密机制保证了DNS服务器之间传输域名区域信息的安全性。即通过配置主从DNS服务器的TSIG服务秘钥实现从DNS服务器通过TSIG加密方式从主DNS服务器获取192.168.10.arpa和linuxprobe.com.zone文件到/var/named/slaves目录下。
7.1)在主DNS服务器中通过dnssec-keygen命令生成安全的DNS服务密钥。
命令格式:dnssec-keygen [参数]
参数:-a指定加密算法,包括RSAMD5(RSA)、RSASHA1、DSA、NSEC3RSASHA1、NSEC3DSA等(大小写均可),-b密钥长度(HMAC-MD5的密钥长度在1~512位之间),-n密钥的类型(HOST表示与主机相关)。
举例1:使用以下命令生成一个主机名称为master-slave的128位HMAC-MD5算法的密钥文件。在执行该命令后默认会在当前目录中生成公钥和私钥文件,需要把私钥文件*.private中Key参数后面的值(和公钥文件*.key值一样)记录下来,稍后要将其写入主、从DNS服务器/var/named/chroot/etc/目录下的传输配置文件transfer.key中。注:记录下*.private和*.key文件中的值后两个文件已无用,可删除。
[root@linuxprobe ~]# dnssec-keygen -a hmac-md5 -b 512 -n HOST master-slave
Kmaster-slave.+157+16969
[root@linuxprobe ~]# ll
-rw-------. 1 root root 121 Mar 20 21:51 Kmaster-slave.+157+16969.key
-rw-------. 1 root root 229 Mar 20 21:51 Kmaster-slave.+157+16969.private
[root@linuxprobe ~]# cat Kmaster-slave.+157+16969.key
master-slave. IN KEY 512 3 157
sd7gIE9R0zpytmsZ2IgR7aXc5fMesSbe5OyDX0C18KiozdhlbccvGjkg hiBM+MigIqFyefrkhC6wrax0BszpxA==
[root@linuxprobe ~]# cat Kmaster-slave.+157+16969.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: sd7gIE9R0zpytmsZ2IgR7aXc5fMesSbe5OyDX0C18KiozdhlbccvGjkghiBM+MigIqFyefrkhC6wrax0BszpxA==
Bits: AAA=
Created: 20200320135124
Publish: 20200320135124
Activate: 20200320135124
7.2)在主DNS服务器中创建密钥验证文件。配置同7.4。
说明:进入bind服务程序用于保存配置文件的目录/var/named/chroot/etc/,把刚刚生成的密钥名称、加密算法和私钥加密字符串按照下面格式写入到tansfer.key传输配置文件中。为了安全起见,需要将文件的所属组修改成named,并将文件权限设置为640,然后把该文件做一个硬链接到/etc目录中。
[root@linuxprobe ~]# cd /var/named/chroot/etc/
[root@linuxprobe etc]# vim transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "sd7gIE9R0zpytmsZ2IgR7aXc5fMesSbe5OyDX0C18KiozdhlbccvGjkghiBM+MigIqFyefrkhC6wrax0BszpxA==";
};
[root@linuxprobe etc]# chown root:named transfer.key
[root@linuxprobe etc]# chmod 640 transfer.key
[root@linuxprobe etc]# ll
-rw-r-----. 1 root named 143 Mar 20 22:01 transfer.key
[root@linuxprobe etc]# ln transfer.key /etc/
-rw-r-----. 2 root named 143 Mar 20 22:01 transfer.key //创建硬链接后变为2
//查看/etc目录下生成一个硬链接文件transfer.key
[root@linuxprobe etc]# cd /etc/
[root@linuxprobe etc]# ll transfer.key
-rw-r-----. 2 root named 143 Mar 20 22:01 transfer.key
7.3)在主DNS服务器的/etc/named.conf配置文件中开启并加载Bind服务的密钥验证功能。
[root@linuxprobe etc]# vim /etc/named.conf
include "/etc/transfer.key";
options {
listen-on port 53 { 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; };
allow-transfer { key master-slave; };
至此,主DNS服务器的TSIG密钥加密传输功能配置完成。
7.4)在从DNS服务器中创建密钥验证文件。配置同7.2。
清空从DNS服务器同步目录/var/named/slaves中所有的数据配置文件,然后重启bind服务程序,这时就已经不能像刚才那样自动获取到主DNS服务器的数据配置文件了。
说明:进入bind服务程序用于保存配置文件的目录/var/named/chroot/etc/,把刚刚生成的密钥名称、加密算法和私钥加密字符串按照下面格式写入到tansfer.key传输配置文件中。为了安全起见,需要将文件的所属组修改成named,并将文件权限设置为640,然后把该文件做一个硬链接到/etc目录中。
[root@linuxprobe ~]# cd /var/named/chroot/etc/
[root@linuxprobe etc]# vim transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "sd7gIE9R0zpytmsZ2IgR7aXc5fMesSbe5OyDX0C18KiozdhlbccvGjkghiBM+MigIqFyefrkhC6wrax0BszpxA==";
};
[root@linuxprobe etc]# chown root:named transfer.key
[root@linuxprobe etc]# chmod 640 transfer.key
[root@linuxprobe etc]# ll
-rw-r-----. 1 root named 143 Mar 20 22:01 transfer.key
[root@linuxprobe etc]# ln transfer.key /etc/
-rw-r-----. 2 root named 143 Mar 20 22:01 transfer.key //创建硬链接后变为2
//查看/etc目录下生成一个硬链接文件transfer.key
[root@linuxprobe etc]# cd /etc/
[root@linuxprobe etc]# ll transfer.key
-rw-r-----. 2 root named 143 Mar 20 22:01 transfer.key
7.5)在从DNS服务器的/etc/named.conf配置文件中开启并加载Bind服务的密钥验证功能。
[root@linuxprobe etc]# vim /etc/named.conf
include "/etc/transfer.key";
options {
listen-on port 53 { 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; };
在第43行插入如下脚本
server 192.168.10.10 //主DNS服务器的IP地址
{
keys { master-slave; };
};
至此,从DNS服务器的TSIG密钥加密传输功能配置完成。
7.6)从DNS服务器通过TSIG加密秘钥从主DNS服务器同步域名区域数据。
[root@linuxprobe ~]# systemctl restart named
[root@linuxprobe ~]# ls /var/named/slaves/
192.168.10.arpa linuxprobe.com.zone
8)部署DNS缓存服务器(DNS代理)
缓存服务器即把用户经常使用到的域名与IP地址的解析记录保存在主机本地,从而提升下次解析的效率。DNS缓存服务器一般用于企业内网中,缓存服务器是否可以成功解析还与指定的上级DNS服务器的允许策略有关。
8.1)首先需要安装bind服务程序:yum install bind-chroot
8.2)在bind服务程序的主配置文件中添加缓存转发参数。
说明:大约第17行处添加一行参数“forwarders { 上级DNS服务器地址; };”,上级DNS服务器地址指的是获取数据配置文件的服务器。
[root@linuxprobe ~]# vim /etc/named.conf
forwarders { 114.114.114.114; };
8.3)重启named服务,修改客户端DNS地址为DNS缓存服务器地址,使用nslookup命令来验证实验结果。
说明:若指定的上级DNS服务器的允许转发、查询,则可以通过DNS缓存服务器正常访问互联网资源。
9)分离解析技术
分离解析功能即可让位于不同地理范围内的读者通过访问相同的网址,而从不同的服务器获取到相同的数据。
分别为处于北京的DNS服务器(122.71.115.10)和处于美国的DNS服务器(106.185.25.10)分配不同的IP地址,然后让国内读者在访问时自动匹配到北京的DNS服务器(122.71.115.10),而让海外读者自动匹配到美国的DNS服务器(106.185.25.10),如下图所示:
9.1)分别在中国和美国自建DNS服务器,IP地址分别为122.71.115.10和106.185.25.10。修改bind服务程序主配置文件/etc/named.conf,把第11行的监听端口与第17行的允许查询主机修改为any。由于配置的DNS分离解析功能与DNS根服务器配置参数有冲突,所以需要把第51~54行的根域信息删除。
[root@linuxprobe ~]# vim /etc/named.conf
options {
listen-on port 53 { 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; };
中间代码略。。。
#zone "." IN {
#type hint;
#file "named.ca";
#};
9.2)编辑区域配置文件/etc/named.rfc1912.zones。
说明:使用acl参数分别定义两个变量名称(china与american),当下面需要匹配IP地址时只需写入变量名称即可,这样不仅容易阅读识别,而且也利于修改维护。view参数通过判断用户的IP地址是中国的还是美国的,然后去分别加载不同的数据配置文件(linuxprobe.com.china或linuxprobe.com.american)。当把相应的IP地址分别写入到数据配置文件后,即可实现DNS的分离解析功能。当中国的用户访问linuxprobe.com域名时,便会按照linuxprobe.com.china数据配置文件内的IP地址找到对应的服务器。
[root@linuxprobe ~]# vim /etc/named.rfc1912.zones
acl "china" { 122.71.115.0/24; };
acl "american" { 106.185.25.0/24;};
view "china"{
match-clients { "china"; };
zone "linuxprobe.com" {
type master;
file "linuxprobe.com.china";
};
};
view "american" {
match-clients { "american"; };
zone "linuxprobe.com" {
type master;
file "linuxprobe.com.american";
};
};
9.3)建立数据配置文件。
通过模板文件创建出两份不同名称的区域数据文件,其名称应与上面区域配置文件中的参数相对应。
[root@linuxprobe ~]# cd /var/named
[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.china
[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.american
[root@linuxprobe named]# vim linuxprobe.com.china
[root@linuxprobe named]# vim linuxprobe.com.american
9.4)重新启动named服务程序,将客户端DNS分别配置为中国区DNS和美国区DNS,通过nslookup命令验证结果。
a、配置中国区DNS服务器地址,模拟中国用户的域名解析操作:
a、配置美国区DNS服务器地址,模拟美国用户的域名解析操作:
动态主机配置协议(DHCP)是一种基于UDP协议且仅限于在局域网内部使用的网络协议,为局域网内部的设备或网络供应商自动分配IP地址等参数。
DHCP常见术语:
作用域:一个完整的IP地址段,DHCP协议根据作用域来管理网络的分布、分配IP地址及其他配置参数。
超级作用域:用于管理处于同一个物理网络中的多个逻辑子网段。超级作用域中包含了可以统一管理的作用域列表。
排除范围:把作用域中的某些IP地址排除,确保这些IP地址不会分配给DHCP客户端。
地址池:在定义了DHCP的作用域并应用了排除范围后,剩余的用来动态分配给DHCP客户端的IP地址范围。
租约:DHCP客户端能够使用动态分配的IP地址的时间。
预约:保证网络中的特定设备总是获取到相同的IP地址。
5.1、安装dhcpd服务程序
[root@linuxprobe nfsdir]# yum install dhcp
dhcp服务程序配置文件结构:
注:全局配置参数用于定义dhcpd服务程序的整体运行参数;子网网段声明用于配置整个子网段的地址属性。
dhcpd服务程序配置文件中使用的常见参数及作用:
参数 |
作用 |
ddns-update-style 类型 |
定义DNS服务动态更新的类型,类型包括: |
allow/ignore client-updates |
允许/忽略客户端更新DNS记录 |
default-lease-time 21600 |
默认超时时间 |
max-lease-time 43200 |
最大超时时间 |
option domain-name-servers 8.8.8.8 |
定义DNS服务器地址 |
option domain-name "domain.org" |
定义DNS域名 |
range |
定义用于分配的IP地址池 |
option subnet-mask |
定义客户端的子网掩码 |
option routers |
定义客户端的网关地址 |
broadcast-address 广播地址 |
定义客户端的广播地址 |
ntp-server IP地址 |
定义客户端的网络时间服务器(NTP) |
nis-servers IP地址 |
定义客户端的NIS域服务器的地址 |
hardware 硬件类型 MAC地址 |
指定网卡接口的类型与MAC地址 |
server-name 主机名 |
向DHCP客户端通知DHCP服务器的主机名 |
fixed-address IP地址 |
将某个固定的IP地址分配给指定主机 |
time-offset 偏移差 |
指定客户端与格林尼治时间的偏移差 |
5.2、自动管理分配IP地址(自动获取)
说明:地址池应该小于或等于作用域的IP地址范围。在配置dhcpd服务程序时,配置文件中的每行参数后面都需要以分号(;)结尾(标准格式)。
[root@linuxprobe /]# vim /etc/dhcp/dhcpd.conf
ddns-update-style none;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.101 192.168.10.199;
option subnet-mask 255.255.255.0;
option routers 192.168.10.1;
option domain-name "linuxprobe.com";
option domain-name-servers 192.168.10.1;
default-lease-time 21600;
max-lease-time 43200;
}
dhcpd服务程序配置文件中使用的参数及作用:
参数 |
作用 |
ddns-update-style none; |
设置DNS服务不自动进行动态更新 |
ignore client-updates; |
忽略客户端更新DNS记录 |
subnet 192.168.10.0 netmask 255.255.255.0 { |
作用域为192.168.10.0/24网段 |
range 192.168.10.101 192.168.10.199; |
IP地址池为192.168.10.101-199(约99个IP地址) |
option subnet-mask 255.255.255.0; |
定义客户端默认的子网掩码 |
option routers 192.168.10.1; |
定义客户端的网关地址 |
option domain-name "linuxprobe.com"; |
定义默认的搜索域 |
option domain-name-servers 192.168.10.1; |
定义客户端的DNS地址 |
default-lease-time 21600; |
定义默认租约时间(单位:秒) |
max-lease-time 43200; |
定义最大预约时间(单位:秒) |
} |
结束符(注意无分号;) |
\\重启dhcpd服务,并配置dhcpd服务开机自动启动
[root@linuxprobe /]# systemctl restart dhcpd
[root@linuxprobe /]# systemctl enable dhcpd
ln -s '/usr/lib/systemd/system/dhcpd.service' '/etc/systemd/system/multi-user.target.wants/dhcpd.service'
5.3、分配固定IP地址
“预约”确保局域网中特定的设备总是获取到固定的IP地址。把某个IP地址与某台主机进行绑定,就需要用到这台主机的MAC地址。
在dhcpd服务程序的配置文件中,按照如下格式将IP地址与MAC地址进行绑定。
host 主机名称 { |
|||
hardware |
ethernet |
该主机的MAC地址; |
|
fixed-address |
欲指定的IP地址; |
||
} |
说明:Windows系统MAC地址格式类似00-0c-29-27-c6-12,间隔符为减号(-);Linux系统中,MAC地址的间隔符则变成了冒号(:)。
举例1:黄色标记部分
[root@linuxprobe /]# vim /etc/dhcp/dhcpd.conf
ddns-update-style none;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.101 192.168.10.199;
option subnet-mask 255.255.255.0;
option routers 192.168.10.1;
option domain-name "linuxprobe.com";
option domain-name-servers 192.168.10.1;
default-lease-time 21600;
max-lease-time 43200;
host linuxprobe {
hardware ethernet 00:0c:29:27:c6:12;
fixed-address 192.168.10.88;
}
}
//重启dhcpd服务程序使配置生效,如果客户端未获取指定的IP地址,需重启客户端的网络服务systemctl restart network
[root@linuxprobe /]# systemctl restart dhcpd
来源:oschina
链接:https://my.oschina.net/u/3706537/blog/3207434