一、拓扑图与简单说明
说明:
1.假设我们在申请了一个外网地址10.238.203.24-25/32,我们的内网服务器的地址为172.16.130.0/24网段;
2.我们要开放web和DNS供外网用户访问,其他的服务都禁止访问;
3.我们的域名为www.wangfeng7399.com,其中互联网用户解析到的为10.238.203.24,内网用户解析到的地址为192.168.1.200,或者是192.168.1.201,DNS为外网用户为10.238.203.24,内网用户使用的为192.168.1.201
二、搭建APACHE,PHP,MYSQL
关于搭建APACHE,PHP,MYSQL的详细步骤,请移步本人相关博客,博客地址为http://wangfeng7399.blog.51cto.com/3518031/1381688
三、基于rsync+inotify实现文件实时同步
由于需要基于inotify的机制实现文件实时同步,那么我们需要将前面的两台web作为服务器端,后台php作为客户端
1.配置web的rsync服务
①、由于rsync由超级守护进程,所有必须要先安装xinetd超级守护进程,本处通过yum的方式安装
1
|
[root@httpweb2 ~]# yum install -y xinetd
|
②、配置rsync的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#global settings
#配置全局段
uid = nobody
#运行程序的用户uid
gid = nobody
#运行程序的用户gid
use
chroot = no
#是否将用户禁锢在家目录
max connections =
5
#最大的连接数
strict modes = yes
#是否完全检查
pid file = /
var
/run/rsyncd.pid
#程序的pid文件
log file = /
var
/log/rsyncd.log
#程序的log日志文件
#directory to be synced
#配置用户段
[webserver]
#共享模块的名称
path = /www/html/wangfeng7399
#共享模块的位置
ignore errors = yes
#是否忽略I/O错误
read only = no
#是否允许用户只读
write only = no
#是否允许用户只写
host allow =
192.168
.
1.0
/
24
#允许访问的ip地址
host deny = *
#允许访问的ip地址
list =
false
#是否列出列表
uid = root
#传递数据的用户
gid = root
#传递数据的用户组
auth user = webuser
#允许访问的用户
secrets file = /etc/rsync.passwd
#用户密码的存放位置
|
③、生成用户的密码文件/etc/rsync.passwd
1
|
webuser:wangfeng7399
|
为了安全起见,请将/etc/rsync.passwd的权限设置成600
④、配置服务能够开机自动启动
1
2
|
[root@httpweb2 ~]# chkconfig rsync on
[root@httpweb2 ~]# chkconfig xinetd on
|
⑤、将另外一台服务器也配置成如上所示
⑥、测试看是否能将数据上传到服务器上
我们可以看到在1.200上的共享目录中有了文件
2.搭建inotify服务器
①、可以配置epel源,进行yum安装,也可以在ftp://mirrors.yun-idc.com/epel/6/x86_64/inotify-tools-3.14-1.el6.x86_64.rpm下载使用
1
|
[root@php ~]# rpm -ivh inotify-tools-
3.14
-
1
.el6.x86_64.rpm
|
②写脚本实现对/www/html/wangfeng7399/文件夹进行监控,如文本修改,文件删除,新增等
1
2
3
4
5
6
7
8
|
#!/bin/bash
src=/www/html/wangfeng7399/
inotifywait -mr -e create,
delete
,modify,attrib $src \
|
while
read files;
do
rsync -ar --
delete
$src webuser@
192.168
.
1.200
::webserver --password-file=/etc/user.passwd
rsync -ar --
delete
$src webuser@
192.168
.
1.201
::webserver --password-file=/etc/user.passwd
done
~
|
③、启动inotify
1
|
nohup ./inotfiy.sh &
|
④、创建/etc/user.passwd文件
1
|
wangfeng7399
|
并将权限改为600
⑤、测试,本处不在给出测试结果
四、结合php和mysql做内网测试
五、做DNS解析
①、安装DNS,本处DNS使用的yum的安装方式
1
|
[root@httpweb2 named]# yum install bind -y
|
②、修改DNS的主配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
options {
directory
"/var/named"
;
rrset-order { order random; };
};
view inuser{
match-clients {
192.168
.
1.0
/
24
; };
zone
"."
IN {
type hint;
file
"named.ca"
;
};
zone
"wangfeng7399.com."
IN {
type master;
file
"wangfeng7399.com.inuser"
;
};
};
view any{
match-clients { any; };
zone
"."
IN {
type hint;
file
"named.ca"
;
};
zone
"wangfeng7399.com."
IN {
type master;
file
"wangfeng7399.com.outuser"
;
};
};
|
③、修改区域文件。
wangfeng7399.com.inuser
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$TTL
600
@ IN SOA dns.wangfeng7399.com. admin.wangfeng7399.com.(
2014032901
1H
5M
5D
1D
)
@ IN NS dns
dns IN A
192.168
.
1.109
www IN A
192.168
.
1.109
www IN A
192.168
.
1.200
~
|
wangfeng7399.com.outuser
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
$TTL
600
@ IN SOA dns.wangfeng7399.com. admin.wangfeng7399.com.(
2014032901
1H
5M
5D
1D
)
@ IN NS dns
dns IN A
10.238
.
203.24
www IN A
10.238
.
203.24
www IN A
10.238
.
203.25
~
~
|
④、内网测试
我们可以看到这两个的首解析记录不相同
基于域名访问
六、基于防火墙创建规则
①、为了服务器的安全,我们应该将所有的规则都设置为DROP
②、为了能让服务器做转发,我们应该开启forward功能,修改/etc/sysctl.conf
net.ipv4.ip_forward = 1
③、将内网的web服务器的80端口映射为10.238.203.24-25的80端口
1
2
|
[root@httpweb1 ~]# iptables -t nat -I PREROUTING -d
10.238
.
208.24
-p tcp --dport
80
-j DNAT --to-destination
192.168
.
1.200
:
80
[root@httpweb1 ~]# iptables -t nat -I PREROUTING -d
10.238
.
208.25
-p tcp --dport
80
-j DNAT --to-destination
192.168
.
1.200
:
80
|
④、将DNS映射到互联网上
1
|
[root@httpweb1 ~]# iptables -t nat -I PREROUTING -d
10.238
.
208.24
-p udp --dport
53
-j DNAT --to-destination
192.168
.
1.220
:
53
|
终于搞定了,由于本人水平有限,请各位大神匹配指正!!!谢谢
本文转自wangfeng7399 51CTO博客,原文链接:http://blog.51cto.com/wangfeng7399/1386342,如需转载请自行联系原作者