基本概念

本文使用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. AI 正则化

    正则化,是减少泛化误差的技术.

  2. PAM unable to dlopen(/lib/security/pam_limits.so): /lib/security/pam_limits.so: wrong ELF class: ELFCLASS32

    systemctl status sshd● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/ ...

  3. omcat+java的web程序持续占cpu高问题调试【转】

    1.top -c 2.查看具体线程 ps -m -p 30997 -o tid,%cpu,%mem > threads.log 3.printf %x 31865 其次将需要的线程ID转换为16 ...

  4. USB协议枚举过程详解

    一 枚举过程之文字描述 ?主机集线器监视着每个端口的信号电压,当有新设备接入时便可觉察.(集线器端口的两根信号线的每一根都有15kΩ的下拉电阻,而每一个设备在D+都有一个1.5kΩ的上拉电阻.当用US ...

  5. springbootAdmin+eureka集群+swagger

    请移步githubb下载源码.知识共享.(https://github.com/yivvonllh) 或者直接git下载(https://github.com/yivvonllh/spring-clo ...

  6. HihoCoder1192 简单的树嵌入 dfs、构造

    题目传送门:http://hihocoder.com/problemset/problem/1192 大意:给出一棵$N$个点的树,边权为$1$,要求给每个点构造$M$个权值$v_1...v_M$,使 ...

  7. NoSql的三大基石:CAP理论&BASE&最终一致性

    关系型数据库的局限 NoSql出现在关系型数据库之后,主要是为了解决关系型数据库的短板,我们先来看看随着软件行业的发展,关系型数据库面临了哪些挑战: 1.高并发 一个最典型的就是电商网站,例如双11, ...

  8. MySQL调优基础, 与hikari数据库连接池配合

    1.根据硬件配置系统参数 wait_timeout  非交互连接的最大存活时间, 10-30min max_connections   全局最大连接数 默认100 根据情况调整 back_log   ...

  9. GBDT和随机森林的区别

    GBDT和随机森林的相同点: 1.都是由多棵树组成 2.最终的结果都是由多棵树一起决定 GBDT和随机森林的不同点: 1.组成随机森林的树可以是分类树,也可以是回归树:而GBDT只由回归树组成 2.组 ...

  10. CAD2020下载安装AutoCAD2020中文版下载地址+安装教程

    AutoCAD2020中文版为目前最新软件版本,我第一时间拿到软件进行安装测试,确保软件正常安装且各项功能正常可以使用,立刻拿出来分享,想用最新版本的话,抓紧下载使用吧: 我把我用的安装包贡献给你下载 ...