文章目录
DNS域名解析
1 概述
DNS:域名系统,域名和ip地址互相映射的一个分布式的数据库。ip地址是所有设备和网站在互联网上的唯一地址(通信一定是ip和ip之间通信)。
DNS解析:根据域名在互联网当中找到对应的ip地址进行访问(方便用户访问互联网)。
1.1 DNS域名的详解
例:www.baidu.com.cn.(从右往左解读)
-
. 根域:9台在美国,3台欧洲,1台日本(ipv6根域服务器在中国和美国)
-
cn. :一级域,国家或者地区,例:jp. us. uk. kr. rs.
-
com.cn.:二级域 表示的组织机构
- com:商业组织
- edu:教育机构
- org:非盈利机构
- net:运营商
- gov:政府
-
三级域(子域):baidu.com.cn. 企业或者组织在互联网上的唯一标识(www:主机名,主机站点)
- www:web
- mail:邮箱
1.2 DNS解析库
-
/etc/hosts:本地做解析(快但是配置麻烦)。
-
运营商:电信、移动、联通
- 218.2.135.1:江苏电信的dns解析地址
- 8.8.8.8:谷歌通用的dns解析地址
- 114.114.114.114:移动的dns解析地址
优先级:本地的优先级高,但是文件只能对当前主机生效。
1.3 域名解析类型
- A记录:将域名解析为IPv4地址。
- AAAA记录:将域名解析为IPv6地址。
- CNAME记录:将域名解析为另一个域名,可用于创建别名。
- MX记录:指定接收某域名邮件的邮件服务器地址。
- NS记录:指定管理域名解析的权威域名服务器。
- PTR记录:用于反向解析,将IP地址解析为域名。
1.4 查询方式
- 递归查询:发送解析请求后,等待结果返回即可,不需要逐级查询;
- 迭代查询:此查询的源不变,但查询的目标不断变化,因为查询结果一般需要发起多次查询。
1.5 curl命令
curl 域名/IP地址 # 在Linux系统上直接测试访问web页面
-I 查询webserver的版本
-K 给后台页面传参数
2 bind 服务端程序
bind 是DNS服务器软件(内网解析dns,外网不行)。
bind 服务器可以提供域名解析服务,能够接收客户端的 DNS 查询请求,并返回相应的 IP 地址。
bind 相关配置文件(在 /etc/bind 下):
-
named.conf: bind的主配置文件,引入其他的配置文件和区域定义
-
named.conf.options: bind的主要配置和选项参数都记录在这个文件
-
named.conf.local:默认本地的区域文件配置(对应的解析服务的配置),定制域名和ip地址的映射关系
-
named.conf.default-zones:本地区域文件的详细配置,自定义配置都在这里完成
apt -y install bind9
cd /etc/bind
3 在实现环境中实现内网的dns解析
3.1 正向解析:通过域名可与获取ip地址
正向解析(forward resolution)是将域名(例如:example.com)解析为对应的 IP 地址的过程。
3.1.1 修改主配置文件 named.conf.options
vim named.conf.options # 修改主配置文件
options {
directory "/var/cache/bind"; # 数据缓存的目录
listen-on port 53 { 192.168.159.123; }; # 开放本机的监听端口是53, ip地址192.168.159.123
allow-query { 192.168.159.0/24; }; # 哪些ip可以访问dns解析的服务
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// forwarders {
// 0.0.0.0;
// };
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
};
3.1.2 修改区域配置文件 named.conf.default-zones
vim named.conf.default-zones # 在文件里有模版,可复制粘贴后修改
zone "kc01.com" IN { # 正向解析"kc01.com"区域
type master; # 类型为主区域
file "/etc/bind/kc01.local"; # 指定区域数据文件为kc01.local
};
3.1.3 配置正向区域数据文件 kc01.local
cd /etc/bind/
cp db.local kc01.local # 需要保留源文件的权限和属主的属性复制(-p)
vim /etc/bind/kc01.local
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA kc01.com. admin.kc01.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS kc01.com.
@ IN A 192.168.159.100
www IN A 192.168.159.100
相关字段解释:
-
$TTL 604800
$TTL (Time To Live):这是DNS记录在缓存中存活的时间(以秒为单位)。
在这个例子中,604800秒(即 7 天)是默认的生存时间。如果记录没有单独设置TTL,则使用此值。 -
@:代表根域名 kc01.com。
-
IN SOA:指定这是一条“Start of Authority”记录,标志着区域的起始。
-
kc01.com.:主名称服务器的域名。
-
admin.kc01.com.:区域管理员的电子邮件地址(注意:@ 替换为 . )。
-
Serial:序列号,用于标识区域文件的版本,通常在每次更改区域文件时增加(在本例中为2)。
-
Refresh:其他 DNS 服务器应每604800秒(即7天)查询一次主服务器以获取更新。
-
Retry:如果主服务器未响应,其他服务器在86400秒(即1天)后重试。
-
Expire:如果主服务器长时间未响应(在2419200秒,即28天后),则停止提供该区域的记录。
-
Negative Cache TTL:当查询失败时,DNS服务器将缓存失败的响应604800秒(即7天)。
-
@ IN NS kc01.com.
这条记录指示 kc01.com 域名的名称服务器(NS记录) -
@ IN A 192.168.159.100
这条记录将根域 kc01.com 映射到 IP 地址 192.168.159.100,用户访问 kc01.com 时,会将请求发送到该 IP 地址 -
www IN A 192.168.159.100
kc01.com 也映射到同一个 IP 地址 192.168.159.100
3.1.4 修改dns服务器地址 /etc/resolv.conf
vim /etc/resolv.conf # 修改完后立即生效
nameserver 192.168.159.123 # 将主机IP设置为dns服务器地址
3.1.5 测试
systemctl stop firewalld
setenforce 0
systemctl start named
nslookup www.kc01.com

3.2 反向解析:通过ip获取对应的域名
反向解析技术用于将IP地址解析为主机名(域名)。
3.2.1 修改区域配置文件 named.conf.default-zones
vim /etc/bind/named.conf.default-zones
zone "159.168.192.in-addr.arpa" IN { # 反向IP
type master;
file "/etc/bind/kc01.com.zone.local"; # 指定区域数据文件
};
3.2.2 配置反向区域数据文件 kc01.com.zone.local
cp -a kc01.local kc01.com.zone.local
vim kc01.com.zone.local
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA kc01.com. admin.kc01.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS kc01.com.
@ IN A 192.168.159.123
100 IN PTR www.kc01.com.
3.2.3 测试
systemctl restart named
nslookup 192.168.159.100

3.3 主从解析:两台服务器互为主备做dns解析
主从复制是一种数据库复制技术,可以实现数据备份、读写分离和故障恢复等功能。
在主从复制中,一个数据库服务器充当主服务器(Master),而其他服务器作为从服务器(Slaves)
3.3.1 主服务器操作
vim /etc/resolv.conf # 把从服务器DNS地址也配到主上面
# Generated by NetworkManager
nameserver 192.168.159.123
nameserver 192.168.159.124
vim named.conf.default-zones
zone "kc01.com" {
type master;
file "/etc/bind/kc01.local";
allow-transfer { 192.168.159.124; };
};
zone "159.168.192.in-addr.arpa" {
type master;
file "/etc/bind/kc01.com.zone.local";
allow-transfer { 192.168.159.124; };
};
3.3.2 从服务器操作
apt -y install bind9 # 从服务器也许安装bind程序
vim named.conf.options
options {
directory "/var/cache/bind";
listen-on port 53 { any; };
allow-query { any; };
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// forwarders {
// 0.0.0.0;
// };
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
};
vim named.conf.default-zones
zone "kc.com" IN {
type slave;
file "kc01.local";
masters { 192.168.159.123; };
};
zone "159.168.192.in-addr.arpa" IN {
type slave;
file "kc01.com.zone.local";
masters { 192.168.159.123; };
};
named-checkconf -z "$NAMEDCONF" # 检查文件的问题
systemctl restart named # 先重启主服务器的dns服务,再启动从服务器
cd /var/cache/bind
ls
managed-keys.bind managed-keys.bind.jnl kc.local kc01.com.zone.local # 区域数据文件已经备份完成
vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.159.123
nameserver 192.168.159.124
3.3.3 测试
systemctl stop named # 关闭主服务器
nslookup www.kc01.com
nslookup 192.168.159.100




9443

被折叠的 条评论
为什么被折叠?



