大家好,今天我们分享Linux部署DNS服务
首先我们要知道什么是DNS
DNS(Domain Name System) 叫做域名系统
是一种采用c/s架构而设计的用于实现域名和ip地址相互转换的系统
是一种比较重要的网络服务,国际互联网工作的基础,在企业内部也是得到了广泛的应用
DNS的解析方式
如果这个还是不好理解,在来一个例子:
在你的键盘上按win+r 组合键
我们在这里执行一个ping www.baidu.com 的操作 ,可以看见的是,它会返回一个与他对应的ip地址
其实这就是我们域名解析地址的过程(正向解析)
或者看这个也一样
以下就是反向解析的过程(ip地址解析成域名)
这就是DNS的结构图
DNS的查询方式
DNS 服务器类型
主域名服务器 就是特定区域的dns服务器 (它是唯一的),负责该区域所有的域名解析的工作
下面我们来做一下:
这是我们使用的系统版本(centos 7.5 )
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@localhost ~]#
这台可以上网(但是我们不需要,)
因为如果服务器可以上网的话,dns相关的解析就会自动跑到公网,这样的话,我们在服务器本地做的这些操作就起不到作用
[root@localhost yum.repos.d]# ping www.baidu.com
PING www.a.shifen.com (180.101.49.12) 56(84) bytes of data.
64 bytes from www.baidu.com (180.101.49.12): icmp_seq=1 ttl=128 time=10.2 ms
64 bytes from www.baidu.com (180.101.49.12): icmp_seq=2 ttl=128 time=9.71 ms
64 bytes from www.baidu.com (180.101.49.12): icmp_seq=3 ttl=128 time=8.66 ms
64 bytes from www.baidu.com (180.101.49.12): icmp_seq=4 ttl=128 time=8.05 ms
我们在这里设置一下网络(vmnet1),使用内网
宿主机本地的vmnet1 地址 192.168.10.10
修改服务器的网卡地址
root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
这样设置 BOOTPROTO=“static”
ONBOOT=“yes”
IPADDR=192.168.10.12
MASK=255.255.255.0 注意ip地址要和宿主机的ip同段
TYPE="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="499c469a-f9b1-41d3-a6a7-3251f065fd7c"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.10.12
MASK=255.255.255.0
~
~
重启网络
[root@localhost ~]# systemctl restart network
查看网卡地址
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.12 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::e165:6adb:8c92:513e prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:2b:d2:66 txqueuelen 1000 (Ethernet)
RX packets 133 bytes 13762 (13.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 62 bytes 6504 (6.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]#
测试与宿主机的网络通信
[root@localhost ~]# ping 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=1 ttl=128 time=0.173 ms
64 bytes from 192.168.10.10: icmp_seq=2 ttl=128 time=0.102 ms
64 bytes from 192.168.10.10: icmp_seq=3 ttl=128 time=0.109 ms
64 bytes from 192.168.10.10: icmp_seq=4 ttl=128 time=0.142 ms
64 bytes from 192.168.10.10: icmp_seq=5 ttl=128 time=0.130 ms
64 bytes from 192.168.10.10: icmp_seq=6 ttl=128 time=0.165 ms
^C
--- 192.168.10.10 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5002ms
rtt min/avg/max/mdev = 0.102/0.136/0.173/0.030 ms
连接远程工具
进入到yum 目录
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
删除到所有原先的源(一定要做备份)
[root@localhost yum.repos.d]# rm -rf *
这是我的备份
[root@localhost yum.repos.d]# ls /opt/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo rh
[root@localhost yum.repos.d]#
写一个.repo结尾的文件
[root@localhost yum.repos.d]# vim zz.repo
[zz]
name=zz
baseurl=file:///mnt
enable=1
gpgckeck=0
做挂载
[root@localhost yum.repos.d]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost yum.repos.d]# yum list
这样就说明没问题
texlive-tex.noarch 2:svn26689.3.1415926-38.el7 zz
texlive-tex-bin.x86_64 2:svn26912.0-38.20130427_r30134.el7 zz
texlive-tex-gyre.noarch 2:svn18651.2.004-38.el7 zz
texlive-tex-gyre-math.noarch 2:svn29045.0-38.el7 zz
texlive-tex4ht.noarch 2:svn29474.0-38.el7 zz
texlive-tex4ht-bin.x86_64 2:svn26509.0-38.20130427_r30134.el7 zz
texlive-texconfig.noarch 2:svn29349.0-38.el7 zz
texlive-texconfig-bin.noarch 2:svn27344.0-38.20130427_r30134.el7 zz
texlive-texlive.infra.noarch 2:svn28217.0-38.el7 zz
texlive-texlive.infra-bin.x86_64 2:svn22566.0-38.20130427_r30134.el7 zz
这里报了个错误
[root@localhost yum.repos.d]# yum install bind -y
已加载插件:fastestmirror, langpacks
您已启用软件包 GPG 签名检查,这样很好。不过您尚未安装任何 GPG 公钥。请下载您希望安装的软件签名公钥并安装。假设公钥已下载,安装命令是:
rpm --import public.gpg.key
或者,在软件源配置中,使用 'gpgkey' 选项指定软件源使用的公钥 URL,这样 yum 会自动安装它。
详情请联系发行版或软件包制作人。
问题源:zz
解决办法:
[root@localhost yum.repos.d]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
安装bind
[root@localhost yum.repos.d]# yum install bind -y
安装httpd
[root@localhost yum.repos.d]# yum install httpd -y
接下来,我们要实现的就是:
通过www.abc.com 来访问我们发布在服务器上的资源
开启httpd服务
[root@localhost html]# systemctl start httpd.service
关闭防火墙
[root@localhost html]# systemctl stop firewalld.service
正常访问
写点东西到我们的网站根目录下
[root@localhost ~]# echo "abc" > /var/www/html/index.html
重启Apache
[root@localhost ~]# systemctl restart httpd
访问正常
通过www.abc.com 来访问我们发布在服务器上的资源
域名 abc.com
主机名 www
服务器地址: 192.168.10.12
这是我们要做的
要善于备份
[root@localhost ~]# cp /etc/named.conf /opt/
[root@localhost ~]# cp /etc/named.iscdlv.key /opt/
[root@localhost ~]# cp /etc/named.rfc1912.zones /opt/
[root@localhost ~]# cp /etc/named.root.key /opt/
编辑这个文件
[root@localhost ~]# vim /etc/named.conf
这块配置文件很重要(以下是没有动过的)
options {
listen-on port 53 { 127.0.0.1; };
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 { localhost; };
这样改
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";
allow-query { any; }; //允许所有主机进行域名查询
编辑这个文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
这是正向区域的配置文件
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
这是反向区域的配置文件
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
编辑我们自己的正向区域配置文件
zone "localhost.localdomain" IN {
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "abc.com" IN {
type master;
file "abc.com.zone";
allow-update { none; };
};
保存退出
在这里缺少文件
[root@localhost named]# ll
总用量 16
drwxrwx---. 2 named named 6 4月 13 2018 data
drwxrwx---. 2 named named 6 4月 13 2018 dynamic
-rw-r-----. 1 root named 2281 5月 22 2017 named.ca
-rw-r-----. 1 root named 152 12月 15 2009 named.empty
-rw-r-----. 1 root named 152 6月 21 2007 named.localhost
-rw-r-----. 1 root named 168 12月 15 2009 named.loopback
drwxrwx---. 2 named named 6 4月 13 2018 slaves
[root@localhost named]#
复制一个模板出来
[root@localhost named]# cp named.localhost abc.com.zone
编辑这个文件
[root@localhost named]# vim abc.com.zone
$TTL 1D
@ IN SOA abc.com root.abc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns
dns A 192.168.10.12
www A 192.168.10.12
ftp CNAME 192.168.10.12
要给权限(原先的权限不够)
[root@localhost named]# chown :named abc.com.zone
开启named.service
[root@localhost named]# systemctl start named
重启
[root@localhost named]# systemctl restart named
也可以使用centos7自带的浏览器 (以下就是成功了)
解析成功
[root@localhost named]# nslookup www.abc.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.abc.com
Address: 192.168.10.12
[root@localhost named]#
好了,到这里我们DNS的正向解析就做好了,谢谢大家