马哥教育N63013-第九周作业
1、简述DNS服务器原理,并搭建主-辅服务器。
DNS:(Domain Name System,域名系统),应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp, 53/tcp
根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本
一级域名:Top Level Domain: tld
三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域arpa
通用顶级域名:com, edu, mil, gov, net, org, int
二级域名:magedu.com
三级域名:study.magedu.com
最多可达到127级域名
如:www.google.com. 这个域名,分解后含义如下:
. #表示根域
.com #表示顶级域
google.com #表示二级域
www #表示主机名
DNS服务器规则
(1) 每一个主机都知道根域在哪里;
(2) 上级必须知道下级;
(3) 下级不知道上级;
(4) 查询两段式递归查询和迭代查询;
(5) 根域不迭代(根全球有13台a-m.root-servers.net);
(6) 顶级域不迭代;
(7) 二级域服务器可以只提供权威查询不提供迭代或转发;
DNS的工作模式:
DNS查询以各种不同的方式进行解析,客户机可通过使用从以前查询获得的缓存信息就地应答查询,DNS服务器也可以使用其自身的资源记录缓存来应答查询。但更多是使用递归查询和迭代查询两种方式。
递归查询:DNS服务器收到一个域名解析请求时,如果所要检索的资源记录不在本地,DNS服务器将和自己的上一层服务器交互,获得最终的答案,并将其返回给客户
迭代查询:DNS服务器收到解析请求,首先在本地的数据库中查找是否有相应的资源记录,如果没有,则向客户提供另外一个DNS服务器的地址,客户负责把解析请求发送给新的DNS服务器地址
完整的DNS查询请求经过的流程
如:访问 www.google.com
(1)/etc/hosts:查看本地hosts文件有没有记录获取应IP地址,如果没有,进行下一步
(2)/etc/resolv.conf:查询DNS服务器,如8.8.8.8。若此DNS服务器本地有记录(如A记录)或缓存记录,则直接从本地中获取对应的IP,如果没有,进行下一步
(3)根DNS:通过8.8.8.8到根DNS服务器(.)去查询,返回.com主机的DNS服务器IP地址
(4).com:通过.com的DNS服务器去查询,返回google.com主机的DNS服务器IP地址
(5)google.com. :通过左侧的DNS服务器去查询,返回www.google.com主机的IP地址
(6)访问 www.google.com:8.8.8.8这台DNS服务器收到信息后会先把这条记录在本地,然后把查询数据结果返回客户端
在这个查询过程中,从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。
DNS工作原理:
1、当在浏览器中输入URL时,浏览器会先检查自己的缓存是否有域名IP的映射关系,有则直接使用IP进行通信
2、如浏览器没有缓存,则操作系统检查本地hosts文件是否有域名IP的映射关系,有则使用IP进行通信
3、如果hosts没有这个域名的映射,则查找本地DNS解析器缓存是否有映射关系,有则直接返回完成域名解析
4、如果还未找到映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,也就是本地DNS服务器,如果服务器已缓存了映射关系,则使用这个IP地址映射返回完成域名解析,此时解析不具有权威性
5、如果本地DNS服务器缓存已经失效,进行递归查询。
完整的查询请求经过的流程:
Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion递
归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
1、主DNS服务端配置
yum install bind -y vim /etc/named.conf #注释掉下面两行 // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; #只允许从服务器进行区域传输 allow-transfer { 从服务器IP;}; vim /etc/named.rfc1912.zones #加上这段 zone "magedu.org" { type master; file "magedu.org.zone"; }; cp -p /var/named/named.localhost /var/named/magedu.org.zone #如果没有-p,需要改权限。chgrp named magedu.org.zone vim /var/named/magedu.org.zone $TTL 1D @ IN SOA master admin.magedu.org. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master NS slave master A 10.0.0.8 slave A 10.0.0.18 systemctl start named #第一次启动服务 rndc reload #不是第一次启动服务
2、从DNS服务器配置
yum install bind -y vim /etc/named.conf // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; #不允许其它主机进行区域传输 allow-transfer { none;}; vim /etc/named.rfc1912.zones zone "magedu.org" { type slave; masters { 主服务器IP;}; file "slaves/magedu.org.slave"; }; systemctl start named #第一次启动服务 rndc reload #不是第一次启动服务 ls /var/named/slaves/magedu.org.slave #查看区域数据库文件是否生成
3、客户端测试主从DNS服务架构
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DNS1=主服务器 DNS2=从服务器 #验证从DNS服务器是否可以查询 dig www.magedu.org curl www.magedu.org #在主服务器上停止DNS服务 systemctl stop named #验证从DNS服务器仍然可以查询 dig www.magedu.org curl www.magedu.org
2、搭建并实现智能DNS。
利用view实现智能DNS
环境要求:
需要五台主机
DNS主服务器和web服务器1:10.0.0.8/24,172.16.0.8/16
web服务器2:10.0.0.7/24
web服务器3:172.16.0.7/16
DNS客户端1:10.0.0.6/24
DNS客户端2:172.16.0.6/16
前提准备
关闭SElinux
关闭防火墙
时间同步
实现步骤:
1、DNS 服务器的网卡配置
#配置两个IP地址 #eth0:10.0.0.8/24 #eth1: 172.16.0.8/16 ip a 1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:f9:8d:90 brd ff:ff:ff:ff:ff:ff inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fef9:8d90/64 scope link valid_lft forever preferred_lft forever 3: eth1: mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:f9:8d:11 brd ff:ff:ff:ff:ff:ff inet 172.16.0.8/16 brd 172.16.0.255 scope global noprefixroute eth1 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe11:8d90/64 scope link valid_lft forever preferred_lft forever
2、主DNS服务端配置文件实现 view
yum install bind -y vim /etc/named.conf #在文件最前面加下面行 acl beijingnet { 10.0.0.0/24; }; acl shanghainet { 172.16.0.0/16; }; acl othernet { any; }; #注释掉下面两行 // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; #其它略 # 创建view view beijingview { match-clients { beijingnet;}; include "/etc/named.rfc1912.zones.bj"; }; view shanghaiview { match-clients { shanghainet;}; include "/etc/named.rfc1912.zones.sh"; }; view otherview { match-clients { othernet;}; include "/etc/named.rfc1912.zones.other"; }; include "/etc/named.root.key";
3、实现区域配置文件
vim /etc/named.rfc1912.zones.bj zone "." IN { type hint; file "named.ca"; }; zone "magedu.org" { type master; file "magedu.org.zone.bj"; }; vim /etc/named.rfc1912.zones.sh zone "." IN { type hint; file "named.ca"; }; zone "magedu.org" { type master; file "magedu.org.zone.sh"; }; vim /etc/named.rfc1912.zones.other zone "." IN { type hint; file "named.ca"; }; zone "magedu.org" { type master; file "magedu.org.zone.other"; }; chgrp named /etc/named.rfc1912.zones.bj chgrp named /etc/named.rfc1912.zones.sh chgrp named /etc/named.rfc1912.zones.other
4、创建区域数据库文件
vim /var/named/magedu.org.zone.bj $TTL 1D @ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 10.0.0.8 websrv A 10.0.0.7 www CNAME websrv vim /var/named/magedu.org.zone.sh $TTL 1D @ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 10.0.0.8 websrv A 172.16.0.7 www CNAME websrv vim /var/named/magedu.org.zone.other $TTL 1D @ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 10.0.0.8 websrv A 127.0.0.1 www CNAME websrv chgrp named /var/named/magedu.org.zone.bj chgrp named /var/named/magedu.org.zone.sh chgrp named /var/named/magedu.org.zone.other systemctl start named #第一次启动服务 rndc reload #不是第一次启动服务
5、实现位于不同区域的三个WEB服务器
#分别在三台主机上安装http服务 #在web服务器1:10.0.0.8/24实现 yum install httpd echo www.magedu.org in Other > /var/www/html/index.html systemctl start httpd #在web服务器2:10.0.0.7/16 echo www.magedu.org in Beijing > /var/www/html/index.html systemctl start httpd #在web服务器3:172.16.0.7/16 yum install httpd echo www.magedu.org in Shanghai > /var/www/html/index.html systemctl start httpd
6、客户端测试
#分别在三台主机上访问 #DNS客户端1:10.0.0.6/24 实现,确保DNS指向10.0.0.8 curl www.magedu.org www.magedu.org in Beijing #DNS客户端2:172.16.0.6/16 实现,确保DNS指向172.16.0.8 curl www.magedu.org www.magedu.org in Shanghai #DNS客户端3:10.0.0.8 实现,,确保DNS指向127.0.0.1 curl www.magedu.org www.magedu.org in Other
3、使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝
iptables -A INPUT -p tcp -m multiport --dports 21,22,23,80,139,445 -j ACCEPT iptables -I INPUT 2 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -j REJECT
3、NAT原理总结
- SNAT:source NAT ,支持POSTROUTING, INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP
- DNAT:destination NAT 支持PREROUTING , OUTPUT,把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP
- PNAT: port nat,端口和IP都进行修改
4、iptables实现SNAT和DNAT,并对规则持久保存。
实现SNAT:
SNAT:基于nat表的target,适用于固定的公网IP
SNAT选项:
--to-source [ipaddr[-ipaddr]][:port[-port]]
--random
格式:iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source
ExtIP
注意: 需要开启 ip_forward
#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
#sysctl -p
范例:iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! –d 10.0.0.0/24 -j SNAT --tosource 172.18.1.6-172.18.1.9
MASQUERADE:基于nat表的target,适用于动态的公网IP,如:拨号网络
MASQUERADE选项:
--to-ports port[-port]
--random
格式:iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j MASQUERADE
范例:iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j MASQUERADE
实现DNAT:
DNAT:nat表的target,适用于端口映射,即可重定向到本机,也可以支持重定向至不同主机的不同端口,但不支持多目标,即不支持负载均衡功能
DNAT选项:
--to-destination [ipaddr[-ipaddr]][:port[-port]]
DNAT 格式:iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --to-destination InterSeverIP[:PORT]
注意: 需要开启 ip_forward
#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
#sysctl -p
范例:iptables -t nat -A PREROUTING -d 192.168.0.8 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.7
持久保存规则:
CentOS7,8
iptables-save > /PATH/TO/SOME_RULES_FILE
加载规则:
CentOS 7,8 重新载入预存规则文件中规则:
iptables-restore < /PATH/FROM/SOME_RULES_FILE