此文是对前面博文《 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地址;
实验说明:
此次实验是通过上次实验做的一个延伸实验,像后端这些服务器的搭建我就不再这里赘述,主要是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)
OK!LAN Client测试完毕,我再去访问一下web服务器
通过curl -I 获取HTTP首页信息。
现在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是否能够解析到
OK!外网客户端解析到的域名对应的IP地址就是我Firewall上面外网卡的地址
(2)测试访问web
OK!外网也可以访问,实验完成!
总结:
1.iptables的原理以及基本应用请参考博文《Linux安全管理-Iptables原理及其应用》
2.在本实验中主要重点就是DNS的解析配置以及Iptables的配置
3.实验过程中,由于两台Web Server和DNS Server没有指定Linux网关即使服务器端收到了请求,但是在响应时却找不到回应目标,故服务器的Gateway要指向Linux网关服务器内网卡地址,Web Server的DNS要指向DNS Server!WAN Clients无需指定其网关,但是DNS需要指定!