红联Linux门户
Linux帮助

Ubuntu12.04使用Squid搭建正向代理

发布时间:2015-12-08 14:58:25来源:linux网站作者:月光轩辕-

引入

因为最近不在学校,而学校的部分资源使用了只能校内部分局域网才能访问(注意这里的局域网有对外出口网关),所以之前考虑搭建翻这种网关防火墙的程序。这样需要解决的主要是以下问题
- 内网ip映射成可访问的公网ip
一开始我考虑的方案是使用VPN的结构,采用一个具有公网ip的服务器来搭建VPN server,然后内容通过路由连接服务器,客户端可以通过socks来连接服务器实现请求路由,服务器端通过配置iptables来实现路由转发。
这个也是一个可行的方案,但是朋友的拿出了一个正向代理+DDNS的方案,我觉得很有意思就研究了以下。
(正向代理:实现网关和加速访问的作用
DDNS:通过与花生壳服务器建立连接来将内网的某个端口暴露给外网,本身是通过服务器与客户机不断发送连接请求来实现中间链路的keep alive,缺点是内网的出口网关上的端口是在不断改变的,所以无法建立类似VPN之类协议需要的长连接)


代理的概念

代理主要分以下三种

正向代理

用户需要知道代理的ip和端口和目标服务器的地址,代理服务器通过代替客户机去访问目标ip,主要实现以下功能(我用到的)
隐藏源ip
绕过防火墙或者损坏链路
访问控制

反向代理代理

用户需要知道代理服务器的ip,代理服务器代理目标服务器的请求,可以简化成如下场景

现有目标服务器ip 11.11.11.11
代理服务器的ip为 11.12.12.12
我需要请求目标的服务器上的图标a.jpg
我可以通过请求 11.12.12.12/.../a.jpg  获得

实现的主要功能
缓存内容,减缓服务器的压力(我通过建立多个反向代理,每个代理上都存一部分目标服务器上的静态资源,那么大部分请求静态资源的请求就没必要继续传送到目标服务器上)
加速访问(集群实现能力扩展也是采用了相似的策略

透明代理
用户需要知道代理服务器和端口的ip,代理服务器实现的是一个网关路由的作用,实现路由转发和访问控制的作用,目标服务器和客户机在使用过程中是感知不到代理服务器的存在。
主要功能:
访问控制
内容过滤


配置Squid

Squid是一个很早之前开始的项目,经历了时间和实践的检验,他支持以上三种模式,并且能够提供不错的性能,本身的配置不太复杂,其他相关的内容自行百度吧。

配置准备
设备:可以通过ip访问的主机一台:e.g具有公网IP的电脑或服务器
测试电脑一台
系统:Ubuntu12.04   (在这样的环境下操作的,其他环境下不能保证环境一致)

在主机上进行如下操作


安装 squid

sudo apt-get install squid

最后下载下来的是squid3
路径位于/etc/squid3
验证squid的安装位置可以通过find 命令查找确认

find / -name "\*squid\*"

下一步是配置squid的参数

vi /etc/squid3/squid.conf

修改以下字段
http_access deny all -> http_access allow all #开启访问权限

http_port 3128 -> http_port 3131 #处于安全考虑修改默认端口

cache_mem 256MB -> cache_mem 32MB #根据服务器内存调整缓存内容的大小

cache_mgr webmaster -> cache < email address > #cache出现故障的时候通知的邮箱

visible_hostname localhost -> visible_hostname < some message or mark> #错误页面中会包含的关于hostname 的提示

dns_v4_first off -> dns_v4_first on #在dns支持ipv6的时候服务器默认是拿到ipv6 ip,但是网关不支持ipv6的情况下,我们可以通过设置这一项来强制服务器优先使用ipv4 ip


开启squid

sudo  service squid3 stop
sudo squid -z  #初始化
sudo service start


附言

代理终究是代理网络请求,所以如果访问的内容不经过加密还是会被相关的机构过滤 比如 GWF
之前我在国外的服务器上搭建了正向代理,发现youtube之类的很多国外网站访问不了,在确认问题的时候发现了这个。


Linux下配置Squid代理服务器:http://www.linuxdiyf.com/linux/12366.html

Linux入门教程:Squid代理服务器:http://www.linuxdiyf.com/linux/10528.html

RHEL6.4搭建Squid代理服务器:http://www.linuxdiyf.com/linux/10655.html

10个关于Linux中Squid代理服务器的实用面试问答:http://www.linuxdiyf.com/linux/10443.html

CentOS 6.4下Squid代理服务器的安装与配置:http://www.linuxdiyf.com/linux/7048.html