更新时间:2022-09-28 20:51:11
一、拓扑图与简单说明
说明:
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,如需转载请自行联系原作者