利用squid搭建代理服务器

squid代理服务实现内网通过代理服务器访问外网以及外网主机通过代理服务访问内网服务器的功能,提供代理服务的软件有很多,典型的有squidnginxvarnish等,本文使用squid实现代理服务。

squid代理服务的有点:

(1)提供缓存,增加了访问速度

(2)提供用私网IP访问公网地址的解决方案

(3)提高了网络的安全性

(4)方便对用户管理

squid代理服务类别:

(1)普通代理,用于内网访问公网,需手动设置代理服务器地址以及端口

(2)透明代理,用于内网访问公网,不需手动设置代理

(3)反向代理,用于发布内网服务器供公网地址访问

部署squid代理:

拓扑结构:

    代理服务器需准备两块网卡,eth0连接内网,IP地址为192.168.1.253eth1连接外网,IP地址为1.1.1.1,外网服务器IP地址为1.1.1.253,内网服务器地址为192.168.1.1

1、普通代理

(1)代理服务器安装squid服务

squid代理服务配置_透明代理

(2)修改squid配置文件、启动代理服务并设置,开机自启动

[root@proxy ~]#vim /etc/squid/squid.conf        //squid主配置文件

http_port      3128        //squid服务默认监听端口

cache_mem  8 MB          //默认缓存大小,缓存只能缓存静态页面,不能缓存动态页面

cache_dir       ufs /var/spool/squid  100  16  256            //squid缓存存储目录

数值解释:

100           缓存目录大小

16            一级子目录数

256            一级子目录下的目录数

maximum_object_size       4096 KB             超过该值的数据不保存到缓存中

reply_body_max_size   10240000     访问目标最大量,超过则不允许访问

#visible_hostname                                 指定代理服务器的主机名,不设置的情况下使用环回接口对应的主机名  ,做代理服务器的主机名(该选项为可选项)

http_access   deny all        默认拒绝所有代理,将deny改为allow表示允许所有,此处需改为allow

上述设置完成后启动squid代理并设置开机自启

squid代理服务配置_linux_02

(3)设置客户端

本文客户端使用另一台linux服务器模拟,使用firefox浏览器为例,其他浏览器设置代理的方法请百度。

squid代理服务配置_反向代理_03

squid代理服务配置_透明代理_04squid代理服务配置_linux_05

(4)测试

    外网服务器上搭建网站服务,写一个测试主页放在网站根目录下,用于测试。

内网服务器在浏览器里访问外网服务器IP地址,能看到网页说明代理工作正常

squid代理服务配置_透明代理_06

2、透明代理

(1)修改squid配置文件启用透明代理,重启squid服务

vim/etc/squid/squid.conf

http_port  3128 transparent             //只修改这一条即可

(2)启用防火墙,编写防火墙规则,将80端口的访问请求转到3128代理端口

squid代理服务配置_透明代理_07

[root@proxy ~]#iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp --dport 80 -jREDIRECT --to-ports 3128//添加防火墙规则

squid代理服务配置_透明代理_08

(3)修改客户端配置

squid代理服务配置_linux_09

(4)测试

同普通代理

3、反向代理

(1)  反向代理多台主机:

当有多台主机需要向外网发布时,可以将squid主机设置修改如下:

http_port 80 vhost            //设置squid主机监听80端口

cache_peer 192.168.1.1 parent 80 0originserver         //添加一台内网主机

重启squid服务即可,访问时访问squid代理服务的外网地址

(2)  反向代理虚拟主机:

修改squid主机配置文件如下:

vim /etc/squid/squid.conf

http_port 80 vhost

cache_peer 192.168.8.3 parent 80 0originserver name=www

cache_peer 192.168.8.3 parent 80 0originserver name=bbs

cache_peer_domain  www  www.zhy.com

cache_peer_domain  bbs   bbs.zhy.com

3)测试