1.1 方案目标
- 目标1 :能够稳定访问境外网站
由于国家互联网安全管理原因,通过国内运营商的网络访问国外网站并不是很稳定。真正解决该问题的办法是,在境外部署跳板机,然后专线链接到企业内网,企业内网通过跳板机代理访问境外网站。这样就可以避免境内互联网访问境外网站不稳定的情况。
方案需求:境外服务器、国际专线、国内到集团内网专线。
- 目标2: 能够专线专访,合规使用国际线路
我国目前对于境外互联网访问有严格的限制要求,当通过国际专线访问境外网站时,要按照国家法律法规严格限制境外网站访问,只要访问合规业务需求网站即可。
方案需求:境外网站白名单策略。 - 目标3 :尽量控制可进入准则 (可选)
从安全角度出发,控制能够接入专线的IP,避免扩大风险范围。
1.2 方案技术选型
1.2.1 代理模式选择
通过方案的目标设定我们可以知道,代理是必然的技术选择,但是需要选择怎样的代理模式、怎样的代理软件,确是需要进行合理的评估设计。常见的网站代理模式有正向代理和方向代理。
- 正向代理:
正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。如图:
- 方向代理:
反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。 使用反向代理服务器的作用如下:
-
代理模式选择
按照当前的业务使用场景来看,选择正向代理模式才能够合理解决问题。如果选择反向代理模式,在不知道服务器资源的情况,进行反向代理,可能出现很多意想不到的问题,甚至服务器干脆就直接采用了防反代理限制。
1.2.2 代理软件选择
常见的正向代理服务器软件有Apache Traffic Server、Tinyproxy、Squid Cache、Nginx。
- Apache
Apache Traffic Server(简称Apache TS)是一个高性能的、模块化的HTTP代理和缓存服务器,同时支持HTTP/HTTPS的正向代理与反向代理,具有如下特点:
缓存:改进响应时间的同时降低了服务器负载与对带宽的需求,这是通过缓存并且重用经常请求的网页、图片和Web Service调用实现的。
速度:在现代的SMP硬件上具有很好的可伸缩性,每秒钟可以处理数以万计的请求。可扩展性:API考虑到了自定义插件,可以修改头与内容,还可以实现新的协议处理器。
可靠性:能够完美处理TB级别的数据,包括正向与反向代理。
Apache Traffic Server v.3.0.0基准测试的结果是每秒钟可以处理200,000多个请求,相对于v2.0来说提升了277%。它可以用在各种大规模的产品部署环境中,Yahoo!使用Apache Traffic Server处理400TB的数据量,同时每天还使用它处理多达300亿的数据对象,包括Yahoo!主页、体育、邮件及财经站点。
- Squid
Squid Cache(简称Squid)是一个高性能的代理缓存服务器,可以加快内部网浏览 Internet的速度,提高客户机的访问命中率。Squid不仅支持HTTP协议,还支持FTP、gopher、SSL和WAIS等协议。和一般的代理 缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
Squid将数据元缓存在内存中,同时也缓存DNS查寻的结果,除此之外,它还支持非模块化的DNS查询,对失败的请求进行消极缓存。Squid支持SSL,支持访问控制。由于使用了ICP,Squid能够实现重叠的代理阵列,从而最大限度的节约带宽。
Squid由一个主要的服务程序Squid,一个DNS查询程序 dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。当Squid启动以后,它可以派生出指定数目的dnsserver进程,而每 一个dnsserver进程都可以执行单独的DNS查询,这样一来就大大减少了服务器等待DNS查询的时间。
Squid的另一个优越性在于它使用访问控制清单(ACL)和访问权限清单(ARL)。访问控制清单和访问权限清单通过阻止特定的网络连接来减少潜在的Internet非法连接,可以使用这些清单来确保内部网的主机无法访问有威胁的或不适宜的站点。 - Tinyproxy
Tinyproxy是一个轻量级的开源web代理守护进程,其设计目标是快而小。它适用于需要完整HTTP代理特性,但系统资源又不足以运行大型代理的场景,比如嵌入式部署。
Tinyproxy对小规模网络非常有用,这样的场合下大型代理会使系统资源紧张,或有安全风险。Tinyproxy的一个关键特性是其缓冲连接的理念。从效果上看,Tinyproxy 对服务器的响应进行了高速缓冲,然后按照客户端能够处理的最高速度进行响应。该特性极大的降低了网络延滞带来的问题。 - Nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。但是nginx的正向代理,只能代理http、tcp等,不能代理https请求,正向代理功能比较鸡肋。
-
代理软件选择
基于我们的方案目标及业务使用场景,Squid是最佳方案选择,可以满足正向代理、也可以提供白名单策略。
1.3 部署架构
1.4 关键技术实施说明
- 部署环境
操作系统版本:CentOS Linux release 7.2.1511 (Core)
代理软件版本:Squid Cache: Version 3.5.20 - 第一步安装启动Squid:
yum install squid -y
systemctl start squid -
第二步查看软件关键配置文件路径:
- 第三步配置squid.conf文件:
vim /etc/squid/squid.conf
#配置airbus 网站可访问
acl permitted_airbus url_regex -i airbus
http_access allow permitted_airbus
#配置Boeing 网站可访问
acl permitted_boeing url_regex -i boeing
http_access allow permitted_boeing
#配置aviationid网站可访问 boeing登陆 使用
acl permitted_aviationid url_regex -i aviationid
http_access allow permitted_aviationid
#配置可以访问proxy的客户端
acl guests src “/etc/squid/guest”
其中,文件“/etc/squid/guest”中的内容为:
172.168.10.3/24
210.113.24.8/16
10.0.1.24/25
http_access allow guests
http_access deny all
- 第四步配置squid.conf文件:
systemctl restart squid
第五步客户流程器配置:
在客户端的浏览器配置代理 : 服务IP + 端口 3128
以火狐浏览器为例子:
1、 左上角选择首选项
2、 选择网络配置
3、 配置网络代理: 填写代理服务器IP,端口为3128,
- 勾选 为所有协议使用相同代理服务器。
- 第六步,检查访问。
访问boeing网站,可以访问。
访问百度,代理服务器禁止。
作者:老格,擅长产品规划和设计,擅长解决方案,擅长PPT制作,是一个懂技术的产品PM,会设计的售前咨询。