第九周作业
1、简述DNS服务器原理,并搭建主-辅服务器。
(1) 简述DNS服务器原理:
① 当在浏览器中输入URL时,浏览器会先检查自己的缓存是否有域名IP的映射关系,有则直接使用IP进行通信。
② 如果浏览器中没有缓存,则操作系统检查本地hosts文件是否有域名IP的映射关系,有则使用IP进行通信。
③ 如果hosts没有这个域名的映射,则查找本地DNS解析缓存是否有映射关系,有则直接返回完全域名解析。
④ 如果还没有找打映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,也就是本地DNS服务器,如果服务器已缓存映射关系,则使用这个IP地址映射返回完成域名解析,此时解析不具有权威性。
⑤ 如果本地DNS服务器缓存已经失效,进行递归查询。
(2) 搭建主辅DNS服务器
① 1)提前准备关闭SELinux: nano /etc/selinux/confin SELINUX=disable
2)关闭防火墙:systemctl disabled --now firwalld
3)时间同步
② 安装bind:yum install bind -y
③ 在bind的配置文件中注释西下面两行:
vim /etc/named.conf
//listen-on port 53{127.0.0.1;};
//allow-query{从服务器IP;};
④ 在以下文件中添加:
vim /etc/named.rfc1912.zones
zone “magedu.org”{
type master;
file “magedu.org.zone”
}
⑤ 设置DNS区域数据文件
cp -p /var/named/named.localhost /var/named/magedu.org.zone
并在/var/named/magedu.org.zone中设置
⑥ 启动服务:systemctl start named
⑦ 辅服务器设置和主服务器基本相同
1) 不同处:vim /etc/named.rfc1912.zones
zone “magedu.org”{
type slave;
masters{主服务器IP;};
file “slaves/magede.org.slave”
};
2) 启动服务: syetemctl start named
⑧ 客户端配置:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=主服务器
DNS2=辅服务器
2、搭建并实现智能DNS。
(1) 安装bind :yum install bind -y
(2) 修改bind配置文件:
vim /etc/named.conf
1)在文件最前面加上以下行,并注释两行
acl beijingnet {
10.0.0.0/24;
};
acl shanghainet {
172.16.0.0/16;
};
acl othernet {
any;
}
// linsten-on port 53 {127.0.0.1;};
// allow-query { localhost; };
(3) 创建view
1)view beijingview {
match-clients {beijingnet;};
include “/etc/named.rfc1912.zones.bj”;
};
2)view shanghaiview {
match-clients {shanghainet;};
include “/etc/named.rfc1912.zones.bj”;
};
3)view otherview {
match-clients {othernet;};
include “/etc/named.rfc1912.zones.bj”;
};
include “/etc/named.root.key”;
(4) 实现区域配置文件
1) vim /etc/named.rfc1912/zones.bj
zone “.” IN {
type hint;
file “named.ca”;
};
zone “magedu.org” {
type master ;
file “magedu.org.zone.bj”;
};
2) vim /etc/named.rfc1912/zones.sh
zone “.” IN {
type hint;
file “named.ca”;
};
zone “magedu.org” {
type master ;
file “magedu.org.zone.sh”;
};
3) 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
(5) 创建区域数据文件
1) 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 CHAME websrv
2) 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 CHAME websrv
3) 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.01
www CHAME 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
(6) 启动服务:systemctl start named
3、使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝
iptables -A INPUT -p tcp -m multiport --dports 21,22,23,80 -j ACCEPT
iptables -A INPUT -j REJECT
4、NAT原理总结
(1) 地址转换:NAT的基本工作原理,当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源或者目的IP在私有IP和NAT的公共IP之间进行切换。
(2) 连接跟踪:NAT Gateway在收到响应包,就需要判断将数据包转发给谁。此时如果子网内仅有少量客户机,可以使用静态NAT手工指定;但是如果内网有多台客户机,并且各自访问不同的网站,这个时候需要连接跟踪。
(3) 端口转换:当仅只有一台客户机访问服务器时,NAT Gateway只须更改数据包的源IP或者目的IP即可正常通讯。但是如果Client A和Clien B同时访问Web Server,那么当NAT Gateway收到响应包的时候,就无法判断将数据包转发给哪台客户机。
5、iptables实现SNAT和DNAT,并对规则持久保存。
(1) 开启内核数据转发功能:vim /etc/sysctl.conf
net.ipv4.ip_forward=1
(2) SNAT: iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.126.1
(3) DNAT: iptables -t nat -A PREOUTING -d 192.168.126.1 -p tcp --dport 80 -j DNAT --to-destination10.0.0.1:80
(4) 规则持久保存:
CentOS 7,8: iptables -save > /PATH/TO/SOME_FILE
CenrtOS 6:将规则覆盖保存至/etc/sysconfig/iptableswen 文件中:service iptables save
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通