笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述DNSiptables和NAT相关的知识,希望能为你提供帮助。
1.简述DNS服务器原理,并搭建主-辅服务器
(1)DNS服务器原理
这里假设本地某主机去请求www.sky.com域名时的流程:
a.本地主机查询本地dns缓存及本地hosts(/etc/hosts)文件中是否有www.sky.com域名的记录,如果有直接使用,如果没有则会向本地自定义的dns服务器去请求(/etc/resolv.conf);
b.dns服务器收到主机请求则查询dns服务器本地是否有www.sky.com域名的解析记录,如果有直接返回给客户端,如果没有则dns服务器直接向根服务器(.)请求查询;
c.根服务器(.)收到dns服务器的查询请求发现是查询.com域的信息,然后根服务器则返回.com域的服务器ip给到dns服务器;
d.dns服务器收到.com的服务器IP,则再次向.com的服务器请求sky.com的域名服务器ip;
e.dns服务器收到.com返回sky.com域名服务器IP则直接再次请求sky.com域名服务器,查询www的解析记录;
f.dns服务器查询到www.sky.com的解析记录后则直接返回给客户端并自己缓存此记录;
g.客户端主机则拿到www.sky.com的ip就直接访问到目标主机了,并缓存了此解析记录;(b-g阶段是一次递归查询)
(2)搭建主-辅服务器
主用DNS服务器主要编辑以下几个文件:
a.编辑/etc/named.conf,启用本机指定网口监听53端口号、指定网口接收DNS查询请求,并允许接收指定备用DNS的区域传送;
b.编辑/etc/named.rfc1912.zones文件,新增指定区域参数;
c.新建zone文件,/var/named/sky.com.zone,添加SOA,NS,A,MX等记录;
d.使用named-checkconf、named-zone检查服务端配置、区域文件配置。
e.使用systemctl start named启动DNS服务。
主用DNS配置:
yum -y install bind
vi /etc/named.conf
//
listen-on port 53127.0.0.1;
;
//
allow-query
localhost;
;
allow-transfer
192.168.0.103;
;
vi /etc/named.rfc1912.zones
zone "sky.com"
type master;
file "sankeya.vip.zone";
;
vi /var/named/sky.com.zone
$TTL 1D
@
IN
SOA
ns1 admin
(1 1h 10m 1D 1D)
NS
ns1
NS
ns2
ns1
A
192.168.0.102
ns2
A
192.168.0.103
www
A
192.168.0.104
chgrp named /var/named/sky.com.zone
chmod 640 /var/named/sky.com.zone
named-checkconf /etc/named.conf
【DNSiptables和NAT】named-checkzone sky.com sky.com.zone
systemctl start named
systemctl enable named
备用DNS主要编辑以下几个文件:
a.编辑/etc/named.conf,启用本机指定网口监听53端口号、指定网口接收DNS查询请求,不允许区域传送;
b.编辑/etc/named.rfc1912.zones文件,新增指定区域参数(type类型slave,masters指定主DNS服务器,zone文件是放在/var/named/slaves/下且是自动生成);
c.使用named-checkconf检查服务端配置。
备用DNS配置:
yum -y install bind
vi /etc/named.conf
//
listen-on port 53127.0.0.1;
;
//
allow-query
localhost;
;
allow-transfer
none;
;
vi /etc/named.rfc1912.zones
zone "sky.com"
type slave;
masters 192.168.0.102;
;
file "slaves/sky.com.zone.slave";
;
named-checkconf /etc/named.conf
systemctl start named
systemctl enable named
测试备用DNS同步效果及客户端解析结果如下:
新增1条A记录,并且将SOA内的序列号由2改成3.并使用rndc reload 重载配置文件。
vi /var/named/sky.com.zone
$TTL 1D
@
IN
SOA
ns1
admin
(3 1h 10m 1D 1D)
NS
ns1
NS
ns2
ns1
IN
A
192.168.0.102
ns2
IN
A
192.168.0.103
www
IN
A
192.168.0.104
testsync
IN
A
1.1.1.1
[root@dns-master ~]# rndc reload
server reload successful
在DNS客户端侧使用dig命令测试解析效果,分别指定主备DNS。
指定主用DNS的测试:
dig testsync.sky.com @192.168.0.102
指定备用DNS的测试:
dig testsync.sky.com @192.168.0.103
2.搭建并实现智能DNS
(1)定义ACL列表,定义view功能模块
vi /etc/named.conf
//ACL定义归属地IP列表
acl shanghainet
192.168.0.101;
;
acl beijingnet
192.168.0.250;
;
acl othernet
any;
;
//options模块中注释掉监听和查询的限制,这里还定义成主DNS服务器
options
//
listen-on port 53127.0.0.1;
;
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
localhost;
;
allow-transfer
192.168.0.103;
;
//定义view模块,将此文件中根区域的部分删除,将在include里中指定的文件里再补充。
view shanghaiview
match-clientsshanghainet;
;
include "/etc/named.rfc1912.zones.gz";
;
view beijingview
match-clientsbeijingnet;
;
include "/etc/named.rfc1912.zones.zq";
;
view otherview
match-clientsothernet;
;
include "/etc/named.rfc1912.zones.other";
;
(2)定义zone文件
//参考named.rfc1912.zones文件,增加根区域配置和对应归属区域配置
cp
-p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh
cp
-p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
cp
-p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.other
//编辑/etc/named.rfc1912.zones.sh如下:
vi /etc/named.rfc1912.zones.sh
zone "." IN
type hint;
file "named.ca";
;
zone "sky.com" IN
type master;
file "sky.com.zone.sh";
;
//编辑/etc/named.rfc1912.zones.bj如下:
vi /etc/named.rfc1912.zones.bj
zone "." IN
type hint;
file "named.ca";
;
zone "sky.com" IN
type master;
file "sky.com.zone.bj";
;
//编辑/etc/named.rfc1912.zones.other如下:
vi /etc/named.rfc1912.zones.other
zone "." IN
type hint;
file "named.ca";
;
zone "sky.com" IN
type master;
file "sky.com.zone.other";
;
(3)定义解析数据库
编辑三个区域数据库文件
vi /var/named/sky.com.zone.sh
$TTL 1D
@
IN
SOA
ns1
admin
(7 1h 10m 1D 1D)
NS
ns1
NS
ns2
sh
IN
NS
ns3
ns1
IN
A
192.168.0.102
ns2
IN
A
192.168.0.103
ns3
IN
A
192.168.0.104
websrv
IN
A
192.168.0.105
www
IN
CNAME
websrv
vi /var/named/sky.com.zone.bj
$TTL 1D
@
IN
SOA
ns1
admin
(7 1h 10m 1D 1D)
NS
ns1
NS
ns2
sh
IN
NS
ns3
ns1
IN
A
192.168.0.102
ns2
IN
A
192.168.0.103
ns3
IN
A
192.168.0.104
websrv
IN
A
192.168.0.106
www
In
CNAME
websrv
vi /var/named/sky.com.zone.qita
$TTL 1D
@
IN
SOA
ns1
admin
(7 1h 10m 1D 1D)
NS
ns1
NS
ns2
sh
IN
NS
ns3
ns1
IN
A
192.168.0.102
ns2
IN
A
192.168.0.103
ns3
IN
A
192.168.0.104
websrv
IN
A
6.6.6.6
www
IN
CNAME
websrv
(4)启动服务
named-checkconf
named-checkzone /etc/named.rfc1912.zones.sh /var/named/sankeya.vip.zone.sh
named-checkzone /etc/named.rfc1912.zones.bj /var/named/sankeya.vip.zone.bj
named-checkzone /etc/named.rfc1912.zones.other /var/named/sankeya.vip.zone.other
systemctl start named
ss -ntl
(5)验证解析效果
从一台客户机验证
dig www.sky.com @192.168.0.102
3.使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝
iptables -I INPUT -p tcp -m multiport --dports 21,23,80,139,445 -j ACCEPT
iptables -A INPUT -j REJECT
4.NAT原理总结
?NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术,如下图所示。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题。???
简单地说,NAT就是在局域网内部网络中使用内部地址,而当内部节点要与外部网络进行通讯时,就在网关(可以理解为出口,打个比方就像院子的门一样)处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,NAT可以使多台计算机共享Internet连接,这一功能很好地解决了公共 IP地址紧缺的问题。通过这种方法,可以只申请一个合法IP地址,就把整个局域网中的计算机接入Internet中。这时,NAT屏蔽了内部网络,所有内部网计算机对于公共网络来说是不可见的,而内部网计算机用户通常不会意识到NAT的存在。如下图所示。这里提到的内部地址,是指在内部网络中分配给节点的私有IP地址,这个地址只能在内部网络中使用,不能被路由转发。
??
NAT 功能通常被集成到路由器、防火墙、ISDN路由器或者单独的NAT设备中。比如Cisco路由器中已经加入这一功能,网络管理员只需在路由器的ios中设置NAT功能,就可以实现对内部网络的屏蔽。再比如防火墙将WEB Server的内部地址192.168.1.1映射为外部地址202.96.23.11,外部访问202.96.23.11地址实际上就是访问访问 192.168.1.1。
5.iptables实现SNAT和DNAT,并对规则持久保存
(1)实现SNAT和DNAT都需要开启内核数据转发功能
?vi /etc/sysctl.conf
?
net.ipv4.ip_forward=1
?
SNAT格式:
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source ExtIP
DNAT 格式:
iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --todestination InterSeverIP[:PORT]
?
(2)规则永久保存
iptables-save >
/PATH/TO/SOME_RULES_FILE
推荐阅读
- Linux下的资源监控器:btop
- Linux哪个发行版本适合初学者?Linux基础入门!
- Linux驱动分析之LCD驱动架构
- 严重的 DDoS 攻击澳大利亚主要宽带提供商
- 目前该不该入坑鸿蒙
- WSUs IMPORT出错
- -shell脚本基础
- (服务运维)存储类型ftp服务和vsftpd搭建
- redis事务