dns
一、概念
1.DN和DNS
域名,Domain Name ,是一串点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用在数据传输时标识计算机的电子方位,具有独一无二、不可重复的特性。
IP地址,网络上标识站点的数字地址,为了方便人们记忆,采用域名来代表IP地址。域名解析,把域名指向网络空间的IP地址,让人们通过注册过的域名可以方便地访问网站。DNS,Domain Name System,
域名系统,Domain Name System,工作在广域网,域名解析工作由DNS服务器完成,它记录了域名和IP地址之间一一对应的映射关系。
DNS的解析方式:
(1)正向解析:域名 ——> IP地址
(2)反向解析:IP地址 ——>域名 开启白名单功能,域内邮件服务器可以过滤域外的IP地址~较少用到,一般都是正向解析
2.DN的组成分类
基本语法:local.group.site
完整语法:local.group.site.
. 根域 可以省略不写,浏览器会默认补齐。
分类:国家地区域名cn/hk/sg 通用顶级域名com/org/edu 新通用顶级域名red/top
site 顶级域 由ICANN组织来指定管理
group 注册域(二级域) 可由个人或组织申请注册
local 子域(三级域) 服务器网站名的代表
s1.local.group.site.中 s1是主机名,一般用来代表具体某台主机。
镜像根域的数据只能来源于根域服务器,自己没有办法更新数据。
根域分为主根和辅根,辅根域的数据也只能来源于主根域服务器。
3.DNS解析过程
1.客户端访问www.atguigu.com,浏览器会自动补齐:80,即web服务器的端口
2.客户端首先查询自己的hosts文件,查看该文件内是否有www.atguigu.com的解析记录,若有,则直接返回给浏览器;若无,则下一步查询。
3.客户端继续查看自己的DNS解析缓存,若有,则直接返回给浏览器;若无,则下一步查询。
4.客户端最后查看网卡的DNS服务器地址,通过UDP协议快速访问本地DNS服务器,查询域名的解析结果。那么DNS服务器该怎么查询呢?
5.本地DNS服务器首先查询自己的解析库,查看该库内是否有www.atguigu.com的解析记录,若有,则直接返回给浏览器;若无,则下一步查询。
6.本地DNS服务器继续查看自己的DNS解析缓存,若有,则直接返回给浏览器;若无,递归查询失败,则下一步查询。(注意解析库比缓存的权威性更强,所以优先级更高)
7.本地DNS服务器最后向根域服务器发起迭代请求,根域root转发给顶级域com,顶级域com转发给二级域atguigu,二级域atguigu一定保存着三级域名的解析信息/映射关系,然后返回给浏览器。(虽然有三级域名,但是没有三级域服务器,这里统称所有的服务器为DNS服务器)
8.本地DNS服务器将这条全新的解析记录保存到解析库和DNS解析缓存中。(递归查询:客户端和DNS服务器;迭代查询:DNS服务器和域服务器)
4.分布式DNS服务器
拓展:大型的分布式DNS服务器需要权威机构授权才能受理。这里了解其模型和概念就好了。
什么叫做分布式:同一个任务,由不同步骤来共同完成。一个业务分拆多个子业务,部署在不同的服务器上。(生产线中某条流水线有很多步骤)
什么叫做负载均衡:将负载任务进行平衡、分摊到多个操作单元上进行运行。把用户的请求,分配到多个功能相同的服务器上。(生产线中有多条流水线)
根域中保存的是所有顶级域的IP地址。
顶级域保存的是所有二级域的IP地址。
二级域保存其下DNS服务器的IP地址。
迭代请求DNS解析是分布式任务,由本地主机、DNS服务器、域服务器等共同完成域名解析。DNS负载均衡服务器连接多台DNS服务器,这些DNS服务器之间是主从关系。
5.DNS服务详解
5.1 DNS软件信息
软件名
bind
服务名
named
端口号
UDP 53 数据通信(域名解析)
TCP 53 数据同步(主从同步)
配置文件
主配置文件 /etc/named.conf (服务器运行参数,主配置会调用区域配置)
区域配置文件 /etc/named.rfc1912.zones (服务器解析的区域位置,正反向区域定义信息)
数据配置文件 /var/named/xx.xx (主机名和IP地址的对应解析关系,还有主从同步信息)
[root@localhost network-scripts]# yum -y install bind
[root@localhost network-scripts]# ls -l /etc/named.conf -rw-r----- 1 root named 1806 Apr 7 22:41 /etc/named.conf [root@localhost network-scripts]# ls -l /etc/named.rfc1912.zones -rw-r----- 1 root named 931 Jun 21 2007 /etc/named.rfc1912.zones [root@localhost network-scripts]# cd /var/named/ [root@localhost named]# ls data dynamic named.ca named.empty named.localhost named.loopback slaves name.ca文件:保存着13台根域服务器的IP地址和对应的域名 slaves目录:做主从同步时,从服务器用来保存它的配置文件
5.2主配置文件
[root@localhost named]# vim /etc/named.conf options { listen-on port 53 { 127.0.0.1; }; #设置服务器的监听网卡,一般填写any或者外网网卡的IP地址(默认监听本地,什么也干不了) listen-on-v6 port 53 { ::1; }; #大括号内的前后都有空格,最后还有分号 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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { localhost; }; #设置可以访问服务器的客户端IP,一般填写any或客户端地址(默认为本地,不允许别人访问他)
include "/etc/named.rfc1912.zones"; #include是用来进行调用,这是区域配置文件 include "/etc/named.root.key";
5.3区域配置文件
[root@localhost named]# vim /etc/named.rfc1912.zones zone "localhost.localdomain" IN { #正向解析,填写域guigu.com而不是域名www.atguigu.com type master; #DNS服务器类型(master/slave) file "named.localhost"; #正向数据配置文件的名称(默认保存在/var/name/下) allow-update { none; }; #是否允许从服务器的数据更新(一般填写从服务器的IP地址) }; zone "1.0.0.127.in-addr.arpa" IN { #反向解析,填写IP地址/网段的反写、后缀不动 type master; file "named.loopback"; allow-update { none; }; };
5.4数据配置文件
[root@localhost named]# vim /var/named/named.localhost $TTL 1D #域名有效解析的生存周期(默认缓存1天) @ IN SOA @ rname.invalid. ( #第一个@代表域名本身(一般修改为DNS的域名) SOA是起始授权记录(起始授权机构对资源的记录,默认不用改) 第二个@填写要解析的域(默认后面要带上根域.) 0 ; serial #主从更新依据(配置文件修改版本,如20200501) 1D ; refresh #更新频率(从服务器向主服务器查询周期,默认1天更新1次) 1H ; retry #更新失败的重试时间周期(默认1小时重试1次) 1W ; expire #无法更新时的失效周期(主服务器同步到从服务器,其数据有效时间,默认1周后失效) 3H ) ; minimum #缓存服务器无法更新的失效时间(找不到主服务器,其缓存数据,默认3小时后失效) NS @ #NS必须要有,要把@声明DNS服务器本机的域名(如dns.atguigu.com.默认后面要带上根域.) A 127.0.0.1 #IPv4 域名IP解析记录 AAAA ::1
[root@localhost named]# vim /var/named/named.loopback $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.
A 指定域名的IPv4地址
AAAA 指定域名的IPv6地址
CNAME 域名别名,对外展示B域名,对内把B域名——>A域名——>DNS服务器IP地址
TXT 一般做反垃圾邮件的
MX 邮件交换记录,做邮件服务器必有
NS 必须要有的,域名服务器记录
PTR 反向解析记录,IP地址——>域名
二、DNS基本功能实验
1.基本功能实验
Client 10.0.0.5
DNS 10.0.0.15
Httpd 10.0.0.99
关闭Selinux和iptables和firewalld
2.Web 10.0.0.99
[root@localhost network-scripts]# yum -y install httpd #安装Web服务器 [root@localhost network-scripts]# cd /var/www/html/ [root@localhost html]# vim index.html #创建index.html文件,写点东西做标记。 DNS test! [root@localhost html]# systemctl start httpd #开启Web服务 [root@localhost html]# systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2020-05-01 16:50:14 CST; 5s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 31364 (httpd) Status: "Processing requests..." Tasks: 6
3.DNS 10.0.0.15
[root@localhost network-scripts]# yum -y install bind #安装DNS服务器 [root@localhost network-scripts]# vim /etc/named.conf #修改主配置文件 options { listen-on port 53 { any; }; #监听本机所有的网卡 listen-on-v6 port 53 { ::1; }; 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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; #允许所有的客户端访问 [root@localhost network-scripts]# vim /etc/named.rfc1912.zones #修改区域配置文件 zone "atguigu.com" IN { #正向解析模板,这里是域,而不是域名 type master; file "atguigu.localhost"; #正向数据配置文件的文件名,用于调用 allow-update { none; }; }; #zone "localhost" IN { # type master; # file "named.localhost"; # allow-update { none; }; #}; #zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { # type master; # file "named.loopback"; # allow-update { none; }; #}; zone "0.0.10.in-addr.arpa" IN { #反向解析模板,这里是网段10.0.0.0/24的反写 type master; file "atguigu.loopback"; #反向数据配置文件的文件名,用于调用 allow-update { none; }; }; #zone "0.in-addr.arpa" IN { # type master; # file "named.empty"; # allow-update { none; }; #}; [root@localhost named]# cp -a named.localhost atguigu.localhost #修改文件名为主配置文件里已经设置好的文件名,使得主配置文件可以调用该数据配置文件 [root@localhost named]# cp -a named.loopback atguigu.loopback [root@localhost named]# vim atguigu.localhost #修改正向数据配置文件 $TTL 1D @ IN SOA atguigu.com. rname.invalid. ( #这里是要解析的完整域,而不是域名 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.atguigu.com. #这里是本机的完整域名,而不是域了 dns A 10.0.0.15 #要解析的域名的三级域,将dns解析成本机完整IP地址(因为在主配置文件里,已经把二级域、顶级域写好了) www A 10.0.0.99 #要解析的域名的三级域,把www解析成对应完整IP地址 [root@localhost named]# vim atguigu.loopback #修改反向配置文件 $TTL 1D @ IN SOA atguigu.com. rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.atguigu.com. 15 PTR dns.atguigu.com. #要解析的域名的地址15,把网段的地址解析成对应完整域名(因为在主配置文件里,已经把网段反写0.0.10写好了) 99 PTR www.atguigu.com. [root@localhost named]# systemctl start named #开启DNS服务 [root@localhost named]# systemctl status named ● named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2020-05-01 17:09:42 CST; 5s ago Process: 45795 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS) Process: 45793 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS) Main PID: 45797 (named) Tasks: 5 CGroup: /system.slice/named.service └─45797 /usr/sbin/named -u named -c /etc/named.conf
4.Clinet 10.0.0.5
[root@localhost named]# curl www.atguigu.com #curl和elinks都可以连接网站 DNS test! [root@localhost named]# nslookup wwww.atguigu.com #测试正向域名解析 Server: 10.0.0.15 Address: 10.0.0.15#53 ** server can't find wwww.atguigu.com: NXDOMAIN [root@localhost named]# nslookup 10.0.0.99 #测试反向域名解析
99.0.0.10.in-addr.arpa name = www.atguigu.com.
三、DNS主从服务实验
1.初始化配置
目的:从服务器减轻/分担主服务器的压力(一些机器连从服务器,一些机器连主服务器,而不是都连主服务器),并进行数据库备份
Web Server 10.0.0.99
DNS master 10.0.0.15
DNS slave 10.0.0.25
Client 10.0.0.5
2.Web Server 10.0.0.99
[root@localhost network-scripts]# yum -y install httpd [root@localhost html]# vim /var/www/html/index.html master-slave.com!
[root@localhost html]# systemctl restart httpd [root@localhost html]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
3.DNS master 10.0.0.15
[root@localhost network-scripts]# yum -y install bind #安装DNS服务器 [root@localhost network-scripts]# vim /etc/named.conf #修改主配置文件 options { listen-on port 53 { 10.0.0.15; }; #监听本机某个网卡(实际生产时机器至少有2张网卡,1个对内,1个对外) listen-on-v6 port 53 { ::1; }; #IPv6不使用,可以不改。 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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; #允许所有的客户端访问 [root@localhost network-scripts]# vim /etc/named.rfc1912.zones #修改区域配置文件 zone "atguigu.com" IN { #正向解析模板,这里是域,而不是域名 type master; file "atguigu.localhost"; #正向配置文件的文件名,用于调用 allow-update { 10.0.0.25; }; #允许从服务器10.0.0.25进行同步更新 }; #zone "localhost" IN { # type master; # file "named.localhost"; # allow-update { none; }; #}; #zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { # type master; # file "named.loopback"; # allow-update { none; }; #}; #zone "0.0.10.in-addr.arpa" IN { #反向解析模板,这里是网段10.0.0.0/24的反写 #type master; #file "atguigu.loopback"; #反向配置文件的文件名,用于调用 #allow-update { none; }; #}; #zone "0.in-addr.arpa" IN { # type master; # file "named.empty"; # allow-update { none; }; #}; [root@localhost named]# cp -a named.localhost atguigu.localhost #修改文件名为主配置文件里已经设置好的文件名,使得主配置文件可以调用该数据配置文件 [root@localhost named]# vim atguigu.localhost #修改正向数据配置文件 $TTL 1D @ IN SOA atguigu.com. rname.invalid. ( #这里是要解析的完整域,而不是域名 20180501 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.atguigu.com. #这里是本机的完整域名,而不是域了 dns A 10.0.0.15 #要解析的域名的三级域,将dns解析成本机完整IP地址(因为在主配置文件里,已经把二级域、顶级域写好了) www A 10.0.0.99 #要解析的域名的三级域,把www解析成对应完整IP地址
[root@localhost named]# systemctl start named #开启DNS服务
4.DNS slave 10.0.0.25
[root@localhost network-scripts]# yum -y install bind #安装DNS服务器 [root@localhost network-scripts]# vim /etc/named.conf #修改主配置文件 options { listen-on port 53 { 10.0.0.25; }; #监听本机某个网卡(实际生产时机器至少有2张网卡,1个对内,1个对外) listen-on-v6 port 53 { ::1; }; #IPv6不使用,可以不改。 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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; #允许所有的客户端访问
[root@localhost network-scripts]# vim /etc/named.rfc1912.zones #修改区域配置文件 zone "atguigu.com" IN { #正向解析模板,这里是域,而不是域名 type slave;
masters { 10.0.0.15; }; #补上1行,声明master的服务器地址 file "slaves/atguigu.localhost"; #正向配置文件的文件名,用于调用。但是注意,从服务器默认将数据保存在slaves目录1份。 #allow-update { none; }; #slave服务器将此行删除,不需要有!! }; #zone "localhost" IN { # type master; # file "named.localhost"; # allow-update { none; }; #}; #zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { # type master; # file "named.loopback"; # allow-update { none; }; #}; #zone "0.0.10.in-addr.arpa" IN { #反向解析模板,这里是网段10.0.0.0/24的反写 #type master; #file "atguigu.loopback"; #反向配置文件的文件名,用于调用 #allow-update { none; }; #}; #zone "0.in-addr.arpa" IN { # type master; # file "named.empty"; # allow-update { none; }; #};
[root@localhost admin]# cd /var/named/ #slave服务器会自动生成/var/named/slaves目录,数据配置文件不再直接保存到/var/named/下了 [root@localhost named]# ls data dynamic named.ca named.empty named.localhost named.loopback slaves [root@localhost admin]# cd /var/named/slaves/ [root@localhost slaves]# ll total 0
[root@localhost named]# systemctl start named #开启DNS服务
[root@localhost slaves]# ll #原本文件内为空,此时生成数据配置文件。 total 4 -rw-r--r-- 1 named named 245 May 1 19:31 atguigu.localhost
5.Client 10.0.0.5
[root@localhost named]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 YPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=3294ba0a-1db5-4076-8ede-8da3b8cfac9c DEVICE=ens33 ONBOOT=yes IPADDR=10.0.0.5 NETMASK=255.255.255.0DNS1=10.0.0.25 #只填写DNS slave的IP地址,不填写DNS master的!!!!!!!!!!! [root@localhost named]# ifdown ens33; ifup ens33 Device 'ens33' successfully disconnected. Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/18)
[root@localhost named]# nslookup www.atguigu.com Server: 10.0.0.15 Address: 10.0.0.15#53 Name: www.atguigu.com Address: 10.0.0.99 [root@localhost named]# curl www.atguigu.com master-slave.com!
四、DNS缓存服务器
1.实验准备
上述拓扑结构和其他配置不变,先把DNS主服务关闭,然后把DNS从服务关闭并改为DNS缓存服务。
目的:加快解析速度,提高工作效率
软件:dnsmasq
配置文件:/etc/dhsmasq.conf
domain=需要解析的域名(如atguigu.com)
server=主DNS服务器IP地址
cache-size=150000声明缓存条数
2.DNS Server 10.0.0.15
[root@localhost user1]# systemctl stop named [root@localhost user1]# systemctl status named ● named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled) Active: inactive (dead)
3.DNS Cache 10.0.0.25
[root@localhost admin]# systemctl stop named #因为接着刚才的实验,所以先关闭DNS slave [root@localhost admin]# systemctl status named ● named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled) Active: inactive (dead) [root@localhost admin]# yum -y install dnsmsaq #安装dnsmasq服务 [root@localhost admin]# vim /etc/dnsmasq.conf #配置3个参数 domain=atguigu.com #域名(www.atguigu.com中,不严谨地情况下,www是主机名,atguigu.com是域名) server=10.0.0.15 #主DNS服务器地址 cache-size=1500 #缓存条数 [root@localhost admin]# systemctl start dnsmasq [root@localhost admin]# systemctl status dnsmasq ● dnsmasq.service - DNS caching server. Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2020-05-02 15:38:58 CST; 7s ago Main PID: 3837 (dnsmasq) Tasks: 1 CGroup: /system.slice/dnsmasq.service └─3837 /usr/sbin/dnsmasq -k
4.Clinet 10.0.0.5
[root@localhost named]# nslookup www.atguigu.com #使用DNS从服务器的结果 Server: 10.0.0.25 Address: 10.0.0.25#53 Name: www.atguigu.com Address: 10.0.0.99
[root@localhost named]# nslookup www.atguigu.com #使用DNS缓存服务器的结果 Server: 10.0.0.25 Address: 10.0.0.25#53 Non-authoritative answer: 缓存服务器的结果不够严谨,所以显示未认证。 Name: www.atguigu.com Address: 10.0.0.99
五、DNS分离解析
1.普通解析vs分离解析
2.实验环境
目标:将相同域名解析为不同的IP地址,把来自不同运营商的用户解析到对应服务器,大大提升访问速度。
按照这个改虚拟网络编辑器和4台虚拟机的网卡
3.内网测试机: 10.0.0.10
IPADDR=10.0.0.10 NETMASK=255.255.255.0 GATEWAY=10.0.0.30 DNS1=10.0.0.30
4.外网测试机: 100.0.0.40
IPADDR=100.0.0.40 NETMASK=255.255.255.0 GATEWAY=100.0.0.30 DNS1=100.0.0.30
5.Web服务器: 10.0.0.20 100.0.0.20
[root@localhost network-scripts]# cp -a ifcfg-ens33 ifcfg-ens38 内网:暂时不用设置网关 IPADDR=10.0.0.20 NETMASK=255.255.255.0 外网:删除UUID、MAC;改名DEVICE、NAME IPADDR=100.0.0.20 NETMASK=255.255.255.0
重启网卡
[root@localhost network-scripts]# rpm -qa httpd #已经安装了httpd服务 httpd-2.4.6-93.el7.centos.x86_64 [root@localhost network-scripts]# vim /var/www/html/index.html hello i am web server!
[root@localhost network-scripts]# systemctl start httpd #启动并开启自启 [root@localhost network-scripts]# systemctl enable httpd [root@localhost network-scripts]# systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2020-05-01 21:53:09 CST; 18h ago Docs: man:httpd(8) man:apachectl(8) Main PID: 37873 (httpd)
在内网测试机10.0.0.10进行内网联通测试: [root@localhost network-scripts]# curl 10.0.0.20 hello i am web server! 在外网测试机100.0.0.10进行外网联通测试: [root@localhost user1]# curl 100.0.0.20 hello i am web server!
6.DNS Router 10.0.0.30 100.0.0.30
[root@localhost network-scripts]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ens38: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 [root@localhost network-scripts]# cp -a ifcfg-ens33 ifcfg-ens38 内网:暂时不用设置网关 IPADDR=10.0.0.30 NETMASK=255.255.255.0 外网:删除UUID、MAC;改名DEVICE、NAME IPADDR=100.0.0.30 NETMASK=255.255.255.0 重启网卡 [root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# yum -y install bind #安装bind服务 [root@localhost network-scripts]# vim /etc/sysctl.conf #开启路由转发功能 net.ipv4.ip_forward=1 [root@localhost network-scripts]# sysctl -p
[root@localhost network-scripts]# vim /etc/named.conf #修改主配置文件 options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; 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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; match-clients { 10.0.0.0/24; }; zone "." IN { type hint; file "named.ca"; }; include "lan.zones" }; view lan{ match-clients { 10.0.0.0/24; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/lan.zones"; }; view wan{ match-clients { any; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/wan.zones"; }; #include "/etc/named.rfc1912.zones";
[root@localhost network-scripts]# cp -a /etc/named.rfc1912.zones /etc/lan.zones #生成内网的区域配置文件 [root@localhost network-scripts]# vim /etc/lan.zones zone "atguigu.com" IN { type master; file "lan.localhost"; allow-update { none; }; }; [root@localhost network-scripts]# cp -a /etc/named.rfc1912.zones /etc/wan.zones #生成外网的区域配置文件 [root@localhost network-scripts]# vim /etc/wan.zones zone "atguigu.com" IN { type master; file "wan.localhost"; allow-update { none; }; };
[root@localhost named]# cp -a /var/named/named.localhost /var/named/lan.localhost #生成内网的数据配置文件 [root@localhost named]# vim /var/named/lan.localhost $TTL 1D @ IN SOA atguigu.com. rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.atguigu.com. dns A 10.0.0.30 www A 10.0.0.20 [root@localhost named]# cp -a /var/named/named.localhost /var/named/wan.localhost #生成外网的配置文件 [root@localhost named]# vim /var/named/wan.localhost $TTL 1D @ IN SOA atguigu.com. rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.atguigu.com. dns A 100.0.0.30 www A 100.0.0.20
再仔细检查1遍配置文件,然后开启named服务 [root@localhost named]# systemctl start named [root@localhost named]# systemctl status named ● named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2020-05-02 23:39:50 CST; 7s ago Process: 7070 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS) Process: 7064 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS) Main PID: 7072 (named) Tasks: 5 CGroup: /system.slice/named.service └─7072 /usr/sbin/named -u named -c /etc/named.conf
7.结果测试
7.1在内网测试机 10.0.0.10
[root@localhost network-scripts]# curl www.atguigu.com hello i am web server! [root@localhost network-scripts]# nslookup www.atguigu.com Server: 10.0.0.30 Address: 10.0.0.30#53 Name: www.atguigu.com Address: 10.0.0.20
7.2在外网测试机 100.0.0.40
[root@localhost user1]# curl www.atguigu.com hello i am web server! [root@localhost user1]# nslookup www.atguigu.com Server: 100.0.0.30 Address: 100.0.0.30#53 Name: www.atguigu.com Address: 100.0.0.20
7.3总结
可以发现,同一个域名被解析成了2个不同的IP地址,内外网实现分离解析。当然,这个实验只写了正向解析。
zone "atguigu.com" IN { type master; file "lan.localhost"; allow-update { none; };};