dns服务器集群

一台dns服务器,不能满足大量用户同时解析的需求,所以提出dns集群概念

相当于多台服务器,同时分担访问量,高效快速。

 

 

服务器(master172.25.254.11

vim /etc/named.rfc1912.zone.inter

allow-transfer {172.25.254.10};

 

vim /etc/resolv.conf

nameserver 172.25.254.11

 

 

从属服务器(slave)       172.24.25.10

vim /etc/named.rfc1912.zone

type slave;

masters {172.25.254.11};

file "slaves/westos.com.zone"

 

wKioL1g-pL3g7wqoAABEAuI-rUo305.png

 

vim /etc/resolv.conf

nameserver 172.25.254.10

 

wKiom1g-pL6hODEZAAAs6vlUZkI444.png

测试

在slave主机的/var/named/slaves

出现westos.com.zone,这是因为在从属服务器的/etc/named.rfc1912.zone中file "slaves/westos.com.zone",书写所致。

 

wKioL1g-pL6y3KmvAAAn9hbIR1E950.png

 

在从属服务器dig www.westos.com响应的主机为从属服务器,数据是从 从属服务器的slaves/westos.com.zone文件读取~

 

wKiom1g-pL_C9cREAAC485oNC8w556.png

 

 

 

那么,问题来了~~~

 

如果dns主服务器,更改了某个域名的A记录,那么从属服务器能不能实时得知呢?

 

 

slave自动同步masterA记录文件

 

master:     主动通知机制

vim /etc/named.rfc1912.zone

 

allow-transfer {172.25.254.10};

also-notify {172.25.254.10};

 

wKioL1g-pMDg-WVVAABIJujowik955.png

 

vim /var/named/westos.com.inter

2016112601  serial(slave会检测这个值,是否一致来判断是否需要同步)

www    A   newip

 

 

注意:serial的值此时不能为零,一般为10位(yyyymmddcc),

因为从属服务器,会根据serial是否为0来判断,是否要更新A记录文件。

 

wKiom1g-pMDiDrGUAABX30FsdyI916.png

 

 

slave

 

打来的电话会被防火墙selinux拦截。

systemctl stop firewalld

setenforce 0

 

 

 

同步A记录文件之前:


wKioL1g-pMHy0Hh6AABU16uTb7U374.png

 

 

没关selinux之前不更新!!!!!!

 

wKiom1g-pMLg7PfwAAD1LA2ChoU001.png

 

关闭selinux后,A记录被更新。


wKiom1g-pMLg7PfwAAD1LA2ChoU001.png

 

 

远程更改主dns服务器

dns

vim /etc/nmaed.rfc1912.zone.inter

allow-update{172.25.254.11};

 

>/var/log/messages

cat /var/log/messages

 

 远程端

nsupdate

server 172.25.254.130

update delete www.westos.com

send

 

update add www.westos.com 86400 A 172.25.254.111

send

 

86400为最大缓存时间,一天的所有秒数86400=24*3600


 

 wKioL1hKOm_iXadlAAAkBC5CIgo370.jpg

报错:

出现如下报错:nameserver指定DNS错误

 

wKioL1g-pMSgfRg4AAAy8vHslfs525.png

 

 

出现如下报错:chmod 770 /var/named/让远程端有写入的权限


wKiom1g-pMSBbIGbAAAmc0F2Sm4326.png

 

别忘记设置setenforce 0

 

出现如下图所示,即为发送成功~~

 

wKiom1g-pMTBFFvkAAAlukGvveY175.png

 

 

 

[root@dns-slave mnt]# nsupdate -kKwestos.+157+51429.private

> server 172.25.254.100

> update delete www.westos.com

> send

> quit

远程端,要关selinux

主dns,chmod 770 /var/named/,让远程端有写入的权限。

 

wKioL1g-pMXh0sSiAACoJmFvRuo999.png

 

 

 

 

注意:

 

在远程端输入同步命令以后,

主dns服务器会生成一个/var/named/westos.com.inter.jnl

 

此时dig www.westos.com  的ip已经被修改。

也就是说系统优先读取westos.com.inter.jnl,此时westos.com.inter还没有被修改。

 

wKioL1g-pMXyT8eXAAC0dz7832o453.png

 

在重启服务以后,westos.com.inter.jnl会同步westos.com.inter,产生新的A记录文件

所以,此前要做好原A记录文件的备份

 

wKiom1g-pMfwRW8iAAC6WQTuf3g881.png

 

 

查看新的A记录文件,www的信息已经被删除,A记录文件在重启后被同步~~

 

wKioL1g-pMiTMmrKAACPm8_xZR8777.png

 

cp -p /var/named/westos.com.inter /mnt

[root@dns-slave mnt]# nsupdate -kKwestos.+157+51429.private

> server 172.25.254.100

> update delete www.westos.com

> send

> quit

 

 

加密远程端


dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos

MD5 对称加密

 

/etc/rndc.key 是dns的默认加密模板

 

wKiom1g-pMiRC5IfAABxj-WJfmc181.png

 

cp -p /etc/rndc.key /etc/westos.key

 

cat Kwestos.xxxxx.key

vim /etc/westos.key

 

 

key "westos"!!!

secret "xxxxxx";

 

wKioL1g-pMmw4YyaAAAoVU9J5kc224.png

 

 

vim /etc/named.conf

43 include "/etc/westos.key";

 

wKiom1g-pMnTPmvGAAAx8TmQc4Y512.png

 

 

vim /etc/named.rfc1912.zone.inter

allow-update {key westos;};

 

wKioL1g-pMnSYCO7AAArS2zEdeo666.png

 

把密码和钥匙发送给远程端。

scp Kwestos.xxxxx.key Kwestos.xxxxx.privateroot@172.25.254.230:/mnt

检测

 

远程客户端

nsupdate -k Kwestos.xxxxx.private

 

server 172.25.254.130

update delete www.westos.com

send

 

dns服务器

dig www.westos.com

/////

 

 

 

DNS 的动态绑定

 

每次从电信获取ip,都是dhcp,相应的dns服务器也会同步更新主机的ip,这样即使你变了ip,别人还是可以访问到你

 

怎么做呢?

man 5 dhcp.conf


wKiom1g-pMuyTBoeAABjI2W7K-I480.png

 

wKiom1g-pMyzQcDNAADHvZLNt8M151.png

 

关闭selinux!!!!

 

 

服务器

 

vim /etc/dhcpd/dhcp.conf

 

wKioL1g-pM2TYbDgAADMzNzM1lE565.png


7 name "westos.com"

8 name-servers 172.25.254.130

14 ddns-update-style interim;

 

wKiom1g-pM6TSenaAABCAdikAwQ302.png

 

 

wKioL1g-pM6SjKrVAABX7aYBf4M107.png

 

 

subnet 172.25.254.0 netmask 255.255.255.0{

    range172.25.254.231 172.25.254.244;

    optionrouters 172.25.254.130;

}

key westos{

    algorithmhmac-md5;

    secert XXXXX;

};

zone westos.com. { 通知DNS要更新dhcp变的ip

    primary127.0.0.1; DHCP所在的服务器,使用回环更快。

    key westos;

    }

 

wKioL1g-pM-x0rg8AACHQ02ijqY489.png

 

客户端

网卡配置文件

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DNS1=172.25.254.130

BOOTPROTP=dhcp

vim /etc/resolv.conf

nameserver 172.25.254.130

 

检测

服务器

systemctl restart dhcpd

systemctl restart named

 

客户端

systemctl restart network

ifconfig

dig client.westos.com

client为主机名

 

wKiom1g-pNCTN7fDAAEJ_O7rTnk470.png

 

最后服务器能获取到/var/named/westos.com.inter.jnl,文件

之后systemctl restart named

cat var/named/westos.com.inter,发现client主机的信息已经被添加。

 

wKioL1g-pNHwvVt-AADRUV311CQ327.png

 

大功告成~~~~

 

 

 

数据库   Mariadb

yum install mariadb-server.x86_64 -y

systemctl start mariadb

 

默认开启外网mysqpl端口

netstat –antlpe

 

vim /etc/my.cnf

skip-networking=1

 

systemctl restart mariadb

netstat –antlpe

 

wKiom1g-pNLyuSx3AACSTFNVM4w794.png

 

mysql_secure_installation   安装安全机制

一路回车,输密码~:

 

wKiom1g-pNSQPM0rAAEw9eLfWTE707.png

 

在安装安全机制之前,如何进入数据库:

1)mysql -h loalhost     -h, --host=name

 

wKiom1g-pNThAcuNAACCgxSV6Bg226.png

2)mysql

 

wKioL1g-pNXTWjN-AAB8nOFeW4E480.png

  

 


mysql的使用

 

1)DATABASE   数据库

SHOW DATABASES;                     显示数据库

USE MYSQL;                          进入数据库

SHOW TABLES;                        显示数据库中的表

FLUSHprivileges;                   刷新数据库信息

SELECT Host,user,passwd FROM user;  查询表user中的Host,user,passwd

 

 

实例:

SHOW DATABASES;

wKiom1g-p7mhZCGpAACAjlxCHh4899.png

USE MYSQL;

SHOW TABLES;


wKioL1g-p7rioNpwAAB7ZnNU6tA877.png

 

SELECT * FROM user;

 

wKiom1g-p7qThuaMAABRSlNGsoU666.png

 

SELECT Host,user,passwd FROM user;

 

wKiom1g-p7uQk31EAABw_4gGlg8600.png

 

 

2)创建TABLE 

DESC UTAB;                                 查看UTAB表的数据结构      description

 

CREATE DATABASE lalala;         创建lalala数据库

USE lalala;

CREATE TABLE UTAB(              创建表,username,password字段

username varchar(10) not null,

password varchar(50) not null,

age varchar(4)

);

 

wKioL1g-p7uCFXyGAACNQ0GcPG8426.png

 

wKiom1g-p7yRoViNAABkSynHd2k692.png

 

DESC user;              查看user表的数据结构   description

 

wKioL1g-p7yx-CpTAABhL6gjQmI593.png

 

 

3)插入,更新字段  

INSERT INTO UTAB VALUES ('lixiaojie','123',2);  插入字段

INSERT INTO UTAB VALUES ('damowang','123',100);

INSERT INTO UTAB VALUES ('zoe','123','');

 

wKioL1g-p72jOWqEAAEXFbnrn4w541.png

 

 

ALTER TABLE UTAB ADD class varchar(8) AFTER password;

                                    添加class字段到UTAB中,在password字段后。

 

ALTER TABLE linux DROP class;          删除class字段 

 

wKiom1g-p77RMizRAACPcMqioPI001.png

 

 

UPDATE UTAB SET class=’1’;    设置新添加的class字段的值。(不加where全部添加)

UPDATE UTAB SET class=’1’where username=zoe;

 

 

wKioL1g-p76BUYtEAABvaQ3z34M234.png

 

 

wKiom1g-p7-zXlsnAAB45XN1f1c236.png

 

 

3)删除表,删除数据库      

DROP table UTAB;  

DROP DATABASES;  数据库

wKiom1g-p7_A2kb2AACbbovXTdA441.png

 

数据库的相对访问和绝对访问

绝对访问

select * FROM mysql.user;           查询mysql库下的user表中的索引

 

wKioL1g-p8CTAdXVAACEkrpr-3o738.png

 

相对访问:

SHOW DATABASES;

USE mysql;

SHOW TABLES;

SELECT * FROM user;

 

 

创建用户

CREATE USER miao@localhost identified by 'westos';  创建本地用户

CREATE USER miaomiao@'%' identified by 'westos';        创建远程用户

 

查看远程用户的授权

 

wKioL1g-p8DzQgEkAAA7wau7pSQ365.png

 

创建本地用户

 

wKiom1g-p8HjuhALAAC4eZrMaiQ316.png

 

新用户刚开始没有权限,只能登陆,什么都干不了

 

wKiom1g-p8KAKOevAACohhGP_Hw477.png

 

用户授权

GRANT INSERT,UPDATE,DELETE,SELECT, on *.* tolalala@localhost;

*.*:所有数据库的所有表

GRANT INSERT on mysql.* lalala@'%' 远程

 

 

重载授权表

FLUSHPRIVILEGES;

 

查看授用户授权

SHOW GRANTS FOR lalala@localhost;

 

wKioL1g-p8LQCwWMAACYUvlUG00028.png

 

miao用户可以创建新的数据库啦~~

 

wKioL1g-p8OgyN5vAAEDFOb9Y1Q880.png

 

 

撤销用户权限

REVOKE INSERT,UPDATE,DELETE,SELECT, on *.* tolalala@localhost;

 

wKiom1g-p8TRirA_AAEA59AWOSg831.png

 

删除用户

DROP USER lalala@localhost;

 

修改root密码

 

1)知道密码,直接修改

mysqladmin -uroot -pwestos password redhat

 

wKiom1g-p8Xi34ECAACInPv1LfY620.png

 

2)忘记root用户密码

systemctl stop mariadb

mysqld_safe --skip-grant-tables &    绕过安全验证机制

 

mysql -uroot

 

 

SELECT * FROM mysql.user

查看用户名,密码字段书写方式。

 

 

wKioL1g-p8WCjK-RAAA13JWhPTY336.png


UPDATE mysql.user set Password=password('lalala') WHERE User='root';

                加密密码,否则密码为明文

 

wKioL1g-p8bRqL4-AAD8MZKNXgQ804.png

 

密码为明文


wKiom1g-p8bT5ypEAAAh8IQJU9Y892.png

 

 

UPDATE mysql.user set Password=password('lalala') WHERE User='root';

     密码被加密!!!!!!!!

 

wKiom1g-p8fyMiwhAAF16_cs9Go538.png


fg

killall -9 mysqld_safe

ps aux | grep mysql

kill -9 PID结束残留mysql进程

 

wKioL1g-p8iDARbjAAGSS3yjYhI893.png

 

数据库的备份

mysqldump –uroot –plalala xixixi            备份xixixi数据库

 

wKiom1g-p8jwzE_QAACdKJuJ43U006.png

 

wKioL1g-p8nDuJKOAAB5kfd62uM313.png

 

mysql -uroot -plalala -e "DROP  DATABASE xixixi"

mysqldump -uroot -plalala xixixi>/mnt/xixixi.sql    全部备份

mysqldump -uroot -plalala xixixi --no-data>/mnt/xixixi.sql  只备份表头,没有数据

 

mysql -uroot -plalala -e "SHOW DATABASElalala"

 

 

mysql -uroot -plalala -e "CREATE DATABASE xixixi"

mysql -uroot -plalala xixixi</mnt/xixixi.sql    恢复

 

 

备份流程

1)备份并删除数据库

 

wKiom1g-p8qyDF8JAAF4Lx3qB54863.png

 

 

2)全部恢复


wKioL1g-p8rRdpB-AADigH0l5qc744.png

 

3)只恢复表头


wKiom1g-p8uSn5nXAAEWTw3OcoY626.png

 

 

 

 

在网页上用myadmin软件管理数据库

1.下载

yum install httpd php-mysql  php -y

download phpadmin_.tar.brz

tar jxf phpmyadmin-*.tar.bz2 -C /var/www/html  -C 指定解压目录

mv phpmyadmin phpadmin

 

2.如何配置

1)check 压缩文件的README


wKioL1g-p8uSeT3uAAAY-kyFtDA070.png

 

2)check Documentation.txt

/Quick install


wKiom1g-p8yCmCPpAAGkpggVGDM540.png

 

3.配置方法

cp -p config.sample.inc.php config.inc.php

vim config.inc.php

cookie 不能为空,随便填一个

 

wKiom1g-ysTCz9YcAABPGG_POCA597.png

 

systemctl stop firewalld

systemctl start httpd


检验

wKioL1g-ysXzqPAbAACWxwx7bYY076.png

 

 

 

在浏览器中插入一个字段~~~


wKioL1g-ysXC8RjWAABLKqiccNo396.png

 

 

在本地数据库可以查看其添加~~

 

wKiom1g-ysah6qf1AACR26JYn40974.png

 

简单邮件服务    

25:通过IP,发送传输

 

dns服务器:将域名解析为ip

 

 

dns服务器(maillalala.lalala.com)   172.25.254.11

 

vim /etc/resolv.conf

nameserver 172.25.254.11

 

wKiom1g-ysex8G02AAAe8L_geag927.png

 

 

新建两个MX域:

lalala.com.zone 172.25.254.11

zoe.com.zone    172.25.254.10

 

wKioL1g-ysewrCLXAABSmccE4mM238.png

 

wKioL1g-ysiDDTOVAABNqrjP1pk961.png

检测

dig -t MX westos.com

dig -t MX linux.com

 

wKiom1g-ysmzI4yqAACxtnEFfaM257.png

 

wKioL1g-ysrwlTLgAACzhK9PuZg055.png

 

vim /etc/postfix/main.cf

75 myhostname = maillinux.linux.com

99 myorigin = $mydomain

113 inet_interfaces = all

116 #inet_interfaces = localhost

164 mydestination = $myhostname, $mydomain, localhost

 

另一个邮件服务器 mailwestos.com  172.25.254.130

 

vim /etc/resolv.conf

nameserver 172.25.254.11

 

wKiom1g-ysvS4G15AAAfRdEjDJ8158.png

 

vim /etc/postfix/main.cf

75 myhostname =mailwestos.westos.com   

99 myorigin = $mydomain

113 inet_interfaces = all   打开外网和内网的25端口

116 #inet_interfaces = localhost

164 mydestination = $myhostname, $mydomain, localhost

                    我的主机名   我的域名  本地邮件

 

 

 

113)

打开端口前,默认只打开了本地的25端口

 

wKioL1g-ysuyu4b3AAA7Y7Ma97M716.png

 

写了113: inet_interfaces = all 打开外网和内网的端口。

 

wKiom1g-yszj2gfdAAB3laXCVwA966.png

 

简单命令

 

mailq           查看邮件队列

postqueue -f        重发邮件队列中的邮件

postspuser -d xxxx  删除邮件队列中只滞留的邮件  -d queue_id (delete)

mail -u root        查看root收到的邮件

postspuser -d xxxx

 

wKiom1g-ys3yrM4GAADXRchhocs254.png

 

检测

双方方可以互发邮件啦~~~

注意:接受方需要关闭防火墙,要不然收不到。

 

zoe主机给lalala主机发送!

 

wKioL1g-ys6B-50_AACrEBwyi1g313.png

 

 

mailq为滞留的邮件,可以用postqueue–f 重新发送

 

lalala主机成功接受!

 

wKiom1g-ys_RiRiYAAD-yIZQVO0072.png

 

lalala主机给zoe主机发送!

 

wKioL1g-ytCjqgvmAAAkoc0egi0554.png

 

zoe主机成功接受!

 

wKioL1g-ytHR5kZRAADiEiqkzQE810.png

 

postconf -n                     查看当前设置    -n (non-defaults)

postconf -e "inet_interfaces=localhost"     设置        -e(edit)

postconf -d | grep innet            查看默认设置    -d(defaults)



wKiom1g-ytKAORKsAAC55qPTKXY392.png

 

wKiom1g-ytPQEgRGAAGE9XqcUkQ586.png

 

 

 

 

 

收件人的别名alias

 

DNS服务器

vim /etc/aliases

admin:         root

more:          :include:/etc/moreusers群发邮件

 

 

vim /etc/moreusers

student

root

 

postalias /etc/aliases          让别名生效

systemctl restart postfix.service  

 

另一个邮件服务器

mail admin@linux.com    即为给root发

mail more@linux.com    即为群发

 

 

群发邮件

 

vim     /etc/aliases

 

wKioL1g-ytSjuXgcAAAihoGL5g0012.png

 

vim     /etc/moreusers

 


wKiom1g-ytTxQLnMAAAJ9yLXjcM102.png

 

postalias /etc/aliases          让别名生效

 

wKioL1g-ytWRsbI4AABCHoj57pU473.png

 

wKioL1g-ytbB2uE6AAF1krKpQv8543.png

 

 

出站地址伪装

 

DNS服务器

 

vim /etc/postfix/generic

 

root@lalala.com        2222222@qq.com

真域名                          假域名


wKiom1g-ytegHetIAAAtdEtO06w584.png


 

postmap generic给generic加密,生成generic.db

 

wKiom1g-ytjgMHzMAABgq0Gu0CE061.png

 

 

 postconf -d|grep generic  查看加密使用的参数

 

 

wKioL1g-ytmjHaqlAADwYQRcx7Q090.png

 

postconf -e "smtp_generic_maps=hash:/etc/postfix/generic"

把加密的文件写入/etc/postfix/main.cf 主配置文件

 

检测

收件人,受到的邮件的发送方为假域名

 

发件人为lalala.com

 

wKiom1g-ytqyp0WEAABRg0OXpx8077.png

 

收件人看到的发件人为22222222@qq.com,伪装成功~~~

 

wKioL1g-ytvAcLZOAADvaNNSUfc704.png

 

 

 

 

远程登陆邮件服务器(也可以检测邮件服务器的25端口)

telnet 172.25.254.10 25

ehlo hello

mail from:root@zoe.com

rcpt to:root@lalala.com

data

dsf

wqd

fdsdsf

22222222222

.

quit

 

用真机远程登录,zoe主机,给lalala主机发邮件

 

wKioL1g-yt3TBWV9AADfkIMkXo8406.png

 

lalala主机收到了zoe主机发的邮件~

 

wKioL1g-zJvS1v69AACv3N8ijxU453.png