DNS解析

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值