此文是對前面博文《 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需要指定!