基本概念

本文使用squid代理服务

 软件介绍:百度百科

 作为应用层的代理服务软件,Squid主要提供缓存加速、应用层过滤控制的功能;

 工作机制:缓存网页对象,减少重复请求(HTTP代理的缓存加速对象主要为文字、图像等静态Web元素);

 代理类型:

  • 传统代理:适用于Internet,需明确指定服务端;
  • 透明代理:适用于共享上网网关,不需指定服务端;

 使用代理的优点:

  • 提高Web访问速度;
  • 隐藏客户机的真实IP地址;

其他可以实现数据缓存的软件:

   本文不过多介绍

编译安装Squid软件&&基本使用

软件软件下载地址:http://www.squid-cache.org/

1.编译安装软件

tar zxvf squid-3.4..tar.gz -C /usr/src/  //解包
cd /usr/src/squid-3.4./
./configure --prefix=/usr/local/squid --sysconfdir=/etc/ --enable-arp-acl --enable-linux-netfiulter --enable-linux-tproxy --enable-async-io= --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll --enable-gunregex //配置,更多配置可以参考"./configure --help"
make && make install  //编译并安装 ln -s /usr/local/squid/sbin/* /usr/local/sbin/  #优化执行路径
useradd -M -s /sbin/nologin squid  #创建程序用户
chown -R squid:squid /usr/local/squid/var/  #更改指定目录额属主和属组
chmod -R 757 /usr/local/squid/var/  #修改指定目录的权限,以便写入日志

配置项说明:

--prefix=/usr/local/squid            //安装目录;
--sysconfdir=/etc/ //单独将配置文件修改到其他目录下;
--enable-arp-acl //可以在规则中设置直接通过客户端MAC进行管理,防止客户端使用IP欺骗;
--enable-linux-netfiulter //使用内核过滤;
--enable-linux-tproxy //支持透明模式;
--enable-async-io= //异步I/O,提升存储性能,相当于--enable-pthreads --enable-storeis=ufs,aufs --with-pthreads --with-aufs-thread=值;
--enable-err-language="Simplify_Chinese" //错误信息的显示语言;
--enable-underscore //允许URL中有下划线;
--enable-poll //使用Poll()模式,提升性能;
--enable-gunregex //使用GNU正则表达式;

配置项说明

配置文件内容:

位置::/etc/squid.conf(更详细的配置项请参考/etc/squid.conf.documented文件)

#
# Recommended minimum configuration:
# # Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/ # RFC1918 possible internal network
acl localnet src 172.16.0.0/ # RFC1918 possible internal network
acl localnet src 192.168.0.0/ # RFC1918 possible internal network
acl localnet src fc00::/ # RFC local private network range
acl localnet src fe80::/ # RFC link-local (directly plugged) machines acl SSL_ports port
acl Safe_ports port # http
acl Safe_ports port # ftp
acl Safe_ports port # https
acl Safe_ports port # gopher
acl Safe_ports port # wais
acl Safe_ports port - # unregistered ports
acl Safe_ports port # http-mgmt
acl Safe_ports port # gss-http
acl Safe_ports port # filemaker
acl Safe_ports port # multiling http
acl CONNECT method CONNECT #
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access deny !Safe_ports # Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports # Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager # We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost #
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
# # Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost # And finally deny all other access to this proxy
http_access deny all # Squid normally listens to port
http_port //用来指定代理服务监听的地址和端口(默认端口为3128) # Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /usr/local/squid/var/cache/squid # Leave coredumps in the first cache dir
coredump_dir /usr/local/squid/var/cache/squid #
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp: %
refresh_pattern ^gopher: %
refresh_pattern -i (/cgi-bin/|\?) %
refresh_pattern . %

squid.conf文件

Squid运行控制:

  squid -k parse  //检查配置文件语法是否正确

  squid       //开启服务

  squid -k kill   //停止服务

  squid -z     //初始化缓存目录(清理缓存目录**服务停止的情况下)

更多的使用方法请参考:http://linux.51yip.com/search/squid

创建Squid服务脚本:

github address:https://github.com/spdir/ShellScripts/blob/master/squid.sh

#!/bin/bash
# chkconfig: #可以使用-,-的意思是所有运行级别
# 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" #程序运行才会有pid文件,反之则无
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid" case "$1" in
start)
netstat -anpt | grep squid $> /dev/null
if [ $? -eq ]
then
echo "Squid is running"
else
$CMD
fi
;;
stop)
$CMD -k kill $> /dev/null #调用squid命令停止服务
rm -rf $PID $> /dev/null #删除pid文件
;;
status)
[ -f $PID ] &> /dev/null #检测pid文件是否存在
if [ $? -eq ] #假如文件存在则0等于0,执行netstat命令展示端口
then
netstat -aupt | grep squid
else
echo "Squid is not running"
fi
;;
restart)
$ stop $> /dev/null #注意:$ stop的意思是调用之前定义的stop
echo "正在关闭Squid..."
$ start $> /dev/null
echo "正在启动Squid..."
;;
reload)
$CMD -k reconfigure #重新加载,但不中断服务,配置更改后,建议用这种方式加载
;;
check)
$CMD -k parse #检查配置文件语法是否错误
;;
*)
echo "用法:$0 {start | stop | restart | reload | check | status}" # $0代表脚本名字/etc/squid.conf的用法
;;
esac

squid

  将这个文件放到/etc/init.d/目录下并命名为squid  

chmod +x /etc/init.d/squid  //赋予执行权限
chkconfig --add squid  //添加到系统服务
chkconfig squid on

这样我们就可以通过squid脚本来启动、停止、重启、重载Squid服务了。

构建传统代理服务

案例环境说明:

  • 主机B提供Web代理服务
  • 主机C通过代理访问主机A的网站

Squid服务器配置:

vim /etc/squid.conf     //修改配置文件   

    省略......
http_access allow all //放在http_access deny all 之前
http_port
reply_body_max_size MB //允许下载的最大文件大小(10MB)[可选]
省略......

在防火墙中添加允许策略:(在实验环境中可以选择直接关闭防火墙)

iptables -I INPUT -p tcp --dport  -j ACCEPT
service iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]

重载Squid服务

service squid reload

客户机的代理配置

  windows客户端:

   linux客户端:

vim /etc/profile
http_proxy=http://192.168.10.1:3128 # 分别指定http、https、ftp协议使用的代理服务器地址
  
https_proxy=http://192.168.10.1:3128
  
ftp_proxy=http://192.168.10.1:3128
  
no_proxy=192.168.. # 访问局域网地址(192.168.20.0/24网段)时不使用代理,可以用逗号分隔多个地址
  
export http_proxy https_proxy ftp_proxy no_proxy

porfile文件添加内容

source /etc/profile  //立即生效

代理服务的验证方式:

  在客户机192.168.10.254中通过浏览器访问目标网站 http://192.168.10.10/ 然后观察Squid代理服务器、Web服务器的访问日志,以验证代理服务是否发挥作用。

构建透明代理

案例环境说明:

  • Linux网关提供透明代理服务
  • 局域网通过代理访问Internet中的网站

配置Squid支持透明代理:

vim /etc/squid.conf    //修改squid配置文件
省略......
http_port 192.168.10.1: tranparent //只在其中一个IP地址上提供服务
省略......

设置iptables的重定向策略

REDIRETC也是一种数据包控制类型,只能在nat表的PREROUTIN或OUTPUT链以及被调用的链中使用,通过"--to-prots 端口号"的形式来指定映射的目标端口。

iptables -t nat -I PREROUTING - eth1 -s 192.168.10.0/ -p tcp --dport  -j REDIRECT --to-prots             //http
iptables -t nat -I PREROUTING - eth1 -s 192.168.10.0/ -p tcp --dport -j REDIRECT --to-prots //https
service iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]

3.验证透明代理的使用

为了验证透明代理的效果,如果手动指定的代理服务器设置应在客户机中将其去除。

linux客户机中的取出方式通过Unset命令清除http_proxy,https_proxy

unset http_proxy https_proxy

验证方式:(和传统的方式相同)

  在客户机192.168.10.254中通过浏览器访问目标网站 http://192.168.10.10/ 然后观察Squid代理服务器、Web服务器的访问日志,以验证代理服务是否发挥作用。

未完待续......

构建squid代理服务器的更多相关文章

  1. CentOS 7 Squid代理服务器正向代理-透明代理

    Squid是Linux系统中最常用的一款开源代理服务软件,主要提供缓存加速和应用层过滤控制的功能,可以很好的实现HTTP.FTP.DNS查询以及SSL等应用的缓存代理 透明代理:提供与传统代理相同的功 ...

  2. CentOS 7 Squid代理服务器正向代理-传统代理

    Squid是Linux系统中最常用的一款开源代理服务软件,主要提供缓存加速和应用层过滤控制的功能,可以很好的实现HTTP.FTP.DNS查询以及SSL等应用的缓存代理 传统代理:普通的代理服务,多见于 ...

  3. Squid代理服务器(二)——配置Squid服务器

    一.传统代理 (一)需求分析 局域网内,客户机访问自家的Web服务器,通过Squid代理服务器访问Web服务器,再由Squid反馈给客户机;在Squid主机上,构建Squid为客户机访问网站提供代理服 ...

  4. squid 代理服务器应用

    squid 代理服务器应用 1.Squid 代理服务器 : Squid 主要提供缓存加速.应用层过滤控制的功能.  代理的工作机制: 代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址. 将获得 ...

  5. Squid代理服务器应用

    Squid代理服务器应用 目录 Squid代理服务器应用 一.Squid的脚本概念 1. Squid的作用 2. Web代理的工作机制 3. 代理服务器的概念 4. 代理服务器的作用 5. 代理的基本 ...

  6. CentOS安装squid代理服务器

    Squid是一个Linux系统下优秀的代理服务器软件.Squid可以配置普通上网代理(正向代理).反向代理.透明代理.系统是CentOS6.2.Squid主机IP为192.168.1.100. 安装s ...

  7. 【转载】CentOS 6.4下Squid代理服务器的安装与配置

    一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...

  8. CentOS 6.4下Squid代理服务器的安装与配置

    一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...

  9. Squid代理服务器的安装与配置

    一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...

随机推荐

  1. Java发送QQ邮件

    面试的时候被问到这个问题,别人问我用Java发过邮件没有,被问得一脸懵逼.然后就研究了一下,不是很难,按照网上的方法折腾了几天就搞出来了. 首先,使用QQ邮箱发送邮件之前需要在邮箱里面配置,开启pop ...

  2. 学习CSS布局 - position

    position 为了制作更多复杂的布局,我们需要讨论下 position 属性. 它有一大堆的值,名字还都特抽象,别提有多难记了. 让我们先一个个的过一遍,不过你最好还是把这页放到书签里. 先看下运 ...

  3. (转)vim中多行注释

    1.多行注释:  1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;  2. 在行首使用上下键选择需要注释的多行;  3. 按下键盘(大写)“I”键,进入插入模式:  ...

  4. try--catch--finally中return返回值执行的顺序

    1.try块中没有抛出异常,try.catch和finally块中都有return语句 public static int NoException(){ int i=10; try{ System.o ...

  5. Nginx URL后面不加斜杠301重定向

    今天开发碰到一个问题,其实之前就有这个问题,但是一直都没去关注,今天测试碰到了就解决一下. 问题情况: 当我请求 http://admindev.jingruiauto.com/store/views ...

  6. 宇宙最强IDE,查看设计器报错,看不了设计界面

    在使用自定义控件或者用户控件的时候,查看设计器打不开界面的原因: Loaded事件中加以下判断条件:if (!DesignerProperties.GetIsInDesignMode(this))

  7. MySQL数据库对象-索引

    1. 概述2. 索引分类2.1 不同索引的概念2.1.1 普通索引2.1.2 唯一索引2.1.3 全文索引2.1.4 多列索引3. 索引操作3.1 普通索引3.1.1 创建表时创建普通索引3.1.2 ...

  8. U盘、移动硬盘等弹出 “文件或目录损坏且无法读取” 实测解决办法

    U盘跟其他的机器一样,使用久了难免会出故障,比如常见的弹出一个文件或目录损坏且无法读取的对话框,吓你一跳,整个U盘都损坏的意思,那里面的资料怎么办呢,所以很多人很着急,其实遇到这种情况一般都是之前使用 ...

  9. zabbix邮件报警功能的验证

    zabbix里面设置了很多监控项,有很多重要的监控预警,必须保证zabbix邮件报警功能正常,以确保那些告警信息能及时发送到运维人员的邮箱里. 所以需要每天8:30发一封确认zabbix邮件报警功能正 ...

  10. 2016.3.24 OneZero站立会议

    会议时间:2016.3.24 15:35-15:55 会议成员:王巍 夏一名 冉华 张敏 会议内容: 1.确立UI界面原形(见http://www.cnblogs.com/zhangminss/p/5 ...