dns及数据库相关练习

dns主从配置

1.dns工作原理

image.png

2.搭建dns主从服务器架构

  • 实验环境

dns 主server ip:172.16.2.131 centos7.6 bind
dns 从server ip:172.16.2.132 centos7.6 bind
web server ip:172.16.2.135 centos8.1 httpd
dns client ip:172.16.2.134

  • web server配置
[root@centos8-node1 ~]# dnf install -y httpd //安装http服务
[root@centos8-node1 html]#vim /var/www/html/index.html //修改主页文件
www.test.com on 2.135


[root@centos8-node1 html]# systemctl start httpd //启动服务
  • 主dns配置
[root@node1 ~]# yum install bind bind-utils -y //安装bind服务
[root@node1 ~]# 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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
//      allow-query     { localhost; }; //注释掉此项
        allow-transfer  { 172.16.2.132; }; //加上此参数,允许从服务器通信

[root@node1 ~]# vim /etc/named.rfc1912.zones //添加域名
zone "test.com" IN {
        type master;
        file "test.com.zone";                                                                                             
};  //加入test域名,设为主服务器,指定解析文件地址


[root@node1 ~]# vim /var/named/test.com.zone  //添加具体地址解析记录
$TTL 86400
@       IN      SOA dns1 admin ( 1 1H 5M 7D 1D )                                                                                                                                           
        IN      NS      dns1
        IN      NS      dns2
dns1    IN      A       172.16.2.131
dns2    IN      A       172.16.2.132
www     IN      A       172.16.2.135
[root@node1 named]# chmod 640 test.com.zone //修改文件权限
[root@node1 named]# chgrp named test.com.zone //修改属组,如不修改会造成服务无法读取此文件
[root@node1 ~]# named-checkconf //检查配置
[root@node1 ~]# named-checkzone "test.com" /var/named/test.com.zone //检查地址解析文件配置
zone test.com/IN: loaded serial 1
OK
[root@node1 ~]# systemctl start named  //启动服务
  • 在client端测试主服务器是否生效
[root@centos6 ~]# dig www.test.com @172.16.2.131  //使用dig命令 指定主服务器ip

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.3 <<>> www.test.com @172.16.2.131
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41149
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.test.com.          IN  A

;; ANSWER SECTION:
www.test.com.       86400   IN  A   172.16.2.135 // 查询成功

;; AUTHORITY SECTION:
test.com.       86400   IN  NS  dns2.test.com.
test.com.       86400   IN  NS  dns1.test.com.

;; ADDITIONAL SECTION:
dns1.test.com.      86400   IN  A   172.16.2.131
dns2.test.com.      86400   IN  A   172.16.2.132

;; Query time: 1 msec
;; SERVER: 172.16.2.131#53(172.16.2.131)
;; WHEN: Fri Mar 27 17:18:23 2020
;; MSG SIZE  rcvd: 116
  • 从dns服务器配置
[root@node2 slaves]# yum install -y bind //安装服务

[root@node2 slaves]# 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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
//      allow-query     { localhost; };   //注释掉此项
        allow-transfer  {none;};   //添加此参数,不允许其他服务器连接
        /* 
[root@node2 slaves]# vim /etc/named.rfc1912.zones //添加域名
zone "test.com" IN {
        type slave;
        masters { 172.16.2.131;};
        file "slaves/test.com.zone"; //加入test域名,设为从服务器,指定主服务器地址,指定解析文件地址

};

[root@node2 slaves]# systemctl strat named //启动服务
[root@node2 slaves]# ll /var/named/slaves/ //查看解析文件是否已同步
total 4
-rw-r--r--. 1 named named 293 Mar 27 17:59 test.com.zone



  • 在client端测试从服务器
[root@centos6 ~]# dig www.test.com @172.16.2.132

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.3 <<>> www.test.com @172.16.2.132
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11881
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.test.com.          IN  A

;; ANSWER SECTION:
www.test.com.       86400   IN  A   172.16.2.135 //查询成功

;; AUTHORITY SECTION:
test.com.       86400   IN  NS  dns2.test.com.
test.com.       86400   IN  NS  dns1.test.com.

;; ADDITIONAL SECTION:
dns1.test.com.      86400   IN  A   172.16.2.131
dns2.test.com.      86400   IN  A   172.16.2.132

;; Query time: 2 msec
;; SERVER: 172.16.2.132#53(172.16.2.132)
;; WHEN: Fri Mar 27 18:04:03 2020
;; MSG SIZE  rcvd: 116
  • client端测试是否通过域名访问网页
[root@centos6 ~]# cat /etc/resolv.conf //客户端修改dns地址
# Generated by NetworkManager
search localdomain
nameserver 172.16.2.131
nameserver 172.16.2.132

[root@centos6 ~]# curl www.test.com //可以通过域名访问网页
www.test.com on 2.135

搭建智能dns

  • 实验规划:
    在dns上配置三个acl分别为test1,test2,test3,匹配地址172.16.2.132 172.16.2.134 及余下其他地址,通过view和acl的绑定来实现以下智能功能:
    (1)让来自172.16.2.132的关于www.test.com的dns解析,解析成1.1.1.1
    (2)让来自172.16.2.134的关于www.test.com的dns解析,解析成2.2.2.2
    (3)让其余地址的关于www.test.com的dns解析,解析成3.3.3.3
  • 2.实验环境:
    (1)dns server ip:172.16.2.131 os: centos 7.6 安装 bind
    (2)dns client 1 ip:172.16.2.132
    (3)dns client 2 ip:172.16.2.134
    (4)dns client 3 ip:172.16.2.135
  • 服务器配置
 [root@node1 named]# vim /etc/named.conf //修改配置文件,添加以下内容
 acl test1 {
        172.16.2.132;
};

acl test2 {
        172.16.2.134;
};
acl test3 {
        any;
};  
//添加三个acl 匹配三个地址
view viewtest1{
        match-clients{test1;};
        include "/etc/named.rfc1912.zones.test1";
};
view viewtest2{
        match-clients{test2;};
        include "/etc/named.rfc1912.zones.test2";
};
view viewtest3{
        match-clients{test3;};
        include "/etc/named.rfc1912.zones.test3";
};
//添加三个view,匹配三个acl及区域文件


ps:一旦启用了view,所有的zone都只能定义在view中 

[root@node1 named]# cp -a /etc/named.rfc1912.zones /etc/named.rfc1912.zones.test1 //复制三份区域文件,此处应使用-a选项,保证权限及属组正确
[root@node1 named]# cp -a /etc/named.rfc1912.zones /etc/named.rfc1912.zones.test2
[root@node1 named]# cp -a /etc/named.rfc1912.zones /etc/named.rfc1912.zones.test3
[root@node1 etc]# vim named.rfc1912.zones.test1 // 修改成不同的地址解析文件
zone "test.com" IN {
        type master;
        file "test.com.zone1";     
[root@node1 etc]# vim named.rfc1912.zones.test2 
zone "test.com" IN {
        type master;
        file "test.com.zone2";     
[root@node1 etc]# vim named.rfc1912.zones.test3 
zone "test.com" IN {
        type master;
        file "test.com.zone3";    


[root@node1 named]# cp -a test.com.zone test.com.zone1 //复制三份地址解析文件,此处应使用-a选项,保证权限及属组正确
[root@node1 named]# cp -a test.com.zone test.com.zone2
[root@node1 named]# cp -a test.com.zone test.com.zone3

[root@node1 named]# vim test.com.zone1
$TTL 86400
@       IN      SOA dns1 admin ( 1 1H 5M 7D 1D )
        IN      NS      dns1
dns1    IN      A       172.16.2.131
www     IN      A       1.1.1.1  //相同主机,修改成不同ip 
[root@node1 named]# vim test.com.zone2
$TTL 86400
@       IN      SOA dns1 admin ( 1 1H 5M 7D 1D )
        IN      NS      dns1
dns1    IN      A       172.16.2.131
www     IN      A       2.2.2.2  //相同主机,修改成不同ip  
[root@node1 named]# vim test.com.zone3
$TTL 86400
@       IN      SOA dns1 admin ( 1 1H 5M 7D 1D )
        IN      NS      dns1
dns1    IN      A       172.16.2.131
www     IN      A       3.3.3.3  //相同主机,修改成不同ip  

[root@node1 etc]# systemctl restart named  //重启dns服务
  • 在client1上测试
[root@node2 slaves]# dig www.test.com @172.16.2.131

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> www.test.com @172.16.2.131
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36952
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.test.com.          IN  A

;; ANSWER SECTION:
www.test.com.       86400   IN  A   1.1.1.1 //已解析成1.1.1.1

;; AUTHORITY SECTION:
test.com.       86400   IN  NS  dns1.test.com.

;; ADDITIONAL SECTION:
dns1.test.com.      86400   IN  A   172.16.2.131

;; Query time: 0 msec
;; SERVER: 172.16.2.131#53(172.16.2.131)
;; WHEN: Sat Mar 28 00:00:01 CST 2020
;; MSG SIZE  rcvd: 92
  • 在client2上测试
[root@centos6 ~]# dig www.test.com @172.16.2.131

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.3 <<>> www.test.com @172.16.2.131
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48181
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.test.com.          IN  A

;; ANSWER SECTION:
www.test.com.       86400   IN  A   2.2.2.2 //已解析成2.2.2.2

;; AUTHORITY SECTION:
test.com.       86400   IN  NS  dns1.test.com.

;; ADDITIONAL SECTION:
dns1.test.com.      86400   IN  A   172.16.2.131

;; Query time: 0 msec
;; SERVER: 172.16.2.131#53(172.16.2.131)
;; WHEN: Sat Mar 28 00:13:07 2020
;; MSG SIZE  rcvd: 81
  • 在client3上测试
[root@centos8-node1 html]# dig www.test.com @172.16.2.131

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> www.test.com @172.16.2.131
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32010
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 5d338667549070f470aceaf25e7e2530a15a44ce454b533b (good)
;; QUESTION SECTION:
;www.test.com.          IN  A

;; ANSWER SECTION:
www.test.com.       86400   IN  A   3.3.3.3    //已解析成3.3.3.3

;; AUTHORITY SECTION:
test.com.       86400   IN  NS  dns1.test.com.

;; ADDITIONAL SECTION:
dns1.test.com.      86400   IN  A   172.16.2.131

;; Query time: 0 msec
;; SERVER: 172.16.2.131#53(172.16.2.131)
;; WHEN: Sat Mar 28 00:14:18 CST 2020
;; MSG SIZE  rcvd: 120

编译安装MariaDB

  • 创建数据库目录
[root@node2 ~]# mkdir -p /data/mysql
  • 创建mysql用户,设置为系统用户,指定家目录为刚生成的数据库目录
[root@node2 ~]# useradd -r -s /sbin/nologin -d /data/mysql mysql
  • 修改数据库目录的属主、属组
[root@node2 ~]# chown mysql:mysql /data/mysql
  • 安装编译所需要的软件
[root@node2 ~]#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  libdb-cxx-devel
  • 解压缩源文件
[root@node2 ~]# tar -xvf mariadb-10.4.12.tar.gz
  • 执行cmake
[root@node2 mariadb-10.4.12]# cd mariadb-10.4.12/
[root@node2 mariadb-10.4.12]# 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
  • 执行编译
[root@node2 mariadb-10.4.12]# make -j 2 && make install
  • 编译完成后,查看生成的程序文件
[root@node2 mysql]# ll /app/mysql/
总用量 176
drwxr-xr-x.  2 root root  4096 3月  30 23:21 bin
-rw-r--r--.  1 root root 17987 1月  27 04:43 COPYING
-rw-r--r--.  1 root root  2354 1月  27 04:43 CREDITS
drwxr-xr-x.  3 root root    18 3月  30 23:20 data
drwxr-xr-x.  2 root root    81 3月  30 23:20 docs
-rw-r--r--.  1 root root  8245 1月  27 04:43 EXCEPTIONS-CLIENT
drwxr-xr-x.  3 root root    19 3月  30 23:19 include
-rw-r--r--.  1 root root  8779 1月  27 04:43 INSTALL-BINARY
drwxr-xr-x.  4 root root   235 3月  30 23:20 lib
drwxr-xr-x.  4 root root    30 3月  30 23:21 man
drwxrwxr-x.  9 root root  4096 3月  30 23:21 mysql-test
-rw-r--r--.  1 root root  3102 1月  27 04:43 README.md
-rw-r--r--.  1 root root 19520 1月  27 04:43 README-wsrep
drwxr-xr-x.  2 root root    56 3月  30 23:21 scripts
drwxr-xr-x. 29 root root  4096 3月  30 23:21 share
drwxr-xr-x.  4 root root  4096 3月  30 23:21 sql-bench
drwxr-xr-x.  3 root root   165 3月  30 23:21 support-files
-rw-r--r--.  1 root root 86263 1月  27 04:43 THIRDPARTY
  • 设置环境变量
[root@node2 mysql]# echo "PATH=/app/mysql/bin:$PATH" > /etc/profile.d/mysql.sh
[root@node2 mysql]# . /etc/profile.d/mysql.sh
  • 利用脚本生成数据库
[root@node2 mysql]# cd /app/mysql/
[root@node2 mysql]# scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql
  • 设置配置文件,指定数据库位置 (10.3以后版本无需至support-files文件夹中复制配置文件,配置文件已直接复制进etc目录中)
[root@node2 my.cnf.d]# vim /etc/my.cnf
datadir=/data/mysql
socket=/data/mysql/mysql.sock
  • 生成启动脚本
[root@node2 mariadb-10.4.12]# cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@node2 mariadb-10.4.12]# chkconfig --add mysqld
[root@node2 mariadb-10.4.12]# systemctl daemon-reload
  • 启动服务
[root@node2 mariadb-10.4.12]# service mysqld start
  • 查看3306端口是否监听
[root@node2 mariadb-10.4.12]# ss -tnl
State       Recv-Q Send-Q                               Local Address:Port                                              Peer Address:Port
LISTEN      0      128                                              *:111                                                          *:*
LISTEN      0      10                                    172.16.2.132:53                                                           *:*
LISTEN      0      10                                       127.0.0.1:53                                                           *:*
LISTEN      0      128                                              *:22                                                           *:*
LISTEN      0      128                                      127.0.0.1:953                                                          *:*
LISTEN      0      100                                      127.0.0.1:25                                                           *:*
LISTEN      0      80                                              :::3306                                                        :::*
LISTEN      0      128                                             :::111                                                         :::*
LISTEN      0      10                                             ::1:53                                                          :::*
LISTEN      0      128                                             :::22                                                          :::*
LISTEN      0      128                                            ::1:953                                                         :::*
LISTEN      0      100                                            ::1:25                        :::*
  • 尝试登陆mysql
[root@node2 mariadb-10.4.12]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.4.12-MariaDB 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)]>
  • 执行mysql安全初始化
[root@node2 mariadb-10.4.12]# mysql_secure_installation
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容