一、功能描述

a)DNS serverWEB server使用内网地址,但允许外网通过防火墙的外网地址访问;(DNAT

b)DNS serverWEB server解析时,内网用户指向内网地址,外网用户指向防火墙外网地址。

c)尽可能多的安全限制策略,但不影响正常访问。

iptables地址转换机制实例_iptables

二、规划

1、实现

DNAT实现外网对内网服务器资源的访问

SNAT实现内网对外网资源的访问

view实现DNS分割

2、规划

内网为172.16.0.0/16 网关地址172.16.251.254

                           DNS server172.16.251.219/16域:sunlinux.com.                                        

          WEB server172.16.251.218/16FQDN:www.sunlinux.com

防火墙地址

内网地址:172.16.251.254/16

外网地址:192.168.0.200/24

外网测试机地址(开启Web服务):

IP192.168.0.201/24

网关:192.168.0.200/24

DNS192.168.0.200/24

三、实现

配置DNS服务

       #vim /etc/named.conf

利用ACL分割内外网

acl inter{ 172.16.0.0/16; };        #内网地址

acl outer{ ! 172.16.0.0/16; any; };  #非内网地址,或者任意地址,这里也可以直接写成任意地址


利用view分割DNS

view inter {

       match-clients { inter; };

       zone "." IN {

       type hint;

       file "named.ca";

       };                                                    

       zone "sunlinux.com." IN {

       type master;

       file "sunlinux.com.int";

       };

};


view outer {

       match-clients { outer; };

       zone "." IN {

       type hint;

       file "named.ca";

       };

       zone "sunlinux.com." IN {

       type master;

       file "sunlinux.com.out";

       };

};

#注意事项#

view的优先级自上到下,若上面匹配到之后,后面的将不再进行匹配。

编辑named数据文件

对应内网

vim /etc/named/sunlinux.com.int

$TTL 600

@   IN  SOA    dns.sunlinux.com.ad.sunlinux.com. (

                       2014032812

                       2H

                       10M

                       2D

                       1D

                       )

       IN     NS      dns.sunlinux.com.

dns     IN     A       172.16.251.219        # 这是个内网地址

www     IN      A     172.16.251.218#指向内网地址

对应外网

vim /etc/named/sunlinux.com.out

$TTL 600

@   IN  SOA    dns.sunlinux.com.ad.sunlinux.com. (

                       2014032812

                       2H

                       10M

                       2D

                       1D

                       )

       IN     NS      dns.sunlinux.com.

dns     IN     A       192.168.0.200   # 这里不能用内网地址(1)

www    IN      A      192.168.0.200 #防火墙外网地址

检查语法并启动

                  #service named configtest

                  #service named start


配置内网WEB服务器(主要设置测试页面)

vim/var/www/cgi-bin/hostip.sh     (cgi机制)

#!/bin/bash

#

cat << EOF

Content-Type:text/html


`ifconfig`

EOF

chmod +x/var/www/cgi-bin/hostip.sh

配置防火墙iptables

打开网络间转发功能并使其生效

# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1   # 这项改成1

# sysctl -p

编写防火墙规则

        DNAT

#iptables -t nat -A PREROUTING -d 192.168.0.200-p tcp --dport 80 -j DNAT --to-destination 172.16.251.218:80  

#iptables -t nat -A PREROUTING -d192.168.0.200 -p udp --dport 53 -j DNAT --to-destination 172.16.251.219:53

#iptables -t nat -A PREROUTING -d192.168.0.200 -p tcp --dport 53 -j DNAT --to-destination 172.16.251.219:53

        SNAT

# iptables -t nat -A POSTROUTING -s 172.16.0.0/16-j SNAT --to-source 192.16.0.200

启动并查看

        #service iptables start

        #iptables -t nat -L -n -v

iptables地址转换机制实例_DNS_02

四、启动测试

在外网主机上测试

        DNS测试

iptables地址转换机制实例_DNS_03

                     WEB测试

iptables地址转换机制实例_DNS_04

在内网主机上测试

                     DNS测试

iptables地址转换机制实例_DNS_05

外网访问能力查看

iptables地址转换机制实例_NAT_06

iptables地址转换机制实例_iptables_07

1

若使用内网真实地址:在外网做测试时会显示DNS的服务器地址是个内网地址如图:

iptables地址转换机制实例_DNS_08

这当然不是我们想要的,对于外网来说,解析到的东西都应该指向外网。所以dns对应项改成防火墙地址。

这样能够实现内网DNS server对外网的伪装。