一、功能描述
a)DNS server和WEB server使用内网地址,但允许外网通过防火墙的外网地址访问;(DNAT)
b)DNS server对WEB server解析时,内网用户指向内网地址,外网用户指向防火墙外网地址。
c)尽可能多的安全限制策略,但不影响正常访问。
二、规划
1、实现
DNAT实现外网对内网服务器资源的访问
SNAT实现内网对外网资源的访问
view实现DNS分割
2、规划
内网为172.16.0.0/16 网关地址172.16.251.254
DNS server:172.16.251.219/16域:sunlinux.com.
WEB server:172.16.251.218/16FQDN:www.sunlinux.com
防火墙地址
内网地址:172.16.251.254/16
外网地址:192.168.0.200/24
外网测试机地址(开启Web服务):
IP:192.168.0.201/24
网关:192.168.0.200/24
DNS:192.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
四、启动测试
在外网主机上测试
DNS测试
WEB测试
在内网主机上测试
DNS测试
外网访问能力查看
注1
若使用内网真实地址:在外网做测试时会显示DNS的服务器地址是个内网地址如图:
这当然不是我们想要的,对于外网来说,解析到的东西都应该指向外网。所以dns对应项改成防火墙地址。
这样能够实现内网DNS server对外网的伪装。