1、简述DNS服务器原理,并搭建主-辅服务器。
DNS服务器简述:
DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。基于C/S架构,服务器端口:53/udp, 53/tcp
DNS服务器原理:
DNS的主要作用就是将主机名解析成IP地址的过程,通过配置DNS服务器地址,主机不需要知道对应的IP地址就能通过主机名的形式访问互联网。
查询流程主要有:Client -->本机hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion递归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS·····
递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询
迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需 要发起多次查询。
搭建主-辅服务器:
准备服务器:
DNS主:10.0.0.72
DNS从:10.0.0.73
client:10.0.0.71
目标server:10.0.0.84
第一步:DNS主配置
安装bind 和 bind-utils
yum -y install bind bind-utils
编辑/etc/named.conf
options {
listen-on port 53 { localhost; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
allow-transfer {10.0.0.73};
编辑文件/etc/named.rfc1912.zones,添加下面内容:
zone "magedu.org" IN {
type master;
file "magedu.org.zone";
};
按照参考文件创建个zone文件,并编辑下面内容:
cp -p /var/named/named.localhost /var/named/magedu.org.zone
启动服务
systemctl enable --now named 第一次启动
rndc reload 非首次启动,直接加载配置文件
第二部:从服务器配置
安装bind和bind-utils
yum -y install bind bind-utils
编辑/etc/named.conf
options {
listen-on port 53 { localhost; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
allow-transfer { none;};
编辑文件/etc/named.rfc1912.zones,添加下面内容:
zone "magedu.org" IN {
type slave;
master {10.0.0.72;};
file "slave/magedu.org.slave";
};
systemctl enable --now named 第一次启动
rndc reload 非首次启动,直接加载配置文件
检查配置文件是否生成:
检验:
在客户端安装DNS工具:
yum -y install bind-utils
检验结果:
dig www.magedu.org
curl www.magedu.org
停止主服务器,依旧可以访问
2、搭建并实现智能DNS。
实验准备:
web服务器1:10.0.0.81
web服务器2:100.0.0.82
DNS服务器:10.0.0.72
客户端1:10.0.0.71
客户端2:100.0.0.73
准备环境:单独访问可以访问。
实验部署:
第一步:DNS服务器安装bind
yum -y install bind
第二步:编辑DNS服务器配置文件/etc/named.conf
添加下面内容:
acl 10_area {
10.0.0.0/24;
};
acl 100_area {
10.0.0.0/24;
};
view 10_area {
match-clients { 10_area;};
include "/etc/named.rfc1912.zones.10";
};
view 100_area {
match-clients { 100_area;};
include "/etc/named.rfc1912.zones.100";
};
将该文件内容:
zone "." IN {
type hint;
file "named.ca";
};
移动到:/etc/named.rfc1912.zones文件内。
第三步:配置区域文件:
我将区域文件拷贝了两份:分别是10和100结尾。需要和配置文件的内容对应。
分别对2个文件进行编辑,更改为对应配置文件:
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.10或者100";
};
第四步:创建区域数据库:
编辑文件/var/named/magedu.org.zone.10
文件 /var/named/magedu.org.zone.100同样更改即可。
第五步:验证配置文件。
named-checkconf
启动服务器
实验测试:
再客户端配置好dns服务器。进行测试:
客户端1测试:
客户端2测试:
实验完成
3、使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝
关闭firewall:systemctl stop firewalld
yum -y install iptables-services //安装iptables服务
systemctl enable --now iptables //启用iptables
设ssh、telnet 、ftp、均为默认端口:
iptables -A INPUT -d 10.0.0.71 -p tcp -m multiport --dports 20:23,80 -j ACCEPT
iptables -A INPUT -j REJECT
4、NAT原理总结
NAT网络地址转换,NAT分为源地址转换SNAT、目标地址转换DNAT、端口地址转换PANT。NAT解决了IPV4地址不足的问题。同时也保护了内网的安全。
SNAT:让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP。
DNAT:把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP。
PNAT:端口和IP都进行修改
5、iptables实现SNAT和DNAT,并对规则持久保存。
实验准备:
客户端服务器:10.0.0.71/24
NAT防火墙服务器:
10.0.0.72/24
100.0.0.72/24
服务端服务器:100.0.0.73/24
SNAT实现:
为了实验,我在服务端设置了个防火墙策略,拒绝10.0.0.71访问。如果客户端想要访问服务端,只能通过SNAT实现,或者更改IP。
iptables -A INPUT -s 10.0.0.71 -j REJECT
客户端测试:
配置SNAT,将10.0.0.71转换为10.0.0.100
NAT防火墙配置:
1、iptables -t nat -A POSTROUTING -s 10.0.0.71 -j SNAT --to-source 10.0.0.100
2、开启 ip_forward
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
客户端测试连通性:
SNAT配置完成
DNAT配置:
DNAT的实现方式,我这次通过服务端的服务器来进行测试,服务端访问10.0.0.70的地址转换为10.0.0.71 这样就实现DNAT。
未做策略前服务端服务器ping 10.0.0.70
在NAT防火墙服务器配置:
iptables -t nat -A PREROUTING -d 10.0.0.70 -j DNAT --to-destination 10.0.0.71
服务端服务器再次测试:
DNAT实现完成。
规则持久保存:
systemctl enable iptables
方法1:保存防火墙的配置在/etc/rc.local中,每次开机自动运行一次脚本。该文件需要添加可执行权限。
方法2:iptables-save > /etc/sysconfig/iptables