1、简述DNS服务器原理,并搭建主-辅服务器。
DNS查询分为两种
- 递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。
- 迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。
客户端到本地DNS服务器是属于递归查询,而DNS服务器之间的交互查询就是迭代查询。
完整查询过程如下:
- 客户端想访问www.domain.com,先去查看本机hosts有没有对应的记录,如果hosts没有就访问配置文件写的本地DNS服务器。
- 本地DNS服务器如果有记录就返回给客户端,如果没有记录,根据本地DNS服务器是否配置转发器进行访问,如果没有配置就去访问13台根DNS服务器。
- 根DNS服务器收到请求后会判断.com是谁来授权管理,返回一个负责该顶级域名服务器的一个IP。
- 负责.com域的服务器收到请求如果无法解析,就会把负责domain.com解析的DNS服务器地址返回给本地DNS服务器。
- 本地DNS服务器继续访问负责domain.com域的服务器,负责domain.com域的服务器的配置文件有对应的www.domain.com的解析地址,返回给本地DNS服务器,本地DNS服务器将信息返回给客户端,并缓存一份记录。
搭建主-辅服务器
- web:10.0.0.150
- dns-master:10.0.0.151
- dns-slave:10.0.0.152
- client:10.0.0.153
web:
apt install nginx -y
vim /var/www/html/index.html

dns-master
yum install bind -y
vim /etc/named.conf

vim /etc/named.rfc1912.zones

cp -a /var/named/named.localhost /var/named/domain.com.zone
vim /var/named/domain.com.zone

systemctl start named##第一次
rndc reload##不是第一次
dns-slaver
前几步同master(略)
vim /etc/named.rfc1912.zones

systemctl start namedrndc reload #不是第一次ls /var/named/slaves/magedu.org.slave

client
修改网卡配置文件
DNS1=10.0.0.151
DNS2=10.0.0.152

停止dns-master服务 client再次进行解析

2、搭建并实现智能DNS。
- dns、web-sh:10.0.0.151、192.168.197.129
- web-bj:10.0.0.150
- client-sh:192.168.197.128
- client-bj:10.0.0.152
dns:
vim /etc/named.conf


vim /etc/named.rfc1912.zones.sh

vim /etc/named.rfc1912.zones.bj

vim /var/named/domain.com.zone.sh

vim /var/named/domain.com.zone.bj

web-bj:
安装web服务器,配置主页

rndc reload

web-sh:
安装web服务器,配置主页

client-bj:

client-sh:

3、使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝
- ssh:22/tcp
- telnet:23/tcp
- ftp:21/tcp
- web:80/tcp
iptables -AINPUT -p tcp -m multiport --dports 20:22,80 -j ACCEPT
iptables -AINPUT -p all -j REJECT

3、NAT原理总结
NAT(Network Address Translation),是指网络地址转换,基本工作原理是当私有网主机和公共网主机通信的IP包经过火墙时,火墙将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。NAT有三种类型:静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Port-Level NAT),NAPT是使用最普遍的一种转换方式又包含两种转换方式:SNAT和DNAT。
- 源NAT(Source NAT,SNAT):修改数据包的源地址。源NAT改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成,数据包伪装就是一具SNAT的例子。
-
目的NAT(Destination NAT,DNAT):修改数据包的目的地址。Destination NAT刚好与SNAT相反,它是改变第一个数据懈的目的地地址,如平衡负载、端口转发和透明代理就是属于DNAT。
nat
用户使用iptables命令在用户空间设置NAT规则。通过使用用户空间iptables命令,可以构建用户自己的定制NAT规则。所有规则存储在内核空间的nat表中。根据规则所处理的信息包类型,将规则分组在链中。要做SNAT的信息包被添加到POSTROUTING链中。要做DNAT的信息包被添加到PREROUTING链中。直接从本地出站的信息包的规则被添加到OUTPUT 链中。
4、iptables实现SNAT和DNAT,并对规则持久保存。
SNAT:
- 火墙:10.0.0.151、192.168.197.129
- web:10.0.0.152
- client:192.168.197.130
防火墙:
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
iptables -t nat -A POSTROUTING -s 192.168.197.130/32 -j SNAT --to-source 10.0.0.151

web:
yum install httpd -y
vim /var/www/html/index.html
this is snat test on 10.0.0.152

client:
网关指向火墙
curl 10.0.0.152

DNAT:
火墙:10.0.0.151、192.168.197.129
web:10.0.0.152
client:192.168.197.130
防火墙
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
iptables -t nat -A PREROUTING -d 192.168.197.129 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.152:80

client:

web:
tail /var/log/httpd/access_log

防火墙策略持久保存
iptables-save > /data/iptables.txt
vim /etc/rc.d/rc.local
iptables-restore < /data/iptables.txt

