文章目录
- 安装DNS服务
- 设置配置文件
- 自定义域名解析
- 完整配置
需求是公司内网服务器无法连接外网,需要在本地搭建DNS服务,这样物理机器迁移到内网后,通过域名解析访问服务
DNS服务器 172.25.14.215
ip | 域名 |
---|---|
172.25.14.216 | mysql.server |
172.25.14.217 | redis.server |
172.25.14.218 | kafka.server |
安装DNS服务
yum update -y
yum install bind bind-utils -y
设置配置文件
vim /etc/named.conf
options {listen-on port 53 { any; }; // 监听所有IPv4接口上的53端口listen-on-v6 port 53 { ::1; }; // 监听IPv6本地回环地址上的53端口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; }; // 允许任何主机发送查询请求recursion no; // 禁止递归查询(如果作为权威DNS服务器)dnssec-enable yes;dnssec-validation yes;/* Path to ISC DLV key */bindkeys-file "/etc/named.iscdlv.key";managed-keys-directory "/var/named/dynamic";
};logging {channel default_debug {file "data/named.run";severity dynamic;};
};zone "." IN { // 根区配置type hint;file "named.ca";
};// 包含额外的默认配置
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
修改允许的连接为所有
# 启动服务
systemctl start named# 设置开机自启
systemctl enable named# 开放DNS防火墙,允许DNS流量通过
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
切换DNS前服务无法正常访问
由于默认设置了recursion yes
为yes,表示允许DNS递归查询,通过172.25.14.215的DNS再次进行查询
所以切换DNS后服务器正常访问(这个看业务需求是否关闭DNS递归查询)
自定义域名解析
vim /etc/named.conf
添加server
域名的解析
zone "server" IN {type master;file "/var/named/server.zone";allow-update { none; };
};
告诉BIND你有一个名为server
的主区域,其区域数据文件位于/var/named/server.zone
$TTL 86400
@ IN SOA ns1.server. admin.server. (2025031301 ; 序列号3600 ; 刷新时间1800 ; 重试时间1209600 ; 过期时间86400 ) ; 最小TTL; 定义名称服务器
@ IN NS ns1.server.; 将ns1.server.mysql指向具体的IP地址
ns1 IN A 192.168.1.10; 解析server.mysql到指定的IP地址
@ IN A 192.168.1.11; 定义其他子域或服务的A记录
www IN A 192.168.1.12
ftp IN A 192.168.1.13; 定义邮件交换记录(MX)
@ IN MX 10 mail.server.; 定义mail.server.mysql的A记录
mail IN A 192.168.1.14
参数解释
$TTL 86400
:设置默认的TTL(生存时间),表示该区域中所有资源记录在缓存中的有效期,默认为86400秒(即1天)。可以被单个记录中的TTL覆盖。
SOA记录
:
@ IN SOA ns1.server.mysql. admin.server.mysql. ( ... )
@
表示当前域(本例中是server.mysql)IN
表示Internet类记录SOA
是Start of Authority的缩写,标记了权威开始的记录ns1.server.mysql
. 是主名称服务器的名字admin.server.mysql
. 是负责该区域的管理员邮箱地址(注意,在这里使用.
代替@
)。- 接下来的括号内的数字分别是:
- 序列号:每次更新区域文件时应该增加这个值,以通知从服务器同步新的数据。
- 刷新时间:从服务器等待多久后再次尝试与主服务器同步。
- 重试时间:如果同步失败,从服务器等待多久后再进行重试。
- 过期时间:如果无法联系上主服务器,从服务器继续使用过期数据的时间长度。
- 最小TTL:设定该区域内所有记录的最小TTL值。
NS记录
:
@ IN NS ns1.server.mysql
. 指定server.mysql
的权威名称服务器是ns1.server.mysql
.。
A记录
:
ns1 IN A 192.168.1.10
将主机名ns1映射到IP地址192.168.1.10
。- 同样地,其他A记录将不同的主机名映射到相应的IP地址。
MX记录
:
@ IN MX 10 mail.server.mysql
. 定义了邮件交换服务器,优先级为10,指向mail.server.mysql.
。
完整配置
vim /etc/named.conf
vim /var/named/server.zone
$TTL 86400
@ IN SOA ns1.server. admin.server. (2025031301 ; 序列号3600 ; 刷新时间1800 ; 重试时间1209600 ; 过期时间86400 ) ; 最小TTL; 定义名称服务器
@ IN NS ns1.server.; 将ns1.server指向具体的IP地址
ns1 IN A 172.25.14.215; 解析server到指定的IP地址
@ IN A 172.25.14.215; 定义其他子域或服务的A记录
www IN A 172.25.14.215
mysql IN A 172.25.14.216
redis IN A 172.25.14.217
kafka IN A 172.25.14.218