构建squid代理服务器
基本概念
本文使用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代理服务器的更多相关文章
- CentOS 7 Squid代理服务器正向代理-透明代理
Squid是Linux系统中最常用的一款开源代理服务软件,主要提供缓存加速和应用层过滤控制的功能,可以很好的实现HTTP.FTP.DNS查询以及SSL等应用的缓存代理 透明代理:提供与传统代理相同的功 ...
- CentOS 7 Squid代理服务器正向代理-传统代理
Squid是Linux系统中最常用的一款开源代理服务软件,主要提供缓存加速和应用层过滤控制的功能,可以很好的实现HTTP.FTP.DNS查询以及SSL等应用的缓存代理 传统代理:普通的代理服务,多见于 ...
- Squid代理服务器(二)——配置Squid服务器
一.传统代理 (一)需求分析 局域网内,客户机访问自家的Web服务器,通过Squid代理服务器访问Web服务器,再由Squid反馈给客户机;在Squid主机上,构建Squid为客户机访问网站提供代理服 ...
- squid 代理服务器应用
squid 代理服务器应用 1.Squid 代理服务器 : Squid 主要提供缓存加速.应用层过滤控制的功能. 代理的工作机制: 代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址. 将获得 ...
- Squid代理服务器应用
Squid代理服务器应用 目录 Squid代理服务器应用 一.Squid的脚本概念 1. Squid的作用 2. Web代理的工作机制 3. 代理服务器的概念 4. 代理服务器的作用 5. 代理的基本 ...
- CentOS安装squid代理服务器
Squid是一个Linux系统下优秀的代理服务器软件.Squid可以配置普通上网代理(正向代理).反向代理.透明代理.系统是CentOS6.2.Squid主机IP为192.168.1.100. 安装s ...
- 【转载】CentOS 6.4下Squid代理服务器的安装与配置
一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...
- CentOS 6.4下Squid代理服务器的安装与配置
一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...
- Squid代理服务器的安装与配置
一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...
随机推荐
- UI自动化测试模型
所谓的自动化测试模型,可以理解为自动化测试框架+工具设计的一种思想产物. 先说说库.框架.工具之间的区别: 库:英文名Library,由代码集成的一个产品,供用户调用.面向对象的库叫做类库,面向过程的 ...
- nginx安装升级及配置详解
1.简介 2.安装配置 3.配置文件介绍 4.启动.停止.平滑重启.升级 一.Nginx简介 Nginx(engine x)是俄罗斯人Igor Sysoev编写的一款高性能的http和反向代理服务器. ...
- Jquery的window.onload实现
我们都知道jquery的$(document).ready(function(){});与window.onload不同,第一个是在DOM树构建完成后触发,第二个是页面完全加载后(包括图片等资源的加载 ...
- React 等框架使用 index 做 key 的问题
React 等框架使用 index 做 key 的问题 假如有两个树,一个是之前,一个是更变之后,我们抽象成两种可能性. 插入内容在最后 插入内容在最前 关于插在中间,原理一样,就不阐述. 使用 ul ...
- [UWP 自定义控件]了解模板化控件(8):ItemsControl
1. 模仿ItemsControl 顾名思义,ItemsControl是展示一组数据的控件,它是UWP UI系统中最重要的控件之一,和展示单一数据的ContentControl构成了UWP UI的绝大 ...
- javascript调用ActiveX接口失败的解决方案及使用心得
前段时间公司做了个比较大的项目,需要用到ocx控件,我厂大部分项目都采用C#.net,而winform程序条用ocx控件接口是相对简单的,但是javascript调用ocx接口,却和winform的用 ...
- Nginx---应用场景小结
Nginx介绍 Nginx一是一款轻量级的.高性能的HTTP.反向代理服务器,具有很高的稳定性.支持热部署.模块扩展也非常容易.Nginx采取了分阶段资源分配技术,处理静态文件和无缓存的反向代理加 ...
- ansible一键部署k8s单机环境
一.虚拟机准备 干净的Centsot7.4.4G内存.2个CPU 最小化安装,最好带虚拟化 二.执行初始化脚本 注意:脚本中配置静态网卡根据实际网卡名称配置,我用的是ens33 可以用 sed -i ...
- tomcate+keepalived配置双机热备
环境清单: 应用1:192.168.51.101 应用2:192.168.51.75 虚拟IP:192.168.51.179 一.安装Tomcat(参照其他文档): 二.部署应用,并修改响应的端口(9 ...
- Spring RPC 入门学习(2)-获取Map对象
Spring RPC传递Map用例编写 1. 新建RPC接口类 package com.cvicse.ump.rpc.interfaceDefine; import java.util.Map; pu ...