DNSiptables和NAT

Posted 会飞de冬瓜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 53 127.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

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 53 127.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 53 127.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-clients shanghainet; ;

       include "/etc/named.rfc1912.zones.gz";

;

view beijingview

       match-clients beijingnet; ;

       include "/etc/named.rfc1912.zones.zq";

;

view otherview

       match-clients othernet; ;

       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在一定程度上,能够有效的解决公网地址不足的问题。

​​DNS、iptables和NAT_dns服务器

简单地说,NAT就是在局域网内部网络中使用内部地址,而当内部节点要与外部网络进行通讯时,就在网关(可以理解为出口,打个比方就像院子的门一样)处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,NAT可以使多台计算机共享Internet连接,这一功能很好地解决了公共 IP地址紧缺的问题。通过这种方法,可以只申请一个合法IP地址,就把整个局域网中的计算机接入Internet中。这时,NAT屏蔽了内部网络,所有内部网计算机对于公共网络来说是不可见的,而内部网计算机用户通常不会意识到NAT的存在。如下图所示。这里提到的内部地址,是指在内部网络中分配给节点的私有IP地址,这个地址只能在内部网络中使用,不能被路由转发。

DNS、iptables和NAT_nat_02

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

以上是关于DNSiptables和NAT的主要内容,如果未能解决你的问题,请参考以下文章

代理服务器和NAT技术

NAT虚拟网络配置

基于 NAT(地址转换模式)构建 LVS 负载均衡

代理服务器与NAT技术

LVS调度器中NAT工作模式实验

构建基于地址转换(LVS—NAT)模式的负载均衡群集