网络服务搭建篇 其二
上篇:DHCP服务器搭建
环境
服务器镜像:Ubuntu 18.04 LTS Server
主机名 | 描述 | IP | |
---|---|---|---|
Server1 | DHCP服务器和DNS主服务器 | 192.168.200.10 | 有外网权限 |
Server2 | 备DNS服务器 | 192.168.200.11 | 有外网权限 |
Client | 客户端 | DHCP获取 | 无外网权限 |
目标
实现外网的转发解析
解析以下域名:
域名 | 解析值 |
---|---|
www.abc.lan | 192.168.200.10 |
inadd.abc.lan | 192.168.200.15 |
192.168.200.15 | in.abc.lan |
ns1.abc.lan | 192.168.200.10 |
ns2.abc.lan | 192.168.200.11 |
注意事项
配置文件结构
新版bind9(起码在Ubuntu上)将named.conf分拆成了三个文件:
- named.conf.options:程序本身配置
- named.conf.local:用户的域定义文件
- named.conf.default-zones:默认的域定义文件
SOA
开始验证标识(Start of Authority),声明了域名的管理信息
如abc.lan域中d:
@ IN SOA ns1.abc.lan. admin.abc.lan. (2019042601 1H 5M 1D 1H )
按顺序解释如下:
- @:范围为整个域
- ns1.abc.lan. :负责该域DNS解析的Master服务器
- admin.abc.lan. :该域的管理员电子邮件,即为admin@abc.lan
- 2019042601 :序列号,代表域配置文件的版本号,越新的数字越大。习惯上以YYYYMMDDNU来命
- 1H:Slave对该配置的更新频率,1小时
- 5M:更新失败的重试间隔,5分钟
- 1D:如果一直更新失败,Slave将在1天后不尝试更新,并删除该配置。若要恢复需管理员手动处理
- 1H:配置中默认的缓存时间,1小时
dig
Linux中的DNS查询工具
正向查询:dig www.baidu.com
指定DNS服务器:dig www.baidu.com @8.8.8.8
反向查询:dig -x 192.168.200.15
主DNS服务器配置
1. 安装bind9组件
Bind是Linux中常用的DNS服务器程序
sudo apt install bind9
2. 关闭IPv6监听
实验环境在IPv4网络,不考虑IPv6,所以将bind设置为仅IPv4模式
管理员权限编辑/etc/default/bind9
文件
在OPTIONS中添加-4
选项,如"-u bind -4"
3. 配置缓存转发
管理员权限打开/etc/bind/named.conf.options
,修改如下:
//设定可访问的主机清单
acl goodclients {
192.168.200.0/24;
localhost;
localnets;
};
options {
directory "/var/cache/bind";
listen-on { 192.168.200.10;}; //设定IPv4监听地址
listen-on-v6 { none; }; //不设置IPv6监听地址
//关闭dnssec(域名安全扩展,这个配置在我们实验范畴外)
dnssec-enable no;
dnssec-validation no;
auth-nxdomain no; // conform to RFC1035
recursion yes ; //允许递归查询
allow-query { goodclients;}; //设定查询客户端白名单
allow-transfer { none; }; //默认不设置域转发的服务器,在各个域配置中设置
#配置转发器
forwarders {
223.5.5.5;
114.114.114.114;
};
forward only ; //仅进行查询转发
};
修改时可以直接将旧的配置文件做备份
DNSSEC是对DNS解析进行签名的一套扩展,其需要配置一些密钥和其它参数,就先不考虑了。
4. 配置local文件
named.conf.local
文件可用来声明域配置文件的存放信息
使用管理员权限修改/etc/bind/named.conf.local
zone "abc.lan" {
type master;
file "/etc/bind/db.abc.lan";
allow-transfer { 192.168.200.11; }; //允许的从DNS服务器
};
zone "200.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.200";
allow-transfer { 192.168.200.11; };
};
5.定义域配置文件
在named.conf.local
中我们定义了一个正向域和一个反向域。我们根据其配置在/etc/bind/
下分别创建两个名为db.abc.lan
和db.192.168.200
的域配置文件:
db.abc.lan
$TTL 600
@ IN SOA ns1.abc.lan. admin.abc.lan. (
2019042601 ; Serial 序号
1H ; Refresh 更新频率
5M ; Retry 失败重试时间
1D ; Expire 失效时间
1H ) ; Negative Cache TTL 默认缓存时间
; NS服务器
@ IN NS ns1.abc.lan.
@ IN NS ns2.abc.lan.
; NS记录
ns1 IN A 192.168.200.10
ns2 IN A 192.168.200.11
; 主机正解设置
www IN A 192.168.200.10
inadd IN A 192.168.200.15
db.192.168.200
$TTL 600
@ IN SOA ns1.abc.lan. admin.abc.lan. (
2019042601 ; Serial 序号
1H ; Refresh 更新频率
5M ; Retry 失败重试时间
1D ; Expire 失效时间
1H ) ; Negative Cache TTL 默认缓存时间
@ IN NS ns1.abc.lan.
@ IN NS ns2.abc.lan.
15 IN PTR inadd.abc.lan.
6. 检查配置
使用named-checkconf
检查named.conf的配置是否有误
使用named-checkzone
检查域配置文件是否有误
sudo named-checkconf
sudo named-checkzone abc.lan /etc/bind/db.abc.lan
sudo named-checkzone 192.168.200.in-addr.arpa /etc/bind/db.192.168.200
7. 重启bind9服务
sudo service bind9 restart
8. 验证
使用dig命令尝试查询
dig inadd.abc.lan @192.168.200.10
可以看见有响应
备DNS服务器设置
1. 基本服务配置
前三步和主DNS配置的1、2、3步相同,但需要将named.conf.options
文件中的listen-on
改为从服务器的IP。完整配置如下:
//设定可访问的主机清单
acl goodclients {
192.168.200.0/24;
localhost;
localnets;
};
options {
directory "/var/cache/bind";
listen-on { 192.168.200.11;}; //设定IPv4监听地址
listen-on-v6 { none; }; //不设置IPv6监听地址
//关闭dnssec(域名安全扩展,这个配置在我们实验范畴外)
dnssec-enable no;
dnssec-validation no;
auth-nxdomain no; // conform to RFC1035
recursion yes ; //允许递归查询
allow-query { goodclients;}; //设定查询客户端白名单
allow-transfer { none; }; //默认不设置域转发的服务器,在各个域配置中设置
#配置转发器
forwarders {
223.5.5.5;
114.114.114.114;
};
forward only ; //仅进行查询转发
};
2. 配置local文件
named.conf.local
文件中我们一样要定义这两个域,不过可以直接指定类型为slave。这样bind会将域配置文件从主DNS服务器上同步过来。
zone "abc.lan" {
type slave;
file "slaves/db.abc.lan";
masters { 192.168.200.10; }; //允许的从DNS服务器
};
zone "200.168.192.in-addr.arpa" {
type slave;
file "slaves/db.192.168.200";
masters { 192.168.200.10; };
};
根据配置文件,我们可以看除同步过来的文件会放在/var/cache/bind/slaves/
目录下。
检查发现我们没有这个目录,那么我们新建这个目录,并将所有权修改为bind:bind,权限设置为775
sudo mkdir /var/cache/bind/slaves
sudo chown bind:bind /var/cache/bind/slaves
sudo chmod 775 /var/cache/bind/slaves
3. 应用配置
使用named-checkconf
命令检查配置
没问题后重启bind9服务
sudo service bind9 restart
查看服务状态
service bind9 status
验证DNS服务
在client中修改/etc/resolv.conf
文件,将其DNS服务器设置修改为我们配置的服务器
nameserver 192.168.200.10
nameserver 192.168.200.11
使用dig命令查询
用主服务器查询
www.baidu.com
www.abc.lan
inadd.abc.lan
反查192.168.200.15
用备DNS服务器查询
将主DNS服务器的程序关闭
此时继续尝试
可以看见现在的DNS响应是由192.168.200.11提供了