此文是对前面博文《 Linux网络服务-LAMP之基于NFS+Fastcgi的LAMP搭建 》的延伸,在外网与内网之间加了一台Linux网关服务器;

实验需求:
1.DNS Server、Web Server的都是我内网服务器,故他们都是使用内网地址;
2.WAN Clients来访问我的网http://www.maoqiu.com时是通过Filrewall的外网地址进行访问,并且解析的域名为Firewall外网卡的地址;
3.LAN Clients能访问内网的Web Server,并且解析的域名为内网Web Server的真实IP地址;
实验拓扑:

wKioL1M3tV_yg9suAAGLQS5HVc4321.jpg

实验说明:
   此次实验是通过上次实验做的一个延伸实验,像后端这些服务器的搭建我就不再这里赘述,主要是Iptables的配置,
如果不清楚去看前面的博文,有疑问请留言。
实验步骤:
1.配置DNS服务
我们知道如果DNS如果要解析来自不同客户端的IP地址,那么就需要用到智能DNS-View,所以下面开始配置DNS服务
(1)编辑dns服务的主配置文件:
[root@ns ~]# vim /etc/named.conf
options {
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        allow-query     { any; };
        recursion yes;
rrset-order {  class IN type A name "www.maoqiu.com" order cyclic;  };
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
include "/etc/named.rfc1912.zones";
(2)编辑区域配置文件
[root@ns ~]# vim /etc/named.rfc1912.zones
acl LAN {  #定义的ACL
        172.16.0.0/16;
};
view LAN {  #针对我内网网段内的用户对应的解析
        match-clients { LAN; };  #凡是匹配到ACL中的条目都通过这个视图中的区域数据文件进行解析
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
zone "maoqiu.com" IN {
        type master;
        file "maoqiu.com.zone.lan";
};
zone "41.16.172.in-addr.arpa" IN {
        type master;
        file "172.16.41.zone.lan";
};
};
view wan {  #针对除了我内网网段内的用户对应的解析
        match-clients { any; };
zone "maoqiu.com" IN {
        type master;
        file "maoqiu.com.zone.wan";
};
};
#注意,对于内网区域数据文件一定要将其他区域数据文件包含在View中,根区域也不例外,对于外网客户我这里只做一个区域文件即可
(3)创建正向和方向的区域数据文件:
[root@ns ~]# cd /var/named/
#编辑针对内网服务器两台Web Server的正向区域数据文件
[root@ns named]# vim maoqiu.com.zone.lan
$TTL 6400
@       IN SOA  ns.maoqiu.com. admin.maoqiu.com (
                                2014032701      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns
ns      IN      A       172.16.41.3
www     IN      A       172.16.41.1
www     IN      A       172.16.41.2
#编辑针对内网服务器两台Web Server的反向区域数据文件
[root@ns named]# vim 172.16.41.zone.lan
$TTL 6400
@       IN SOA  ns.maoqiu.com. admin.maoqiu.com (
                                2014032701      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns.maoqiu.com.
3       IN      PTR     ns.maoqiu.com.
1       IN      PTR     www.maoqiu.com.
2       IN      PTR    www.maoqiu.com.
#编辑针对WAN Clients来访问时需要解析的区域数据文件
[root@ns named]# vim maoqiu.com.zone.wan
$TTL 6400
@       IN SOA  ns.maoqiu.com. admin.maoqiu.com (
                                2014032701      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns
ns      IN      A       172.16.41.3
www     IN      A       10.10.10.1
(4)修改区域数据文件属性
[root@ns named]# chmod 640 maoqiu.com.zone.* 172.16.41.zone.lan
[root@ns named]# chown root:named maoqiu.com.zone.* 172.16.41.zone.lan
(5)LAN Clients测试(注意:客户端的DNS需要指定DNS Server)
wKioL1M3toOj4iL1AAMsS0_y1MM203.jpg
OK!LAN Client测试完毕,我再去访问一下web服务器
通过curl -I 获取HTTP首页信息。
wKiom1M3tuKgB3gGAALE9xQqQg0223.jpg
现在LAN Client也能访问网络内的Web Server了
2.配置Linux网关服务器,
由拓扑图可见,作为Linux网关服务器它需要两张网卡,一张连接内网、一张连接外网(网卡IP信息配置略)
我们需要在上面操作就是通过Iptables来发布我们内网的Web服务和DNS服务
(1)发布Web服务
[root@FireWall ~]# iptables -t nat -A PREROUTING -d 10.10.10.1 -p tcp --dport 80 -j DNAT --to-destination 172.16.41.1
[root@FireWall ~]# iptables -t nat -A PREROUTING -d 10.10.10.1 -p tcp --dport 80 -j DNAT --to-destination 172.16.41.2
(2)发布DNS服务
[root@FireWall ~]#iptables -t nat -A PREROUTING -d 10.10.10.1 -p tcp --dport 53 -j DNAT --to-destination 172.16.41.3
[root@FireWall ~]#iptables -t nat -A PREROUTING -d 10.10.10.1 -p udp --dport 53 -j DNAT --to-destination 172.16.41.3
3.测试:
(1)外网测试DNS是否能够解析到
wKiom1M3t2LT7MLGAAKtCaJWxzU488.jpg
OK!外网客户端解析到的域名对应的IP地址就是我Firewall上面外网卡的地址
(2)测试访问web
wKioL1M3t2CxcVARAAKLBz7S4f8883.jpg
OK!外网也可以访问,实验完成!

总结:
1.iptables的原理以及基本应用请参考博文《Linux安全管理-Iptables原理及其应用》

2.在本实验中主要重点就是DNS的解析配置以及Iptables的配置

3.实验过程中,由于两台Web Server和DNS Server没有指定Linux网关即使服务器端收到了请求,但是在响应时却找不到回应目标,故服务器的Gateway要指向Linux网关服务器内网卡地址,Web Server的DNS要指向DNS Server!WAN Clients无需指定其网关,但是DNS需要指定!