域名系统(DNS)的概念
DNS 是域名系统(Domain Name System)的缩写,它是一种组织域层次结构的计算机和网络服务命名系统。DNS
的作用是将域名转换为网络可以识别的 IP 地址,并将查询结果保存起来,以便在需要时告诉客户端。
宏观
DNS 查询过程
端口类型 | 默认端口号 | 说明 |
---|---|---|
查询端口 | UDP 53 | 用于处理客户端的 DNS 查询请求 |
缓存更新端口 | TCP 9953 | 用于区域数据缓存更新,实现 DNS 服务器之间的数据同步 |
DNS 查询过程包括正向查询(域名->IP)和反向查询(IP->域名)。 |
DNS 服务器的角色
DNS 服务器负责接收客户端的查询请求,并根据请求类型进行相应的查询和响应。
配置和管理DNS服务器
1. 安装DNS服务器
- bind - DNS服务器
- bind-chroot - 将进程隔离在一个受限目录
DNS服务器软件包通常称为BIND,主要包含以下组件: - named - 真正的DNS服务器守护进程
- rndc - 远程管理DNS的命令行工具
- dig - DNS查找调试工具
- host - DNS查找工具
- nsupdate - 动态DNS更新的工具
在将Linux服务器上安装DNS服务。在Debian/Ubuntu系统上使用:
sudo apt-get install bind bind-chroot -y
在CentOS/RHEL系统上使用:
sudo yum install bind bind-chroot -y
2.理解 DNS 服务器配置文件
-
named.conf 文件
named.conf 文件是 DNS 服务器的全局配置文件,用于设置 DNS 服务器的参数和区域配置。 -
resolv.conf 文件
resolv.conf 文件用于配置 DNS 客户端的 DNS 服务器地址。 -
zone 文件
zone 文件是 DNS 服务器的区域配置文件,用于存储域名的 IP 地址信息。
(1) 使用root用户身份编辑named.conf文件:
sudo vim /etc/named.conf
(2) 定义监听地址和查询访问权限:
在options 中添加或者修改
- listen-on port 53 { any; };:指定 DNS 服务器监听的端口号,这里使用的是标准 DNS 端口号 53。any 表示允许来自任何 IP 地址的查询请求。
- listen-on-v6 port 53 { ::1; };:指定 DNS 服务器监听的 IPv6 端口号,这里使用的是 IPv6 本地的回环地址 ::1。如果你的 DNS 服务器不支持 IPv6,可以忽略这个设置。
- directory “/var/named”;:指定 DNS 服务器的配置文件和数据文件所在的目录,这里设置为 /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”;:指定内存使用情况的输出文件路径和名称。
- recursion yes;:指定 DNS 服务器是否支持递归查询,这里设置为 yes 表示启用递归查询。
- allow-query { any; };:指定允许哪些 IP 地址进行查询请求,这里设置为 any 表示允许任何 IP 地址进行查询。
listen-on port 53 { 192.168.1.101; };
allow-query { localhost; 192.168.1.0/24; };
(3) 引入正向查找区域文件:
#后缀为"example.com"自定义
zone "example.com" IN {
type master;
file "/var/named/example.com.zone";
};
# example.com.zone文件路径
(4) 引入反向查找区域文件:
#自定义
zone "1.168.192.in-addr.arpa" IN {
type master;
file "/var/named/192.168.1.zone"; };
# 192.168.1.zone文件路径
(5) 保存文件并退出编辑。
查看配置文件是否错误
named-checkconf /etc/named.conf
3.创建/编辑正反区域文件
使用模板创建正反区域文件,在var/named中:
├── named.localhost # 正向查找区域文件模板
├── named.loopback #反向查找区域文件模板
创建并复制模板
正向查找区编辑:自己创建example.com.zone,可以自定义,在配置文件中调用
[root@localhost named]# cat example.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
#-------------------------------------正向查找区
news A 192.168.10.50
wed A 192.168.10.60
反向查找区编辑:自己创建192.168.1.zone 可以自定义,在配置文件中调用
[root@localhost named]# cat 192.168.1.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
PTR localhost.
#-----------------------------------反向查找区
50 PTR news.zeng.com.
60 PTR wed.ang.com.
交互式查验域名系统的设置和功能是否正常。
使用命令:==nslookup ==
nslookup 的主要功能和用法包括:
- 查询域名对应的 IP 地址。基本命令是:nslookup domain
- 查询某一 IP 地址的域名。命令是:nslookup ip-address
- 检查域名服务器的工作情况。命令是:nslookup -server dns-server-ip
- 进行反向查询,从 IP 确认域名。命令是:nslookup -x ip-address
- 查看本地 DNS 服务器的缓存。命令是:nslookup -type=cache
- 交互模式,进行多次查询。命令是:nslookup -interactive
- 指定使用的 DNS 服务器进行查询。命令是:nslookup -server=ip domain
用DNS
- 查找计算机当前使用的DNS服务器
在Windows下,可以通过"控制面板"-“网络和Internet设置”-"网络连接"查看当前使用的DNS服务器IP地址。
在Linux下,可以通过编辑/etc/resolv.conf文件查看。 - 配置要使用的DNS服务器IP地址
在Windows下,可以在网络连接的属性中,选择“Internet协议版本4(TCP/IPv4)”,然后将自己的DNS服务器IP填入"首选DNS服务器"和"备用DNS服务器"。
在Linux下,可以直接编辑/etc/resolv.conf文件,在"nameserver"后面添加自己的DNS服务器IP。 - 刷新DNS缓存
Windows下可以在命令提示符下输入ipconfig /flushdns刷新。
Linux下可以使用service nscd restart或rndc flush命令。 - 测试解析
ping一个域名,看是否会解析到正确的IP地址,以确认使用的是自己配置的DNS。 - 配置网关/路由器
如果是通过网关/路由器上网,还需要在网关中配置要使用的自定义DNS服务器。