基于rsync和inotify实现web网站文件的同步,并基于IPTABLES做用户限制

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介:

一、拓扑图与简单说明

wKiom1M1clyTthr9AAEWrH5ZyW8438.jpg

  说明:

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

⑤、将另外一台服务器也配置成如上所示

⑥、测试看是否能将数据上传到服务器上

wKiom1M1gbaiKAqGAAB0rTg4N6c043.jpg

我们可以看到在1.200上的共享目录中有了文件

wKiom1M1hfKQ8b9BAAB7D7At_10615.jpg

  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做内网测试

wKiom1M1o5_C3SZeAAMvb9gpVsM966.jpg

wKioL1M1o3fipyW8AAJeFX2ALVA492.jpg

五、做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
~                                                        
~

     ④、内网测试

wKioL1M1r4jhagP5AAOHy6LV3YQ174.jpg

wKiom1M1r7CiOUX8AANhXUvOrpc300.jpg

我们可以看到这两个的首解析记录不相同

基于域名访问

wKioL1M1vrvgOVgYAALEZdNiERY998.jpg

六、基于防火墙创建规则

  ①、为了服务器的安全,我们应该将所有的规则都设置为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,如需转载请自行联系原作者

相关文章
|
2月前
|
JSON API 数据处理
Winform管理系统新飞跃:无缝集成SqlSugar与Web API,实现数据云端同步的革新之路!
【8月更文挑战第3天】在企业应用开发中,常需将Winform桌面应用扩展至支持Web API调用,实现数据云端同步。本文通过实例展示如何在已有SqlSugar为基础的Winform系统中集成HTTP客户端调用Web API。采用.NET的`HttpClient`处理请求,支持异步操作。示例包括创建HTTP辅助类封装请求逻辑及在Winform界面调用API更新UI。此外,还讨论了跨域与安全性的处理策略。这种方法提高了系统的灵活性与扩展性,便于未来的技术演进。
190 2
|
2月前
|
存储 前端开发 搜索推荐
Web前端网站(三)- 记事本
【8月更文挑战第8天】多种颜色搭配的动态粒子背景特效(粒子会随着鼠标的移动进行吸附,好看又好玩),左右摆动的文字特效,并且使用localStorage进行数据的持久化存储,使记事本的内容可以长期的保存在浏览器中,功能包括添加留言、显示留言、删除留言。每一行代码都有详细注释~~~大家可以尽情创作
52 5
Web前端网站(三)- 记事本
|
2月前
|
前端开发 搜索推荐 JavaScript
Web前端网站(四)- 音乐播放器
【8月更文挑战第9天】页面整体色调背景采用柔和渐变的方式呈现,与主页面的“毒药水式”色彩搭配形成了强烈的对比;周边花瓣缓缓飘落到水面之上形成涟漪。整体给人一种温馨、浪漫的感觉,还可以通过中间的3个按钮来控制音乐的切换和播放效果。每一行代码都有详细注释~~~大家可以尽情创作
26 2
Web前端网站(四)- 音乐播放器
|
2月前
|
开发者 Java Spring
【绝技揭秘】掌握Vaadin数据绑定:一键同步Java对象,告别手动数据烦恼,轻松玩转Web应用开发!
【8月更文挑战第31天】Vaadin不仅是一个功能丰富的Java Web应用框架,还提供了强大的数据绑定机制,使开发者能轻松连接UI组件与后端Java对象,简化Web应用开发流程。本文通过创建一个简单的用户信息表单示例,详细介绍了如何使用Vaadin的`Binder`类实现数据绑定,包括字段与模型属性的双向绑定及数据验证。通过这个示例,开发者可以更专注于业务逻辑而非繁琐的数据同步工作,提高开发效率和应用可维护性。
57 0
|
2月前
|
前端开发 安全 JavaScript
PHP与现代Web开发:探索PHP在构建动态网站中的角色和优势
【8月更文挑战第29天】 在数字时代的浪潮下,PHP以其独特的灵活性、易用性以及强大的社区支持,持续成为Web开发领域的重要力量。本文将深入探讨PHP如何适应现代Web开发的需求,通过具体示例揭示PHP的实际应用,并分析其在面对新兴技术挑战时的应对策略。我们将一探究竟,PHP如何在众多编程语言中脱颖而出,成为许多开发者和企业的首选。
|
2月前
|
数据可视化 Python
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
34 0
|
2月前
【Azure 应用服务】部署Azure Web App时,是否可以替换hostingstart.html文件呢?
【Azure 应用服务】部署Azure Web App时,是否可以替换hostingstart.html文件呢?
|
2月前
|
JSON 数据格式
【应用服务 App Service】在Azure Web App的部署文件中,是否可以限制某些文件无法被访问?(如json)
【应用服务 App Service】在Azure Web App的部署文件中,是否可以限制某些文件无法被访问?(如json)
|
2月前
|
安全 Shell PHP
pear文件利用 (远程文件下载、生成配置文件、写配置文件) 从一道题看——CTFshow私教 web40
pear文件利用 (远程文件下载、生成配置文件、写配置文件) 从一道题看——CTFshow私教 web40
107 0
|
4月前
|
前端开发 搜索推荐 JavaScript
Web前端网站(二)- 主页
页面星空是可动的哦~~~毒药水特效的颜色搭配,文字渐变的动态效果,图片360度旋转展示特效等等等;每一次的按钮点击都是满满的惊艳 ~ ~ ~
46 4
Web前端网站(二)- 主页