Squid正向代理服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Squid正向代理服务器相关的知识,希望对你有一定的参考价值。

Squid代理服务器
一、缓存代理概述
应用层的代理服务软件,Squid主要提供缓存加速、应用层过滤控制的功能

1、代理的工作机制
第一种情况:Squid服务器中有缓存当客户机通过代理来请求Web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容反馈给客户机;
第二种情况:Squid服务器中没有缓存如果缓存中没有客户机要访问的页面,则由代理服务器向Internet发送访问请求,当获得返回的Web页面以后,将网页数据保存到缓存中并发送给客户机
技术分享图片
HTTP代理的缓存加速对象主要是文字、图像等静态Web元素。使用缓存机制后,当客户机在不同的时候访问同一Web元素,或者不同的客户机访问相同的Web元素时,可以直接从代理服务器的缓存中获得结果。这样就大大减少了向Internet提交重复的Web请求的过程,提高了客户机的Web访问响应速度由于客户机的Web访问请求实际上是由代理服务器来代替完成的,从而可以隐藏用户的真实IP地址,起到一定的保护作用。另一方面,代理服务器担任着类似“经纪人”的角色,所以有机会针对要访问的目标、客户机的地址、访问的时间段等进行过滤控制。

2、代理的基本类型
根据实现方式不同,代理服务可分为传统代理和透明代理两种常见的代理服务:
a.传统代理:也就是普通的代理服务,首先必须在客户机的浏览器、QQ聊天工具、下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理来访问网络。对于网页浏览器,访问网站时的域名解析请求也会发给指定的代理服务器
b.透明代理:提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向,实际仍然交给代理服务器来处理。重定向的过程对客户机来说是“透明”的,用户甚至都不知道自己在使用代理服务,所以称为“透明代理”。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先转发给DNS服务器实际应用中,传统代理多见于Internet环境,如为QQ程序使用代理可以隐藏本机真实IP地址,为下载工具使用多个代理可以规避服务器的并发连接限制。而透明代理多见于局域网环境,如在Linux网关中启用透明代理后,局域网主机无需进行额外设置就可以享受更好的上网速度

二、安装及运行控制(实验操作)
实验环境:准备三台centos6.5x64的服务器,yum源和IP根据自己需求配置,切记关闭防火墙和selinux(用不到防火墙的服务器),具体环境如下图
技术分享图片

网关服务器配置

1、配置网关内网ip
vim /et c/vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
DEFROUTE=yes
IPADDR=192.168.1.10
NETMASK=255.255.255.0
DNS1=114.114.114.114
2、配置网关外网桥接ip
vim /et c/vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
3、重启服务器 reboot
4、开启路由转发 vim /etc/sysctl.conf
技术分享图片
//测试路由转发 sysctl –p
技术分享图片
5、配置防火墙规则并保存 iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.152.87
技术分享图片

                      Squid服务器配置

1、配置IP vim /et c/vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
DEFROUTE=yes
IPADDR=192.168.1.20
NETMASK=255.255.255.0
GATEWAY=192.168.1.10
DNS1=114.114.114.114
2、重启网卡 service network restart
技术分享图片
3、上传squid-3.4.6.tar压缩包
技术分享图片
4、解压squid-3.4.6.tar包 tar zxvf squid-3.4.6.tar.gz -C /usr/src/
5、进入解压目录 cd /usr/src/squid-3.4.6/
技术分享图片
6、 配置Squid的编译选项时,将安装目录设为/usr/local/squid,其他具体选项根据实际需求来定,配置前可参考“./configure --help”给出的说明
1)编译squid
./configure --prefix=/usr/local/squid --sysconfdir=/etc/ --enable-linux-netfilter --enable-arp-acl --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll --enable-gnuregex
技术分享图片
选项解读:
--prefix=/usr/local/squid \安装目录
--sysconfdir=/etc/ \单独将配置文件修改到其他目录
--enable-arp-acl \可以在规则中设置直接通过客户端MAC进行管理,防止客户端使用IP欺骗
--enable-linux-netfilter \使用内核过滤
--enable-linux-tproxy \支持透明模式
--enable-async-io=值 \异步I/O,提升存储性能
--enable-err-language="Simplify_Chinese" \错误信息的显示语言
--enable-underscore \允许URL中有下划线
--enable-poll \使用Poll()模式,提升性能
--enable-gnuregex \使用GNU正则表达式
2)安装squid make && make install
技术分享图片![](
7、添加环境变量
1)echo"PATH=$PATH:/usr/local/squid/sbin" >>/etc/profile
技术分享图片
技术分享图片
2)执行环境变量 source /etc/profile
技术分享图片
3)测试变量是否能全局使用(如下图则为成功) squid
技术分享图片
8、创建squid用户和组
useradd -M -s /sbin/nologin squid
技术分享图片
chown -R squid:squid /usr/local/squid/var/
技术分享图片
9、squid服务的配置文件位于/etc/squid.conf,充分了解配置行的作用将有助于管理员根据实际情况灵活配置代理服务,更详细的配置项请参考/etc/squid.conf.documented文件
1)修改squid配置文件 vim /etc/squid.conf
技术分享图片
重点注释:
1)http_port 3128 \用来指定代理服务监听的地址和端口(默认的端口号为3128)
2)cache_effective_user squid \指定squid的程序用户,用来设置初始化、运行时缓存的账号
3)cache_effective_group squid \默认为cache_effective_user指定账号的基本组
10、Squid的运行控制
1)检查squid配置语法是否正确 squid -k parse
技术分享图片
注释:没有出现error报错为正常
2)启动、停止squid
第一次启动Squid服务时,会自动初始化缓存目录。在没有可用的Squid服务脚本的情况下,也可以直接调用Squid程序来启动服务,这时需要先进行初始化。
//初始化目录 squid -z
//启动squid服务 squid
3)查看squid监听状态(当前正常) netstat -utpln | grep "squid"
技术分享图片
4)使用Squid服务脚本
为了使Squid服务的启动、停止、重载等操作更加方便,可以编写Shell服务脚本,并使用chkconfig和service工具来进行管理。
#!/bin/bash
# chkconfig: 2345 90 25
# config: /etc/squid.conf
# pidfile: /usr/local/squid/var/run/squid.pid
# Description: Squid - Internet Object Cache

PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"

case "$1" in
start)
netstat -utpln | grep squid &>/dev/null
if [ $? -eq 0 ]
then
echo "Squid is running"
else
$CMD
fi
;;
stop)
$CMD -k kill &>/dev/null
rm -rf $PID &>/dev/null
;;
status)
[ -f $PID ] &>/dev/null
if [ $? -eq 0 ]
then
netstat -utpln | grep squid
else
echo "Squid is not running"
fi
;;
restart)
$0 stop &>/dev/null
echo "正在关闭Squid..."
$0 start &>/dev/null
echo "正在启动Squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法:{ start | stop | restart | reload | check | status}"
;;
esac
5)添加脚本到本地 vim /etc/init.d/squid
6)给脚本执行权限 chmod +x /etc/init.d/squid
技术分享图片
7)将脚本注册为系统服务 chkconfig --add squid
技术分享图片

8)将脚本设置为2345级别开机自启 chkconfig squid on
技术分享图片
9)测试脚本 /etc/init.d/squid restart
技术分享图片

10、关闭防火墙 /etc/init.d/iptables stop
技术分享图片
11、关闭selinux vim /etc/sysconfig/selinux
技术分享图片

12、监查日志 tail -f /usr/local/squid/var/logs/access.log
技术分享图片
注释:如上图则表示没有问题

配置客户端
1、设置ip(windows客户端)
技术分享图片
2、手动关闭防火墙
3、设置浏览器代理
技术分享图片
4、确定并关闭浏览器,打开命令行ping www.baidu.com (同时查看代理)

以上是关于Squid正向代理服务器的主要内容,如果未能解决你的问题,请参考以下文章

squid配置 正向代理

squid详解(正向代理透明代理反向代理)

SQUID传统正向代理

实践出真知——基于squid实现正向代理实践

squid----正向代理

Squid正向代理服务器