第九周提交
1、简述DNS服务器原理,并搭建主-辅服务器。
DNS服务器原理:
- 客户端需要查询一个主机名如X.XX.COM,将查询请求发给DNS服务器。
- DNS服务器根据“递归查询”或“迭代查询”回复主机IP地址或DNS服务器地址。
递归查询方式:
- DNS服务器在自己的库或缓存查找,如果找到了就回复,没有找到就转发给根服务器查找。
- 根服务器回复一级域名DNS服务器地址。
- DNS服务器向一级域名DNS服务器查询。一级域名服务器如果找到回复IP,如果没找到回复对应的二级域名服务器地址。
- DNS服务器重复3的过程直到找到或最后一级回复没有,并回复给客户端最终结果。
迭代查询方式:
- DNS服务器在自己的库或缓存查找,如果找到了就回复,没有找到就转发给根服务器查找。
- 根服务器回复一级域名DNS服务器地址。本DNS服务器把一级域名服务器IP回复客户端。
- 客户端向一级域名服务器查找,如果一级域名服务器如果找到回复IP,如果没找到回复对应的二级域名服务器地址。
- 客户端重复3的过程,直到找到或最后一级回复没有。
搭建主辅DNS服务器
1登陆两台DNS服务器安装bind
yum -y install bind
2修改两台DNS服务器主配置文件
vim /etc/named.conf 修改以下两行配置
listen-on port 53 { localhost; };
// allow-query { localhost; };
3新建域
vim /etc/named.rfc1912.zones
zone "testcompany.local" IN{
type master;
file "testcompany.local.zone";
allow-update { none; };
};
4检查主配置文件语法正确性
named-checkconf
5配置数据文件
$TTL 3H
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS masterns
NS slavedns1
www A 10.0.0.7
masterns A 10.0.0.17
slavedns1 A 10.0.0.27
6完成后检查配置文件语法正确性
named-checkzone "testcompany.local" /var/named/testcompany.local.zone
7启动named服务并通过客户端测试
systemctl start named
[root@centos7_7 ~]# dig www.testcompany.local
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> www.testcompany.local
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48696
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.testcompany.local. IN A
;; ANSWER SECTION:
www.testcompany.local. 10800 IN A 10.0.0.7
;; AUTHORITY SECTION:
testcompany.local. 10800 IN NS masterns.testcompany.local.
testcompany.local. 10800 IN NS slavedns1.testcompany.local.
;; ADDITIONAL SECTION:
masterns.testcompany.local. 10800 IN A 10.0.0.17
slavedns1.testcompany.local. 10800 IN A 10.0.0.27
;; Query time: 1 msec
;; SERVER: 10.0.0.17#53(10.0.0.17)
;; WHEN: 五 12月 03 23:44:58 CST 2021
;; MSG SIZE rcvd: 145
8配置从服务器域
zone "testcompany.local" IN{
type slave;
masters {10.0.0.17;};
file "slaves/testcompany.local.slave";
};
9启动从服务器
systemctl start named
2、搭建并实现智能DNS。
准备5台测试机子
10.0.0.7 客户端1
192.168.84.8 客户端2
10.0.0.17、192.168.84.17 DNS服务器 双IP地址
10.0.0.37 WEB服务器1
192.168.84.27 Web服务器2
用于实现
客户端1访问www.testcompany.local 解析为10.0.0.37
客户端2访问www.testcompany.local 解析为192.168.84.27
配置过程
客户端安装bind-utils 用于调试
yum -y install bind-utils
DNS服务器安装bind
yum -y install bind bind-utils
配置DNS服务器主配置文件
vim /etc/named.conf
修改以下两项
listen-on port 53 { localhost; };
// allow-query { localhost; };
增加以下内容
acl fujiannet {
10.0.0.0/24;
};
acl guandongnet {
192.168.84.0/24;
};
acl othernet {
any;
};
view fujianview {
match-clients { fujiannet ;};
include "/etc/named.rfc1912.zones.fj";
};
view guandongview {
match-clients { guandongnet; };
include "/etc/named.rfc1912.zones.gd";
};
view otherview{
match-clients {othernet;};
include "/etc/named.rfc1912.zones.other";
};
删除其他不需要的域
配置域文件
[root@centos7_17 ~]# cat /etc/named.rfc1912.zones.fj
zone "." IN {
type hint;
file "named.ca";
};
zone "testcompany.local" IN {
type master;
file "testcompany.local.zone.fj" ;
};
[root@centos7_17 ~]# cat /etc/named.rfc1912.zones.gd
zone "." IN {
type hint;
file "named.ca";
};
zone "testcompany.local" IN {
type master;
file "testcompany.local.zone.gd" ;
};
[root@centos7_17 ~]# cat /etc/named.rfc1912.zones.other
zone "." IN {
type hint;
file "named.ca";
};
zone "testcompany.local" IN {
type master;
file "testcompany.local.zone.other" ;
};
并修改所有者和权限
chown root:named /etc/named.rfc1912.zones.*
chown 640 /etc/named.rfc1912.zones.*
语法检查
named-checkconf
配置DNS数据文件
cat /var/named/testcompany.local.zone.fj
$TTL 3H
@ IN SOA testcompany.local rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.0.17
websrv A 10.0.0.37
www CNAME websrv
cat /var/named/testcompany.local.zone.gd
$TTL 3H
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.84.17
www A 192.168.84.27
cat /var/named/testcompany.local.zone.other
$TTL 3H
@ IN SOA testcompany.local rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.0.17
websrv A 127.0.0.1
www CNAME websrv
启动named服务
systemctl start named
客户端测试
[root@centos7_7 ~]# curl http://www.testcompany.local
10.0.0.37 Server
[root@centos8 ~]# curl http://www.testcompany.local
192.168.84.27 Server
3、使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝
iptables -A INPUT -m multiport -p tcp --dports 21:23,80 -j ACCEPT
iptables -A INPUT -j REJECT
4、NAT原理总结
NAT分为SNAT 源NAT、DNAT 目的NAT
源NAT一般用于客户端通过防火墙或路由器上网
- 数据包从内网地址如10.0.0.2发到防火墙。
- 防火墙将源IP地址由内网10.0.0.2替换为自己的外网IP 如218.85.157.99,记录下客户端源端口并转发到互联网。
- 互联网服务器回包到防火墙,防火墙根据源端口,将目的IP地址由218.85.157.99替换为客户端IP 10.0.0.2并转发给客户端。
目的NAT一般用于发布内网应用
1、互联网主机XXX访问内网主机web服务,并将数据包发给防火墙。
2、防火墙收到互联网主机访问218.85.157.99的80端口包时,将包目的IP地址替换为内网主要10.0.0.2地址,并转发给客户端。
3、客户端回包经过防火墙,防火墙将10.0.0.2转为218.85.157.99,发给互联网主机。
5、iptables实现SNAT和DNAT,并对规则持久保存。
启用端口转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
配置iptables策略
SNAT策略
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT
--to-source 218.85.157.99
DNAT策略
iptables -t nat -A PREROUTING -d 218.85.157.99 -p tcp --dport 80
-j DNAT --to-destination 192.168.1.2:8080
持久保存
yum -y install iptables-services
systemctl enable --now iptables.service
修改后保存
iptables-save > /etc/sysconfig/iptables
启动iptables服务器,系统会加载iptables规则