您的位置:首页 > 运维架构 > 反向代理

SQUID透明代理服务器

2016-03-28 19:13 651 查看
通过配置透明代理服务器,实现以下目标:实现本地局域网中的所有主机均可以通过代理服务器访问Web服务器

客户端使用代理访问Web服务时,浏览器无需提前配置代理服务器

代理服务器除了承担代理外,还需要实现网关路由的功能

客户端测试是否可以使用代理服务器访问外网的Web服务器

2.2 方案

使用3台RHEL6虚拟机,其中一台作为Squid代理服务器/网关服务器,该服务器用来连接两个网段,因此需要配置两块网卡,地址分别为192.168.4.5和172.16.16.1。一台作为客户端测试主机,IP地址为192.168.4.100。一台作为外网Web服务器,IP地址为172.16.16.172,拓扑如图-5所示。


图-5Squid代理服务器需安装的软件包:squidWeb服务器需安装的软件包:httpd

2.3 步骤

实现此案例需要按照如下步骤进行。步骤一:构建web服务器1)使用yum安装web软件包[root@svr5 ~]# yum -y install httpd

.. ..

[root@svr5 ~]# rpm -q httpd

httpd-2.2.15-29.el6_4.x86_64

2)启用httpd服务,并设为开机自动运行
[root@svr5 ~]# service httpd restart ; chkconfig httpd on

Stopping httpd: [FAILED]

Starting httpd: [OK]

httpd服务默认通过TCP 80端口监听客户端请求:
[root@svr5 ~]# netstat -anptu | grep httpd

tcp 0 0 :::80 :::* LISTEN 2813/httpd

3)为Web访问建立测试文件在网站根目录/var/www/html下创建一个名为index.html的首页文件:[root@svr5 ~]# cat /var/www/html/index.html

<html>

<title>Welcome</title>

<body>

<h1>hello</h1>

<h2>hello</h2>

</body>

</html>

步骤二:部署Squid代理及网关服务器1)使用yum安装squid软件包:[root@svr5 ~]# yum -y install squid

.. ..

[root@svr5 ~]# rpm -q squid

squid-3.1.10-19.el6_4.x86_64

2)修改/etc/squid/squid.conf配置文件:
[root@svr5 ~]# vim /etc/squid/squid.conf

.. ..

http_port 3128 transparent //设置透明代理

visible_hostname squid.svr5.com //设置主机名

cache_mem 128 MB //内存缓存

cache_dir ufs /var/spool/squid 200 16 128 //硬盘缓存

http_access allow localnet //允许本机所在网络中的所有主机使用代理服务器

3)配置网关路由功能:
[root@svr5 ~]# vim /etc/sysctl.conf

.. ..

net.ipv4.ip_forward = 1 //开启路由转发功能

[root@svr5 ~]# sysctl -p

[root@svr5 ~]# iptables -t nat -A PREROUTING -i eth1 -s 192.168.4.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128 //开启NAT端口转发

[root@svr5 ~]# iptables -t nat -A PREROUTING -i eth1 -s 192.168.4.0/24 -p tcp --dport 443 -j REDIRECT --to-ports 3128 //开启NAT端口转发

[root@svr5 ~]# service iptables save //保持防火墙规则

4)启动squid服务,并设置为开机启动:
[root@svr5 ~]# service squid restart; chkconfing squid on

Stopping squid: [FAILED]

init_cache_dir /var/spool/squid...

Starting squid: . [ OK ]

5)squid服务默认通过TCP 3128端口监听客户端请求:
[root@svr5 ~]# netstat -anptu | grep 3128

tcp 0 0 :::3128 :::* LISTEN 3213/(squid)

步骤三:客户端测试1)将客户端的网关地址设置为192.168.4.5[root@svr5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"

BOOTPROTO="static"

IPADDR=192.168.4.100 //设置IP

GATEWAY=192.168.4.5 //设置网关

ONBOOT="yes"

TYPE="Ethernet"

2)客户端开启浏览器访问Web服务器

[root@svr5 ~]# firefox 172.16.16.172

3)分别登陆代理服务器及Web服务器,查看日志文件检查效果
[root@svr5 ~]# tailf /var/log/squid/access.log //squid代理服务器日志

1429596067.371 21 192.168.4.100 TCP_MISS/200 478 GET http://172.16.16.172/ - DIRECT/172.16.16.172 text/html

[root@svr5 ~]# tailf /var/log/httpd/access_log //Web服务器日志

172.16.16.1 - - [20/Apr/2015:23:01:07 -0700] "GET / HTTP/1.1" 200 83 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: