欢迎大家来到IT世界,在知识的湖畔探索吧!
1. DNS介绍
1.1什么是域名
域名(Domain Name) ,简称域名、网域,是由一串用点分隔的名字组成的Intemet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。具有独一无二,不可重复的特性。
1.2 什么是DNS?
域名系统(Domain Name System,缩写: DNS)是互联网的一项服务。域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。可以理解为DNS就是翻译官。
正向解析: 域名 –> IP地址
反向解析: IP地址 –> 域名 //邮件服务会用到。
1.3 域名的组成和分类
常见格式: www.baidu.com
完整格式: www.baidu.com.
. : 根域 ,可省略不写 ,全球13台 ,一台主根 ,其他都是辅根
com : 顶级域, 由ICANN 组织指定和管理。
分类:
国家地区域名: cn (中国) 、hk (香港) 、sg (新加坡)等
通用顶级域名: com (商业机构) I org (非营利组织) 、edu (教育机构)等。
新通用顶级域名: red (红色、热情) 、top (顶级、高端)等
baidu:二级域(注册域) ,可由个人或组织申请注册。
www: 三级域(子域) ,服务器网站名代表。
主机名: s1.www.atguigu.com.中的s1就是主机名,一般用来表示具体某一台主机。 //不常见
欢迎大家来到IT世界,在知识的湖畔探索吧!
2. 域名解析过程
1. 客户机首先查看查找本地hosts文件,如果有则返回,否则进行下一步
2. 客户机查看本地缓存,是否存在本条目的缓存,如果有则直接返回,否则进行下一步。
3. 将请求转发给指向的DNS服务器。
4. 查看域名是否本地解析,是则本地解析返回,否则进行下一步。
5. 本地DNS服务器首先在缓存中查找,有则返回,无则进行下一步。 \\这里的缓存是从其他dns服务器学习来的
6. 向全球13个根域服务器发起DNS请求,根域返回org域的地址列表。
7. 使用某一个org域的IP地址,发起DNS请求, org域返回kernel域服务器地址列表。
8. 使用某一个kernel域IP地址,发起DNS请求, kernel域返回www.kernel.org主机的IP地址,本地DNS服务收到后,返回给客户机,并在本地DNS服务器保存一份。
为了安全性,DNS服务器不是随便搭建的,我们最多搭建一个简单的DNS服务器。
3. DNS软件信息
软件名称
bind
服务名称
named
软件端口
UDP 53 数据通信(域名解析)
TCP 53 数据同步 (主从同步)
配置文件:
主配置文件: /etc/nameed.conf (服务器运行参数)
区域配置文件: /etc/named.rfc1912.zones (服务器解析的区域配置,正反向区域定义信息)
数据配置文件: /var/named/xx.xx (主机名和IP地址的对应解析关系,及主从同步信息)
记录类型:
|
A: |
地址记录,用来指定域名的IPv4地址的记录 |
|
CNAME: |
将域名指向另一个域名,再由另一个域名提供IP地址,就需要添加CNAME记录 |
|
TXT: |
可填写任何东西,长度限制255。绝大多数的TXT记录是用来做SPF的(反垃圾邮件) |
|
NS: |
域名服务器记录,如果需要把子域名教给其他DNS服务商解析,就需要添加NS记录。 |
|
AAAA: |
地址记录,用来指定域名的IPv6地址的记录 |
|
MX: |
邮件交换记录,如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录。 |
4. DNS 实验搭建
4.1 DNS基本服务搭建
环境准备
|
ip |
节点 |
主机名 |
|
10.30.59.193 |
master |
dns1 |
|
10.30.59.194 |
测试 |
dns2 |
基础准备
# 修改主机名 [root@localhost ~]# hostnamectl set-hostname dns1 [root@localhost ~]# bash # 配置本地yum源 [root@dns1 ~]# mv /etc/yum.repos.d/* /media/ [root@dns1 ~]# vi /etc/yum.repos.d/local.repo [centos] name=centos baseurl=file:///opt/centos gpgcheck=0 enabled=1 [root@dns1 ~]# mkdir -p /opt/centos [root@dns1 ~]# mount /dev/sr0 /opt/centos/ mount: /dev/sr0 is write-protected, mounting read-only [root@dns1 ~]# yum repolist Loaded plugins: fastestmirror centos | 3.6 kB 00:00:00 (1/2): centos/group_gz | 155 kB 00:00:00 (2/2): centos/primary_db | 2.8 MB 00:00:00 Determining fastest mirrors repo id repo name status centos centos 3,723 repolist: 3,723 # 关闭防火墙 [root@dns1 ~]# systemctl stop firewalld [root@dns1 ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service. [root@dns1 ~]# setenforce 0 [root@dns1 ~]# vi /etc/selinux/config SELINUX=disabled # 安装常用工具 [root@dns1 ~]# yum install -y vim net-tools bash-c*
欢迎大家来到IT世界,在知识的湖畔探索吧!
服务搭建
欢迎大家来到IT世界,在知识的湖畔探索吧!# 安装服务 [root@dns1 ~]# yum -y install bind # 配置注意事项 所有内容以;结尾 ,, 大括号两侧内用空格分隔 # 配置主配置文件 [root@dns1 named]# vim /etc/named.conf options { listen-on port 53 { any; }; //设置服务器监听网卡,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"; allow-query { any; }; //设置访问服务器的客户端地址, any 所有 include "/etc/named.rfc1912.zones"; // 最下面有一行配置文件,指定了区域配置文件。 # 配置区域配置文件 [root@dns1 ~]# vim /etc/named.rfc1912.zones zone "bilibili.com" IN { type master; file "bilibili.localhost"; allow-update { none; }; }; zone "59.30.10.in-addr.arpa" IN { type master; file "bilibili.loopback"; allow-update { none; }; }; [root@dns1 ~]# cd /var/named/ [root@dns1 named]# ls data dynamic named.ca named.empty named.localhost named.loopback slaves # 注意与区域配置文件相一致 [root@dns1 named]# cp -a named.localhost bilibili.localhost [root@dns1 named]# cp -a named.loopback bilibili.loopback # 正向解析 [root@dns1 named]# vim bilibili.localhost $TTL 1D @ IN SOA bilibili.com. rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.bilibili.com. dns A 10.30.59.193 www A 10.30.59.195 # 反向解析 [root@dns1 named]# vim bilibili.loopback $TTL 1D @ IN SOA bilibili.com. rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.bilibili.com. 93 PTR dns.bilibili.com. 95 PTR www.bilibili.com. # 启动服务 [root@dns1 named]# systemctl restart named [root@dns1 named]# netstat -ntlp |grep named tcp 0 0 10.30.59.193:53 0.0.0.0:* LISTEN 12550/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 12550/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 12550/named tcp6 0 0 ::1:53 :::* LISTEN 12550/named tcp6 0 0 ::1:953 :::* LISTEN 12550/named
测试
# 使用第二台虚拟机, 配置dns为DNS服务器,测试 [root@localhost ~]# hostnamectl set-hostname dns2 [root@localhost ~]# bash [root@dns2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno DNS1=10.30.59.193 [root@dns2 ~]# systemctl restart network # bilibili地址显示为10.30.59.195,说明配置成功。 [root@dns2 ~]# ping www.bilibili.com PING www.bilibili.com (10.30.59.195) 56(84) bytes of data. From 10.30.59.194 icmp_seq=1 Destination Host Unreachable From 10.30.59.194 icmp_seq=2 Destination Host Unreachable From 10.30.59.194 icmp_seq=3 Destination Host Unreachable From 10.30.59.194 icmp_seq=4 Destination Host Unreachable
4.2主从DNS服务器
目的:
减轻主服务器的压力,备份
环境准备:
centos7-1511,关闭防火墙 selinux
|
ip |
节点 |
主机名 |
|
10.30.59.193 |
master |
dns1 |
|
10.30.59.194 |
slave |
dns2 |
|
10.30.59.195 |
ceshi |
localhost |
欢迎大家来到IT世界,在知识的湖畔探索吧!# 主从两个节点 # 配置本地yum源 [root@dns1 ~]# cat /etc/yum.repos.d/local.repo [centos] name=centos baseurl=file:///opt/centos gpgcheck=0 enabled=1 [root@dns2 ~]# cat /etc/yum.repos.d/local.repo [centos] name=centos baseurl=file:///opt/centos gpgcheck=0 enabled=1 # 安装服务 [root@dns1 ~]# yum install -y bind [root@dns2 ~]# yum install -y bind 主节点配置 # 主节点配置 [root@dns1 ~]# vim /etc/named.conf options { listen-on port 53 { 10.30.59.193; }; 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"; allow-query { any; }; # 区域配置文件只保留一个模板文件 [root@dns1 ~]# vim /etc/named.rfc1912.zones zone "bilibili.com" IN { type master; file "bilibili.localhost"; allow-update { 10.30.59.194; }; }; # 修改正向解析配置文件 相对于基本服务,这里多配置一个serial充当版本作用 [root@dns1 ~]# cd /var/named/ [root@dns1 named]# cp -a named.localhost bilibili.localhost [root@dns1 named]# vim bilibili.localhost $TTL 1D @ IN SOA bilibili.com. rname.invalid. ( ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.bilibili.com. dns A 10.30.59.193 www A 10.30.59.195 [root@dns1 named]# service named restart Redirecting to /bin/systemctl restart named.service
从节点配置
[root@dns2 ~]# vim /etc/named.conf 10 options { 11 listen-on port 53 { 10.30.59.194; }; 12 listen-on-v6 port 53 { ::1; }; 13 directory "/var/named"; 14 dump-file "/var/named/data/cache_dump.db"; 15 statistics-file "/var/named/data/named_stats.txt"; 16 memstatistics-file "/var/named/data/named_mem_stats.tx t"; 17 allow-query { any; }; # 配置区域配置文件 只保留一个模板文件 [root@dns2 ~]# vim /etc/named.rfc1912.zones zone "bilibili.com" IN { type slave; masters { 10.30.59.193; }; file "slaves/bilibili.localhost"; allow-update { none; }; }; # 从服务器不需要配置解析文件,会自动同步master节点服务器文件到slaves目录下 # 启动前,确认为空目录 [root@dns2 ~]# ls /var/named/slaves/ # 启动服务 [root@dns2 ~]# service named start Redirecting to /bin/systemctl start named.service [root@dns2 ~]# ls /var/named/slaves/ bilibili.localhost
验证结果
给测试机配置dns为从服务器的地址
欢迎大家来到IT世界,在知识的湖畔探索吧![root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno # 从节点的地址 DNS1=10.30.59.194 [root@localhost ~]# systemctl restart netwoprk Failed to restart netwoprk.service: Unit netwoprk.service failed to load: No such file or directory. [root@localhost ~]# systemctl restart network [root@localhost ~]# ping www.bilibili.com PING www.bilibili.com (10.30.59.195) 56(84) bytes of data. 64 bytes from 10.30.59.195: icmp_seq=1 ttl=64 time=0.028 ms 64 bytes from 10.30.59.195: icmp_seq=2 ttl=64 time=0.042 ms 64 bytes from 10.30.59.195: icmp_seq=3 ttl=64 time=0.040 ms ^C --- www.bilibili.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 0.028/0.036/0.042/0.009 ms
4.3DNS缓存服务器
目的:
加快解析速度,提高工作效率
实验软件:
dnsmasq
操作:
接上一个环境继续操作,把从服务器当作缓存服务器。
# 停掉从服务器 [root@dns2 ~]# service named stop Redirecting to /bin/systemctl stop named.service # 安装dnsmasq 可能已经安装。 yum install -y dnsmasq # 修改配置文件 [root@dns2 ~]# vim /etc/dnsmasq.conf domain=bilibili.com server=10.30.59.193 cache-size=150 # 重启服务 [root@dns2 ~]# service dnsmasq restart Redirecting to /bin/systemctl restart dnsmasq.service # 测试 如果没有nslookup命令,下载bind-utils [root@localhost ~]# nslookup www.bilibili.com Server: 10.30.59.194 Address: 10.30.59.194#53 Name: www.bilibili.com Address: 10.30.59.195 # 关掉主服务器 [root@dns1 ~]# systemctl stop named # 再次测试 非权威回答 [root@localhost ~]# nslookup www.bilibili.com Server: 10.30.59.194 Address: 10.30.59.194#53 Non-authoritative answer: Name: www.bilibili.com Address: 10.30.59.195
请求顺序
# 客户端从缓存服务器请求, 缓存服务器没有,去主服务查找, 主服务器没启动,测试没反应, 启动主服务器,再次测试, 缓存服务器再次请求主服务器,获取域名,返回给客户端。
欢迎大家来到IT世界,在知识的湖畔探索吧!# 主服务器没启动 [root@localhost ~]# nslookup dns.bilibili.com ^C # 启动主服务器 [root@dns1 ~]# systemctl start named [root@localhost ~]# nslookup dns.bilibili.com Server: 10.30.59.194 Address: 10.30.59.194#53 Name: dns.bilibili.com Address: 10.30.59.193 # 再次关闭,有缓存可以解析到。 [root@dns1 ~]# systemctl stop named [root@localhost ~]# nslookup dns.bilibili.com Server: 10.30.59.194 Address: 10.30.59.194#53 Non-authoritative answer: Name: dns.bilibili.com Address: 10.30.59.193
4.4 智能DNS(分离解析)
目的:
NDS分离解析即将相同域名解析为不同的IP地址,实现网络中一些网站为了让用户有更好的体验效果解析速度更快,就把来自不通运营商的用户解析到相对应的服务器,这样就大大提升了访问速度。
实验环境:
配置一台apache服务器,两个网卡模拟内外网, 两台测试机从内网外网分别访问。dns能够正确解析(内网地址访问解析内网地址,外网地址访问解析外网地址)。
|
节点 |
IP |
主机名 |
备注 |
|
内网测试机 |
192.168.100.10 |
int |
内外网选择网络模式:内: vmnat1 192.168.100.0/24外: vmnat 8 192.168.200.0/24 |
|
外网测试机 |
192.168.200.10 |
ext |
|
|
apache |
192.168.100.20 192.168.200.20 |
apache |
|
|
dns+路由 |
192.168.100.30 192.168.200.30 |
dns |
实验大纲:
1、安装bind软件
2、内核配置文件开启路由转发,修改/etc/sysctl.conf
3、修改主配置文件/etc/named.conf 配置any,视图
4、生成自己定义的区域配置文件。
5、配置数据文件
内网正向解析,外网正向解析
6、重启服务
7、效果测试
nslookup
基础环境准备:
修改主机名 配置ip 所有节点关闭防火墙、selinux、配置本地yum。
# 内网测试机
[root@localhost ~]# hostnamectl set-hostname net1
[root@localhost ~]# bash
[root@int ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
GATEWAY=192.168.100.30
DNS1=192.168.100.30
# 外网测试机
[root@localhost ~]# hostnamectl set-hostname ext
[root@localhost ~]# bash
[root@ext ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
ONBOOT=yes
IPADDR=192.168.200.10
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=192.168.200.30
# 配置双网卡出了一个问题: 一开始本着第一块网卡仅主机模式,然后第二块网卡net模式,就调整第一块网卡为仅主机模式,新加的第二块网卡为net模式, 结果网络不行,就重新配置为第一块网卡为net模式,第二块网卡为net模式。 不影响本案例。
# apache
[root@localhost ~]# hostnamectl set-hostname apache
[root@localhost ~]# bash
[root@apache ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
ONBOOT=yes
IPADDR=192.168.200.20
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=114.114.114.114
[root@apache ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno33554984
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
NAME=eno33554984
ONBOOT=yes
IPADDR=192.168.100.20
NETMASK=255.255.255.0
# dns
[root@localhost ~]# hostnamectl set-hostname dns
[root@localhost ~]# bash
[root@dns ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
ONBOOT=yes
IPADDR=192.168.200.30
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=114.114.114.114
[root@dns ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno33554984
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno33554984
ONBOOT=yes
IPADDR=192.168.100.30
NETMASK=255.255.255.0
# apache 节点安装httpd
[root@apache ~]# yum install -y httpd
[root@apache ~]# vim /var/www/html/index.html
dns分离解析验证成功!
[root@apache ~]# systemctl start httpd
[root@apache ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
# dns节点安装bind。
[root@dns ~]# yum install -y bind
测试一下直接地址访问看看有没有问题
分离解析配置
欢迎大家来到IT世界,在知识的湖畔探索吧!# dns节点永久开启路由转发 [root@dns ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 [root@dns ~]# sysctl -p net.ipv4.ip_forward = 1 #修改主配置文件 # 两个any 监听任意地址 # 加两个视图 分别监听内网和其他地址 ,视图匹配规则为自上而下匹配,注意顺序。 match-client匹配地址, include 指定区域配置文件。 [root@dns ~]# vim /etc/named.conf listen-on port 53 { any; }; allow-query { any; }; view lan { match-clients { 192.168.100.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@dns ~]# cp -a /etc/named.rfc1912.zones /etc/lan.zones [root@dns ~]# vim /etc/lan.zones zone "bilibili.com" IN { type master; file "lan.localhost"; allow-update { none; }; }; [root@dns ~]# cp -a /etc/lan.zones /etc/wan.zones [root@dns ~]# vim /etc/wan.zones zone "bilibili.com" IN { type master; file "wan.localhost"; allow-update { none; }; }; # 修改解析文件 [root@dns etc]# cd /var/named/ [root@dns named]# ls data dynamic named.ca named.empty named.localhost named.loopback slaves [root@dns named]# cp -a named.localhost lan.localhost [root@dns named]# vim lan.localhost $TTL 1D @ IN SOA bilibili.com. rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.bilibili.com. dns A 192.168.100.30 www A 192.168.100.20 [root@dns named]# cp -a lan.localhost wan.localhost [root@dns named]# vim wan.localhost $TTL 1D @ IN SOA bilibili.com. rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.bilibili.com. dns A 192.168.200.30 www A 192.168.200.20
测试
# 启动服务 [root@dns named]# systemctl start named # 内网机测试 [root@int ~]# curl www.bilibili.com dns分离解析验证成功! \\ 查看是否显示你在主页显示的内容。 # 外网机测试 [root@ext ~]# curl www.bilibili.com dns分离解析验证成功! \\查看是否同理 # 再使用nslookup测试 # 两个节点都下载 [root@ext ~]# yum install -y bind-utils [root@int ~]# nslookup www.bilibili.com Server: 192.168.100.30 Address: 192.168.100.30#53 Name: www.bilibili.com Address: 192.168.100.20 [root@ext ~]# nslookup www.bilibili.com Server: 192.168.200.30 Address: 192.168.200.30#53 Name: www.bilibili.com Address: 192.168.200.20 # 可以发现内外网使用的dns地址不同,并且解析出来的ip不同。实验成功!
如果ip更多,就多写视图,多谢区域配置文件与解析文件。
拓展知识: 邮件服务
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/137485.html