1、简述DNS服务器原理,并搭建主-辅服务器。
1)DNS服务器原理
DNS(Domain Name System)域名系统,是解决互联网上机器命名的一种系统。
DNS查询类型:递归查询、迭代查询
DNS名称解析:
从名称到IP的查询叫做正向解析
从IP到名称的查询叫做反向解析。
如果DNS服务器至少解析了一个或一个以上的域叫做DNS主服务器或者DNS辅助服务器,如果不负责任何解析叫做DNS缓存服务器。
DNS的解析过程:
- 当客户端访问时,先查自己的hosts文件,如有过则返回结果;
- 当客户端hosts文件中没有结果时,则查本地缓存,有则返回结果;
- 本地缓存没有结果时,则首先会找TCP/IP参数中设置的首选DNS服务器,即本地DNS服务器,此服务器收到查询时,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户端,完成解析,此解析具有权威性;
- 如果要查询的域名由本地DNS服务器区域解析,则去查服务器缓存,如果该服务器中缓存了此网址的映射关系,则调用映射完成解析,此解析不具有权威性;
- 如果本地DNS服务器解析失败,则根据本地DNS服务器是否设置转发器进行查询。
①如果未设置转发模式,则本地DNS将请求发至13台根DNS,根DNS在收到请求后pad域名的管理者,并返回负责该域名服务器的IP,本地DNS服务器收到IP后,如自己无法解析,则会找管理该域名的下一级DNS服务器给本地DNS服务器,本地DNS服务器收到地址后,就会查询网址的域服务器,一直迭代查询直至找到域名主机;
②如果是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,如不能解析,则继续转发至上上级,依次迭代循环,直至找到域名主机。
不管是本地DNS服务器用的是转发还是根提示,最终都是把结果返回给本地DNS服务器,然后由本地DNS服务器将结果返回给客户端。
2)搭建主从服务器
主服务器:192.168.45.202
从服务器:192.168.45.203
1)搭建主DNS服务器
第一步:安装bind,并启动服务
[root@centos7 ~]# yum install bind -y
[root@centos7 ~]# systemctl start named
第二步:修改bind全局配置文件/etc/named.conf,修改listen-on 和allow-query
第三步:在解析区域文件中添加主服务器解析区域
vim /etc/named.rfc1912.zones
zone "yyt.com" IN {
type master;
file "yyt.com.zone";
};
第四步:配置主服务器解析区域文件yyt.com.zone,并关联从DNS服务器
cp /var/named/localhost /var/named/yyt.com.zone
vim /var/named/yyt.com.zone
$TTL 1D
@ IN SOA master.yyt.com. admin.yyt.com. (
2 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS ns1 #关联从DNS服务器地址
ns1 A 192.168.45.203
master A 192.168.45.202
ftp A 1.1.1.1
db A 2.2.2.2
www CNAME websrv
websrv A 192.168.45.202
第五步:重新启动named服务
[root@centsystemctl start named
2)搭建从服务器
第一步:安装bind并启动服务
[root@centos7 ~]# yum install bind -y
[root@centos7 ~]# systemctl start named
第二步:修改bind全局配置文件/etc/named.conf,注销listen-on 和allow-query行
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
# allow-query { localhost; };
第三步:在解析区域文件中添加从服务器解析区域,type设置为slave,并指定master服务器
vim /etc/named.rfc1912.zones
zone "yyt.com" IN {
type slave; #
masters { 192.168.45.202; };
file "slaves/yyt.com.zone.slave";
};
第四步:由于在建立主服务器zone文件中已经关联了从服务器地址,所以在从服务器的named.rfc1912.zones文件中设置好从服务器zone之后,启动服务,就会自动创建从服务器zone文件yyt.com.zone.slave
[root@centos7 ~]# systemctl start named
[root@centos7 ~]# cd /var/named/slaves/
[root@centos7 slaves]# ll
total 4
-rw-r--r-- 1 named named 456 Jul 22 00:19 yyt.com.zone.slave
3)验证主从同步
将主服务器zone文件中添加一条解析,并修改序号之后,重启服务
vim /var/named/yyt.com.zone
$TTL 1D
@ IN SOA master.yyt.com. admin.yyt.com. (
3 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS ns1
ns1 A 192.168.45.203
master A 192.168.45.202
ftp A 1.1.1.1
db A 2.2.2.2
www CNAME websrv
websrv A 192.168.45.202
ftp A 3.3.3.3 #新增解析
* A 192.168.45.202
主服务器重启服务,并查看从服务器的zone文件是否有变化
[root@centos7 named]# rndc reload
server reload successful
[root@centos7 slaves]# ll
total 4
-rw-r--r-- 1 named named 462 Jul 22 19:46 yyt.com.zone.slave
2、搭建并实现智能DNS。
第一步:安装bind,并启动服务
[root@centos7 ~]# yum install bind -y
[root@centos7 ~]# systemctl start named
第二步:配置named.conf
acl henannet {
192.168.45.0/24;
};
acl othernet {
any;
};
options {
listen-on port 53 { localhost; };
...
allow-query { any; };
...
};
第三步:建立zone文件
[root@centos7 named]# cp named.localhost yyt.com.zone.hn -p
[root@centos7 named]# cp named.localhost yyt.com.zone.other -p
vim /var/named/yyt.com.zone.hn
$TTL 1D
@ IN SOA ns1 admin (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1
ns1 A 192.168.45.204
www A 192.168.45.100
vim /var/named/yyt.com.zone.other
$TTL 1D
@ IN SOA ns1 admin (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1
ns1 A 192.168.45.204
www A 8.8.8.8
第四步:在named.conf文件中建立view
view view_henan {
match-clients { henannet; };
zone "." IN {
type hint;
file "named.ca";
};
zone "yyt.com" IN {
type master;
file "yyt.com.zone.hn";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
view view_other {
match-clients { othernet; };
zone "." IN {
type hint;
file "named.ca";
};
zone "yyt.com" IN {
type master;
file "yyt.com.zone.other";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
第五步:重启named服务
[root@centos7 ~]# systemctl restart named
使用其他机器进行验证:
用192.168.45.204进行解析,返回henannet区域IP192.168.45.100
[root@centos7 ~]# dig -t A www.yyt.com @192.168.45.204
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> -t A www.yyt.com @192.168.45.204
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58930
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.yyt.com. IN A
;; ANSWER SECTION:
www.yyt.com. 86400 IN A 192.168.45.100
;; AUTHORITY SECTION:
yyt.com. 86400 IN NS ns1.yyt.com.
;; ADDITIONAL SECTION:
ns1.yyt.com. 86400 IN A 192.168.45.204
;; Query time: 1 msec
;; SERVER: 192.168.45.204#53(192.168.45.204)
;; WHEN: Wed Jul 22 23:22:29 CST 2020
;; MSG SIZE rcvd: 90
用192.168.0.129进行解析,返回other IP 8.8.8.8
[root@centos7 ~]# dig -t A www.yyt.com @192.168.0.129
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> -t A www.yyt.com @192.168.0.129
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41646
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.yyt.com. IN A
;; ANSWER SECTION:
www.yyt.com. 86400 IN A 8.8.8.8
;; AUTHORITY SECTION:
yyt.com. 86400 IN NS ns1.yyt.com.
;; ADDITIONAL SECTION:
ns1.yyt.com. 86400 IN A 192.168.45.204
;; Query time: 1 msec
;; SERVER: 192.168.0.129#53(192.168.0.129)
;; WHEN: Wed Jul 22 23:23:11 CST 2020
;; MSG SIZE rcvd: 90
3、编译安装Mariadb,并启动后可以正常登录
第一步:准备数据目录和用户
mkdir /data/mysql
useradd -r -s /sbin/nologin -d /data/mysql/ mysql
chown mysql.mysql /data/mysql
第二步:安装相关依赖包
yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel
第三步:解压源文件
[root@centos7 data]# tar -xvf mariadb-10.2.25.tar.gz
第四步:源码编译安装,此步骤过程比较漫长
cd mariadb-10.2.25/
cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
make && make install
第五步:准备环境变量
echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
第六步:生成数据库文件
cd /app/mysql/
scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql
第七步:准备配置文件
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
第八步:准备启动脚本
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
第九步:启动服务
chkconfig --add mysqld
service mysqld start
[root@centos7 etc]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.2.25-MariaDB-log Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [(none)]>
安装完成,可以正常登陆。