DNS是“Domain Name System“的缩写,DNS实现了主机名到IP地址的映射解析。在网络中各主机之间是经过IP地址来通讯寻址的,可是IP地址难记,人类较容易记住的主机名,若是但愿经过主机名来进行通讯,则须要DNS来完成大量的主机名和IP地址的映射解析工做。DNS采用倒置的树状结构,分布式、分层级的主机名管理结构。
DNS查询分红递归查询和迭代查询,递归查询表示查询请求方发出请求后,接收方会经过屡次查询,最终把对应的结果回复给请求方(多出如今客户主机到本地DNS服务器之间);迭代查询表示查询请求方发出请求后,接收方的本地数据库中无对应信息,则告之请求方要向根名称服务器查询,而后再一级一级向下查询,这样查询请求方通过屡次自主查询后才会获得结果(多出如今本地DNS服务器和处于其层次之上的其它多个DNS服务器之间)。
DNS服务器类型有:(1)主名称服务器,存储并维护所管辖区域的域结构信息,并提供精确查询主机名和IP的对应关系。(2)从名称服务器,它从主名称服务器同步域结构信息,也能提供精确查询,但它不去更新维护域结构信息。(3)缓存名称服务,缓存查询过的域信息,用于回答之后相同的查询请求。其内域信息设置过时时间,它能够提供快速查询但不是精确查询,由于其上的信息可能会过时。html
搭建DNS主从服务器。假设主DNS服务器IP为192.168.1.100,从DNS服务器IP为192.168.1.101
(1)登陆主DNS服务器和从DNS服务器上安装DNS服务器软件
root用户执行 yum install bind
(2)而后修改主DNS服务器上的DNS主配置文件/etc/named.confweb
options {
listen-on port 53 { any; }; 监听端口和哪些主机能够访问解析,any表示全部
directory “/var/named”; 数据库文件的目录位置
allow-query { any; }; 容许哪些主机请求查询
recursion yes; 将本身视为客户端的一种查询方式
zone “.” IN {
type hint;
file “named.ca”;
};shell zone “magedu.com” IN {
type master;
file “magedu.com”;
allow-transfer{192.168.1.101;} 定义哪些从DNS服务器能够同步数据,多个IP之间以分号分隔,且最后以分号结尾。
}数据库 zone “1.168.192.in-addr.arpa” IN {
type master;
file “named.192.168.1”;
allow-transfer{192.168.1.101;}
}vim
(3)修改从DNS服务器上的DNS主配置文件/etc/named.conf
缓存
options {
listen-on port 53 { any; }; 监听端口和哪些主机能够访问解析,any表示全部
directory “/var/named”; 数据库文件的目录位置
allow-query { any; }; 容许哪些主机请求查询
recursion yes; 将本身视为客户端的一种查询方式
zone “.” IN {
type hint;
file “named.ca”;
};安全 zone “magedu.com” IN {
type slave; 表示本机是从DNS服务器
file “slaves/magedu.com”; 表示同步后的文件放置在哪里,这是相对于/var/named/目录的相对路径
masters{192.168.1.100;} 定义主服务器地址
}服务器 zone “1.168.192.in-addr.arpa” IN {
type slave;
file “slaves/named.192.168.1”;
masters{192.168.1.100;}
}网络
(4)修改主DNS服务器的域名的解析库文件,从DNS服务器不须要定义
正向解析文件:/var/named/magedu.com
分布式
$TTL 86400
$ORIGIN magedu.com.
@ IN SOA ns1.magedu.com. admin.magedu.com. (
2019011301
1H
5M
1W
86400 )
@ IN NS ns1.magedu.com.
@ IN NS slave.magedu.com.
@ IN MX 10 mail.magedu.com.
ns1 IN A 192.168.1.110
slave IN A 192.168.1.111
www IN A 192.168.1.110
ftp IN A 192.168.1.110
web IN A CNAME ftp
说明:增长了两条slave的记录。
反向解析文件:/var/named/named.192.168.1
$TTL 86400
@ IN SOA ns1.magedu.com. admin.magedu.com. (
2019011301
1H
5M
1W
86400 )
@ IN NS ns1.magedu.com.
@ IN NS slave.magedu.com.
110 IN PTR ns1.magedu.com.
111 IN PTR slave.magedu.com.
110 IN PTR www
110 IN PTR ftp
110 IN PTR web
(5)重启主DNS服务器和从DNS服务器上的named服务
# cd /var/named
(仅主DNS服务器执行)# chown named:named named.192.168.1 magedu.com
# service named restart
(6)观察
观察从DNS服务器上的解析库文件是否进行同步,位置于/var/named目录下
观察日志文件:/var/log/messages
子域受权:
在本域名服务器上的正向解析文件定义子域
# vim /var/named/magedu.com
$TTL 86400
$ORIGIN magedu.com.
@ IN SOA ns1.magedu.com. admin.magedu.com. (
201901130
1H
5M
1W
86400 )
@ IN NS ns1.magedu.com.
@ IN NS slave.magedu.com.
ops.magedu.com. IN NS ns1.ops.magedu.com. 添加NS记录
@ IN MX 10 mail.magedu.com.
ns1 IN A 192.168.1.110
ns1.ops.magedu.com. IN A 192.168.1.120 添加对应的A记录
slave IN A 192.168.1.111
www IN A 192.168.1.110
ftp IN A 192.168.1.110
web IN A CNAME ftp
固然子域还须要有对应的子域的解析库文件,配置格式与上级域相似。这样才能对子域进行解析。
(1)HTTP服务:
HTTP是一个属于应用层的面向对象的协议,因为其简捷、快速的方式,适用于分布式超媒体信息系统。它的主要特色以下:
(1.1)支持客户/服务器模式
(1.2) 简单快速:客户向服务器请求服务时,只需传送请求方法和路径,常见的请求方法有:GET、POST和HEAT。
(1.3)灵活:HTTP容许传输任意类型的数据对象
(1.4)无链接:限制每次链接只处理一个请求
(1.5)无状态:HTTP协议为无状态协议。
常见的HTTP服务器为:Apache 和 Nginx
(2)实现基于用户的访问控制
下面以basic认证机制来实现基于用户的访问控制
(2.1)定义安全域
<Directory “/devops/html/“>
Options None
AllowOverride None
AuthType Basic
AuthName “Only for user who Regist before”
AuthUserFile /etc/httpd/users/.htpasswd
Require user user1 user2
这里表示仅容许user1和user2,且他们出现于AuthUserFile文件中,这些用户为虚拟用户,而非系统用户
(2.2)提供用户的帐号文件
使用htpasswd命令进行维护
htpasswd [OPTIONS] passwdfile userName
选项有:
-c :添加第一个用户时建立此文件
-m:以md5格式加密用户密码存放
-s:以sha格式加密用户密码存放
-D:删除指定用户
(2.3)组认证
<Directory “/devops/html/“>
Options None
AllowOverride None
AuthType Basic
AuthName “Only for user who Regist before”
AuthUserFile /etc/httpd/users/.htpasswd
AuthGroupFile /etc/httpd/users/.htgroup
Require group group1 group2
而后在组文件中每行定义一个组,格式为
group1: user1 user2
group2: user3 user4
(3)实现虚拟主机:
一个物理主机能够服务于多个站点,每一个站点能够经过一个或多个虚拟主机来实现,开启虚拟主机要首先关闭Main中心主机,即要注释DocumentRoot指令。
实现虚拟主机的方式有三种:
(3.1)基于IP,要求全部的IP地址都是有效的,且能用于通讯
<VirtualHost 192.168.10.51:80> ServerName www.foo.com DocumentRoot /vhost/foo.com/htdocs/ </VirtualHost> <VirtualHost 192.168.10.61:80> ServerName www.bar.com DocumentRoot /vhost/bar.com/htdocs/ </VirtualHost>
(3.2)基于Port
<VirtualHost 192.168.10.51:80> ServerName www.foo.com DocumentRoot /vhost/foo.com/htdocs/ </VirtualHost> <VirtualHost 192.168.10.51:8080> ServerName www.bar.com DocumentRoot /vhost/bar.com/htdocs/ </VirtualHost>
(3.3) 基于FQDN
<VirtualHost 192.168.10.51:80> ServerName www.foo.com DocumentRoot /vhost/foo.com/htdocs/ </VirtualHost> <VirtualHost 192.168.10.51:80> ServerName www.bar.com DocumentRoot /vhost/bar.com/htdocs/ </VirtualHost>
(4)实现https:
https即http over ssl ,其经过https://来访问,对应的默认访问端口为443。注意SSL会话是基于IP地址建立,因此单IP的主机上,仅可使用一个https虚拟主机。
(4.1)为服务器申请数字证书
建立私有CA
#openssl genrsa -out rootkey.pem 2048 #openssl req -new -key rootkey.pem -out root.csr #openssl x509 -req -days 365 -extensions v3_ca -signkey rootkey.pem -in root.csr -out root.crt
建立服务器证书密钥
openssl genrsa -out serverkey.pem 2048
在服务器建立证书签署请求
openssl req -new -key serverkey.pem -out server.csr
CA签证
openssl x509 -req -days 3650 -extensions v3_req -in server.csr -CA root.crt -CAkey rootkey.pem -CAcreateserial -out server.crt
(4.2)配置httpd
支持使用ssl
,及使用的证书文件
yum -y install mod_ssl
配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot ServerName SSLCertificateFile 服务器证书文件crt SSLCertificateKeyFile 服务器证书密钥pem