基于DNS视图智能解析实现内网web服务发布

本文主要讲述iptables-nat的使用,并结合dns的视图功能,分别解析来自内网用户和外网用户的访问;


本次环境全部系统为:Centos-6.5-64位

外网客户端为:windxp


一、DNS-view的实现;DNS-view的视图功能非常强大,它可以自动识别来自不同网段的IP,根据不同的访问者把域名分别解析成不同的IP地址。

   本次实验就是要通过view达到这种功能,域名:ouyang.com

1、yum -y install bind

定义内网用户的view

vim /etc/named.rfc1912.zones

view lan {

       match-clients { 192.168.10.0/24; };  

       zone "ouyang.com" IN {

               type master;

               file "ouyang.com.lan";

       };


zone "." IN {

       type hint;

       file "named.ca";        

       };

};


定义其它用户的view

view default {

       match-clients { any; };

       zone "ouyang.com" IN {

               type master;

               file "ouyang.com.wan";

       };

};

2、为区域文件创建区域文件数据库。

vim /var/named/ouyang.com.lan    

$TTL 600      

@       IN      SOA     dns.ouyang.com.         dnsadmin.ouyang.com.    (

                       2014032901   序列号

                       1H          

                       5M

                       3D

                       1D)

       IN      NS      dns       哉名服务器

dns     IN      A       192.168.10.15    定义一条域名服务器的A记录

web     IN      A       192.168.10.80    web服务器的地址


vim /etc/named/ouyang.com.wan

$TTL 600

@       IN      SOA     dns.ouyang.com.         dnsadmin.ouyang.com.    (

                       2014032901

                       1H

                       5M

                       3D

                       1D)

       IN      NS      dns

dns     IN      A       192.168.10.15

web     IN      A       172.16.34.10    这是防火墙对外地址,在防火墙上做完目标地址转换时,外网访问的时候,就直接解析成了防火墙的外网卡地址


二、DNS-VIEW配置完成的后序操作;

修改区域文件数据库的权根为640

chmod 640 ouyang.com.*

修改宿主宿组为named用户和组

chown named:named ouyang.com.*    

为确保区域数据库文件错误先测试一下;

[root@www named]# named-checkzone "ouyang.com.lan" ouyang.com.lan

zone ouyang.com.lan/IN: loaded serial 2014032901

OK

[root@www named]# named-checkzone "ouyang.com.lan" ouyang.com.wan

zone ouyang.com.lan/IN: loaded serial 2014032901

OK

一切检查无误后,可以开始启动named服务,后再查看53端口是否监听

[root@www named]# service named restart

Stopping named: .                                          [  OK  ]

Starting named:                                            [  OK  ]

[root@www named]# ss -tunl | grep 53

udp    UNCONN     0      0          192.168.10.15:53                    *:*    

udp    UNCONN     0      0              127.0.0.1:53                    *:*    

tcp    LISTEN     0      3          192.168.10.15:53                    *:*    

tcp    LISTEN     0      3              127.0.0.1:53                    *:*    

tcp    LISTEN     0      128                  ::1:953                  :::*    

tcp    LISTEN     0      128            127.0.0.1:953                   *:*    

使用dig命令测试;

[root@www named]# dig -t A web.ouyang.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t A web.ouyang.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46832

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1


;; QUESTION SECTION:

;web.ouyang.com.INA


;; ANSWER SECTION:

web.ouyang.com.600INA192.168.10.80     本机为内网用户,这个地址是web服务的地址,由此可以说view功能生效


;; AUTHORITY SECTION:

ouyang.com.600INNSdns.ouyang.com.


;; ADDITIONAL SECTION:

dns.ouyang.com.600INA192.168.10.15    


;; Query time: 0 msec

;; SERVER: 192.168.10.15#53(192.168.10.15)

;; WHEN: Sat Mar 29 13:35:41 2014

;; MSG SIZE  rcvd: 82


二、web服务,为了达到效果这里只做为简单的安装

先测试一下web服务器的是否可以与DNS;

[root@nba ~]# ping 192.168.10.15 -c 5
PING 192.168.10.15 (192.168.10.15) 56(84) bytes of data.
64 bytes from 192.168.10.15: icmp_seq=1 ttl=64 time=2.18 ms
64 bytes from 192.168.10.15: icmp_seq=2 ttl=64 time=0.266 ms
64 bytes from 192.168.10.15: icmp_seq=3 ttl=64 time=0.223 ms

安装httpd服务;yum -y install httpd

为web服务提供一个首页;phpwind_GBK_8.3-zh_CN.zip

[root@nba ~]# unzip phpwind_GBK_8.3-zh_CN.zip
[root@nba ~]# cd phpwind_GBK_8.3
[root@nba phpwind_GBK_8.3]# ls
docs  upload
[root@nba phpwind_GBK_8.3]cp -rf docs upload /var/www/html/


web服务要想实现域名解析,需把DNS指向DNS服务器192.168.10.15

[root@nba ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search yang.com
nameserver 192.168.10.15
# No nameservers found; try putting DNS servers into your


三、防火墙配置

NAT; 网络地址转换(过载技术);    
Basic NAT;静态NAT;

NAPT; 动态NAT,网络地址端口转换;
iptables基于SNAT和DNAT这两个目标实现地址转换技术

源地址转换;SNAT,常用于让内网主机访问互联网

目标地址转换;用于内网主机访问互联网,常用于内网服务器的发布,这个就是下面我们将要做的地址转换
-j SNAT --to-source 目标地址    POSTROUTING链
-j MASQUERADE  如果是ADSL拨号上网,因为每一次拨号上网所获取的ip是不一样的。所有才使用MASQUERADE
-j DNAT --to-destination  

iptables如果工作在网络防火墙的模式下所有的规则都是定义在forward

1、配置防火墙地址;

[root@ou ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
[root@ou ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

[root@ou ~]# service network restart

注意由于eth1网卡是由eth0复制的,在网卡的配置文件里把MAC地址还一列给注释了,把DEVICE="eth1"。还有再重启网卡的时候,会发现eth1配置的ip没有生效,只要把NetworkManager给关闭即可; service NetworkManager stop

防火墙上安装的两块网卡,一块连接内网通信,一块与外网通信,内网的用户要想实现与外网网络通信,内网的用户主机上需把网关指向防火墙对内网的IP地址。还有就是,虽然两块网卡都安装在同一台主机上,由于是两个网络段地址,默认的情况下是不通信的,因此需要手动打开Linux系统的路由转发功能方可实现通信。特别提醒一下;内部主机的网关需全部指向防火墙的内网IP。

2、开启路由转发功能;  ,

[root@ou ~]# grep "ip_forward" /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@ou ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

3、由于我们这是要实现让DNS视图功能能够自动解析外网的IP,DNS服务器也得经过防火墙,首先得保证防火墙自身能够解析的了,先测试验证一下可否解析内网的web服务;

本机要想实现解析需把DNS指向内网DNS服务器才可;

[root@ou ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.10.15


4、配置规则,如上述拓扑图所示,内网服务器是由防火墙隔离开的,因此是需要配置规则,实现让防火墙发布出去,从而实现把内网IP转换成防火墙的外网IP,所以就得使用DNAT目标地址转换;

99  iptables -t nat -A PREROUTING -d 172.16.34.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.80
100  iptables -t nat -A PREROUTING -d 172.16.34.10 -p udp --dport 53 -j DNAT --to-destination 192.168.10.15
101  iptables -t nat -A PREROUTING -d 172.16.34.10 -p tcp --dport 53 -j DNAT --to-destination 192.168.10.15

使用iptables -t nat -L -n -v 查看规则表;

四、内网客户端测试;

由上述图可以看出,内网用户在访问web服务的时候,解析的IP地址是内网的IP段,宣告内网测试成功;

五、外网客户端测试;外网测试我采用WindownXp系统测试

需要注意的是,外网主机不用设置网关,只需把DNS指向防火墙的对外网卡即可。

打开cmd命令窗口使用ping命令进行测试,看是否可以解析成功;

700

打开浏览器测试是否可以打开web服务的页面;

测试OK.        

终于完成了,该睡觉了..........


本文出自 “春天里” 博客,请务必保留此出处http://wfnygah.blog.51cto.com/7150625/1387773

基于DNS视图智能解析实现内网web服务发布,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。