一、简述DNS服务器原理,并搭建主-辅服务器
1、简述DNS服务器原理
第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器;
第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回;
第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域) 的主域名服务器的地址;
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址;
第五步:重复第四步,直到找到正确的纪录;
第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户 。
2、DNS服务器主从搭建
二台主机,一台当主服务器(192.1685.11/24),一台当从服务器(192.168.5.12/24),配置 shanghb.com 域的主从架构
(1)l两天主机安装BIND服务
yum install -y bind
(2)修改主服务配置文件/etc/named.conf
vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; }; #注释此项
// allow-query { localhost; }; #注释此项
allow-transfer {192.168.5.12;}; #添加此项
(3)新建域解析文件 /var/named/shanghb.com.zone
cp /var/named/named.localhost /var/named/shanghb.com.zone -p
vim shanghb.com.zone
$TTL 1D
@ IN SOA ns1 admin (1 1D 10M 1W 1D)
NS ns1
NS ns2
ns1 A 192.168.5.11
ns2 A 192.168.5.12
www A 192.168.5.11
(4)在主服务器域文件 /etc/named.rfc1912.zones 中添加"shanghb.com"域
vim /etc/named.rfc1912.zones
#添加以下内容
zone "shanghb.com" IN { #添加此项
type master;
file "shanghb.com.zone";
}
named-checkconf #检查配置文件
named-checkzone shanghb.com /var/named/shanghb.com.zone #检查数据库文件
rndc reload #同步信息
(5)配置从服务器主配置文件 /etc/named.conf
vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; }; #注释此项
// allow-query { localhost; }; #注释此项
allow-transfer {none;}; #添加此项
(6)并在从服务器的域文件 /etc/named.rfc1912.zones 中添加域信息
vim /etc/named.rfc1912.zones
#添加以下内容
zone "shanghb.com" IN {
type slave;
master {192.168.5.11;};
file "slaves/shanghb.com.zone.slave";
};
ls /var/named/slaves/
cat /var/named/slaves/shanghb.com.zone.slave
(7)启动主从服务器的DNS服务,并测试
systemctl start named
dig www.shanghb.com @192.168.5.11
dig www.shanghb.com@192.168.5.12
dig -t axfr shanghb.com @192.168.5.11
dig -t axfr shanghb.com @192.168.5.12
二、搭建并实现智能DNS
二台主机,各两块网卡,一个网卡(192.168.5.0/24)另外一个网卡(172.17.0.0/16)假设通过192.168.5.0/24网段访问DNS服务器,则智能解析到 1.1.1.1,通过172.17.0.0/16网段访问DNS服务器,则智能解析到 2.2.2.2,其它网段的解析到 3.3.3.3
(1)在DNS服务器上安装BIND服务
yum install -y bind
(2)在DNS服务器上配置文件/etc/named.conf的 acl 和 view
vim /etc/named.conf
acl bjnet {
192.168.5.0/24;
};
acl tjnet {
172.17.0.0/16;
};
acl othernet {
any;
};
view view_bjnet{
match-clients { bjnet; };
include "/etc/named.rfc1912.zones.bjnet";
};
view view_tjnet{
match-clients { tjnet; };
include "/etc/named.rfc1912.zones.tjnet";
};
view view_other{
match-clients { othernet; };
include "/etc/named.rfc1912.zones.other";
};
删除以下内容:
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
(3)配置域文件
vim /etc/named.rfc1912.zones
zone "." IN {
type hint;
file "named.ca";
};
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bjnet -p
vim /etc/named.rfc1912.zones.bjnet
zone "shanghb.com" IN {
type master;
file "shanghb.com.zone.bjnet";
};
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.tjnet -p
vim /etc/named.rfc1912.zones.tjnet
zone "shanghb.com." IN {
type master;
file "shanghb.com.zone.tjnet";
};
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.other -p
vim /etc/named.rfc1912.zones.other
zone "shanghb.com" IN {
type master;
file "shanghb.com.zone.other";
};
(4)配置解析文件
cd /var/named/
cp named.localhost shanghb.com.zone.bjnet -p
$TTL 1D
@ IN SOA ns1 admin (1 1D 10M 1W 1D)
NS ns1
ns1 A 192.168.5.11
webserver A 1.1.1.1
www CNAME webserver
cp named.localhost shanghb.com.zone.tjnet -p
$TTL 1D
@ IN SOA ns1 admin (1 1D 10M 1W 1D)
NS ns1
ns1 A 192.168.5.11
webserver A 2.2.2.2
www CNAME webserver
cp named.localhost shanghb.com.zone.other -p
$TTL 1D
@ IN SOA ns1 admin (1 1D 10M 1W 1D)
NS ns1
ns1 A 192.168.5.11
webserver A 3.3.3.3
www CNAME webserver
(5)客户端验证
三、编译安装Mariadb,并启动后可以正常登录
(1) 准备源码文件到服务器
ll mariadb-10.2.25.tar.gz
(2) 解压安装包,并创建mysql用户和数据目录
tar -zxvf mariadb-10.2.25.tar.gz
useradd -r -s /sbin/nologin -d /data/mysql mysql
mkdir /data/mysql
chown mysql:mysql /data/mysql
(3) 安装相应依赖包
yum install -y 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 libdb-cxx-devel
(4) cmake编译安装
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
cmake .
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql [MySQL安装的根目录]
-DDEFAULT_CHARSET=utf8 [设置默认字符集为utf8]
-DDEFAULT_COLLATION=utf8_general_ci [设置默认字符校对]
-DENABLED_LOCAL_INFILE=1 [启用加载本地数据]
-DENABLE_DOWNLOADS=1 [编译时允许自主下载相关文件]
-DEXTRA_CHARSETS=all [使MySQL支持所有的扩展字符]
-DSYSCONFDIR=/etc [MySQL配置文件所在目录]
-DWITHOUT_TOKUDB=1
-DWITH_ARCHIVE_STPRAGE_ENGINE=1 [MySQL的数据库引擎]
-DWITH_ARCHIVE_STORAGE_ENGINE=1 [MySQL的数据库引擎]
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 [MySQL的数据库引擎]
-DWITH_DEBUG=0 [禁用调试模式]
-DWITH_MEMORY_STORAGE_ENGINE=1 [MySQL的数据库引擎]
-DWITH_MYISAM_STORAGE_ENGINE=1 [MySQL的数据库引擎]
-DWITH_INNOBASE_STORAGE_ENGINE=1 [MySQL的数据库引擎]
-DWITH_PARTITION_STORAGE_ENGINE=1 [MySQL的数据库引擎]
-DWITH_READLINE=1 [MySQL的readline library]
-DWITH_SSL=system [通讯时支持ssl协议]
-DWITH_ZLIB=system [允许使用zlib library]
-DWITH_LOBWRAP=0
-DMYSQL_DATADIR=/data/mysql [MySQL数据库文件存放目录]
-DMYSQL_USER=mysql [MySQL用户名]
-DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock [MySQL的通讯目录]
-DMYSQL_TCP_PORT=3306 [MySQL的监听端口]
-DMYSQL_MAINTAINER_MODE=0
如果CMAKE编译失败,删除CMakeCache.txt。
make && make install
(5) 安装完成后,配置环境变量
echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
echo $PATH
/app/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
(6) 初始化数据库,生成数据库文件
cd /app/mysql
scripts/mysql_install_db --datadir=/data/mysql --user=mysql
(7) 准备配置文件与启动脚本
mv /etc/my.cnf /etc/my.cnf.bak
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
(8) 启动数据库服务并登录测试
chkconfig --add mysqld
service mysqld start
ss -ntlp|grep 3306
mysql