1、简述DNS服务器原理,并搭建主-辅服务器。
1)、在浏览器中输入www.baidu.com 域名,操作系统会先检查自己本地的hosts文件是存在这个网址映射关系,如果存在会优先调用本地的IP地址映射,完成域名解析。
2)、如果本地hosts里没有对应域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有直接返回应答,完成域名解析。
3)、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4)、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5)、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,会去.com域的这台服务器请求解析。.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会请求baidu.com域服务器,重复上面的动作,进行查询,直至找到www.baidu.com主机最终完成域名解析。
6)、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间的交互查询就是迭代查询。
主辅DNS服务器搭建
主DNS:192.168.2.238 从DNS:192.168.2.239 测试域名:www.dnstest.com 客户端机器:192.168.2.240
1)在主从服务器上安装bind包 yum -y install bind
2)修改主服务器dns配置文件 vim /etc/named.conf
将此行注释运行所有机器访问dns,dns默认53端口是监听在本机,
// listen-on port 53 { localhost; };
允许所有主机查询
allow-query { any; };
// 安全限制,只允许dns从服务器查询
allow-transfer { 192.168.2.239; };
3)添加解析的域,创建解析域的数据库文件
vim /var/named/dnstest.com.zone
$TTL 1D
@ IN SOA master.dnstest.com admin.dnstest.com. (
1
1D
1H
1W
3H )
NS master
NS slave1
master IN A 192.168.2.238
slave1 IN A 192.168.2.239
www CNAME webapp
webapp IN A 192.168.2.238
webapp IN A 192.168.2.239
4)添加域配置,type指定类型为dns主服务器,file指定域解析的数据库文件
vim /etc/named.rfc1912.zones
zone "dnstest.com" {
type master;
file "dnstest.com.zone";
};
5)启动dns服务并验证主DNS服务域名解析
在客户端机器上验证 dig -t A www.dnstest.com @192.168.2.238
6)从DNS服务器配置
修改从服务器dns配置文件
vim /etc.named.conf
将此行注释运行所有机器访问dns,dns默认53端口是监听在本机,
// listen-on port 53 { localhost; };
允许所有主机查询
allow-query { any; };
// 安全限制,不允许任何dns服务器与当前dns服务器同步数据
allow-transfer { none; };
7)添加同步域配置,
vim /etc/named.rfc1912.zones
zone "kang.com" IN {
type slave;
masters {192.168.2.238;};
file "slaves/dnstest.com.zone.slave";
};
8)启动从节点上的dns服务器,查看主节点数据库文件是否同步成功
systemctl start named
ls /var/named/slaves/ 文件同步成功
9)验证使用从节点解析域名是否正常,同时测试将主服务器dns服务停止使用dns从节点是否还能正常解析域名
dig -t A www.dnstest.com @192.168.2.239
停止主DNS服务器,验证从服务器是否解析正常
dig -t A www.dnstest.com @192.168.2.239
10)DNS主从服务器搭建完成。
2、搭建并实现智能DNS。
实验环境: dns服务器1台:192.168.2.241 客户端1台:192.168.2.238,192.168.6.41,127.0.0.1
www.dnstest.com A记录解析的IP分别是:192.168.2.239、192.168.6.181、119.29.29.29
1)在dns服务端安装bind包 yum -y install bind
2)修改named.conf ,定义各地的ip地址列表,注意事项小网段定义在前,大网段定义在后,否则不能实现智能解析
acl beijingnet { 192.168.2.0/24; };
acl shenzhennet { 192.168.6.0/24; };
acl othernet { any; };
3)在/var/named/目录下创建3个区域数据库文件,实际生产环境ns解析服务器可使用对应区域的IP,这里实验使用同一个地址,同时修改3个文件的权限chgrp named dnstest.com.zone.*
dnstest.com.zone.beijing
$TTL 1D
@ IN SOA ns1 admin ( 1 1H 1H 1D 3H )
NS ns1
ns1 A 192.168.2.241
www A 192.168.2.239
dnstest.com.zone.shenzhen
$TTL 1D
@ IN SOA ns1 admin ( 1 1H 1H 1D 3H )
NS ns1
ns1 A 192.168.2.241
www A 192.168.6.181
dnstest.com.zone.other
$TTL 1D
@ IN SOA ns1 admin ( 1 1H 1H 1D 3H )
NS ns1
ns1 A 192.168.2.241
www A 119.29.29.29
4)定义bind view,定了view后,必须将所有的zone放到view中
在vim named.conf中定义
view view_beijing {
match-clients { beijingnet; };
include "/etc/named.named.rfc1912.zones.beijing";
};
view view_shanghai {
match-clients { shenzhennet; };
include "/etc/named.named.rfc1912.zones.shenzhen";
};
view view_other {
match-clients { othernet; };
include "/etc/named.named.rfc1912.zones";
};
5)将/etc/named.named.rfc1912.conf放到view中,将view中定义的zone配置段放到/etc/named.named.rfc1912.zones文件中,便于管理
zone "dnstest.com" {
type master;
file "dnstest.com.zone.beijing";
};
zone "dnstest.com" {
type master;
file "dnstest.com.zone.shenzhen";
};
zone "dnstest.com" {
type master;
file "dnstest.com.zone.other";
};
6)将named.conf文件中的如下配置段放入到/etc/named.named.rfc1912.zones文件中
zone "." IN {
type hint;
file "named.ca"
};
7)将/etc/named.named.rfc1912.zones复制3份,分别修改里面的zone为定义的区域,同时修改3个文件的权限chgrp named dnstest.com.zone.*
cp /etc/named.named.rfc1912.zones /etc/named.named.rfc1912.zones.beijing
zone "dnstest.com" {
type master;
file "dnstest.com.zone.beijing"
};
cp /etc/named.named.rfc1912.zones /etc/named.named.rfc1912.zones.shenzhen
zone "dnstest.com" {
type master;
file "dnstest.com.zone.shenzhen"
};
/etc/named.named.rfc1912.zones 为other配置文件
zone "dnstest.com" {
type master;
file "dnstest.com.zone.other"
};
8)启动dns服务器,并在不同网段的客户端机器上验证www.dnstest.com域名的dns解析
在192.168.2.0网段客户端机器上验证beijingdns解析 dig www.dnstest.com @192.168.2.241
在192.168.6.0网段客户端机器上验证beijingdns解析 dig www.dnstest.com @192.168.2.241
在其他网段客户端机器上验证other解析,dig www.dnstest.com @127.0.0.1
3、编译安装Mariadb,并启动后可以正常登录
1)下载并解压mariadb源码包 wget https://github.com/MariaDB/server/archive/mariadb-10.2.18.tar.gz
tar xf mariadb-10.2.18.tar.gz
2)安装编译时所需依赖包
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
3)创建程序运行用户和mariadb数据存放目录
mkdir -p /root/data/mysql
useradd -r -s /sbin/nologin -d /data/mysql/
chown mysql.mysql /data/mysql/
4)编译安装
cmake . \
-DCMAKE_INSTALL_PREFIX=/data/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=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci
5)安装
make -j 4 && make install
6)配置mariadb环境变量
echo 'PATH=/data/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
加载环境变量 source /etc/profile.d/mysql.sh
7)初始化数据库
进入到mariadb程序安装目录 cd /data/app/mysql/
./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
8)准备mariadb配置文件
cp /data/app/mysql/support-files/my-huge.cnf /etc/my.cnf
9)准备mariadb启动脚本
cp /data/app/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
10) 启动mariadb服务
chkconfig --add mysqld;systemctl start mysqld
11)修改登录密码,数据库安装完成。
mysqladmin -uroot password "new_password";