首页 > 代码库 > squid
squid
https://www.ibm.com/developerworks/cn/linux/l-cn-squid/
http://os.51cto.com/art/201009/225813.htm
Squid中文权威指南
http://zyan.cc/book/squid/index.html
Squid代理服务器的安装与配置
按照代理类型的不同,可以将Squid 代理分为正向代理和反向代理
正向代理 后面是电脑用于office上网 节省带宽资源
反向代理 后面是服务器 用于缓存
正向代理中,根据实现方式的不同,又可以分为普通代理和透明代理。
普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;
透明代理:适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务
squid -v 查看squid版本
squid -h 查看squid的命令选项
squid -kche 查看是否语法错误
squid -krec 重新加载配置文件
ps -aux | grep squid 查看squid是否启动
如何命令测试squid代理
curl -xlocalhost:8080 http://www.baidu.com -I
如果出现一堆信息,说明代理成功
-I 只返回HTTP的返回代码
squid反向代理 配置
http_port 80 accel vhost
accel 表示squid为加速模式
vhost 表示开启反向代理
为什么要使用代理?
1.缓存加速访问
2.访问的限制和过滤
普通代理和透明代理的区别?
普通代理用户端需要设置, 透明代理在网关上面做,用户端不需要设置.
正向代理和反向代理的区别?
1.Squid配置文件和日志文件?
/etc/squid/squid.conf
2.Squid如何做认证?
认证程序用: apache自带的NCSA
Squid实现用户名密码,使用HTTPBasicAuth 的方式。 需要htpasswd工具来创建passwd文件 (安装Apache软件,此工具会附带安装, 或者使用 apt-get/yum install http-tools的方式安装此工具)
A. 创建用户‘proxy_username’ 的命令如下:
htpasswd -c /etc/squid/passwd proxy_username
输入相应的密码后,生成 文件 /etc/squid/passwd
2. 将下述代码添加到/etc/squid/squid.conf 中即配置实用验证的功能:
// 在 http_access deny all 上面加上如下权限配置,注意,一定要在这句上面
//用户名密码配置
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
acl auth_user proxy_auth REQUIRED
http_access allow auth_user
http://blog.csdn.net/fcc7619666/article/details/52022204
重启squid,使用命令:
service squid restart 或/etc/init.d/squid restart
3.Squid如何做访问控制?
通过acl来控制访问 访问的时间 访问的网络
常用配置:
http_port 3128 (监听端口)
cache_mem 64MB (内存)
maximun_object_size 4069KB ()
reply_body_max_size 10240000 allow all (单个文件最大值)
access_log /var/log/squid/access.log squid (日志存储)
#visible_hostname proxy.test.com (可见主机)
dns_testnames www.goole.com (DNS的域名,可根据 自己的DNS域名重新定义)
cache_dir ufs /var/spool/squid 100 16 256 (缓存目录)
ufs:缓存数据的存储格式
100:为缓存目录分配的磁盘空间
16:缓存空间的一级子目录的个数
256:缓存空间的二级子目录的个数
cache_mgr squid@test.com (管理员邮箱)
cache_effective_group squid
error_directory /usr/share/squid/errors/语言(默认为English)
5 .a.修改主配置文件:vim /etc/squid/squid.conf
对于以上项需要修改的做一些修改,然后保存退出。
b.初始化缓存目录:squid -z
c.启动squid服务:squid –D(测试启动)
squid –d N(调试启动级别)
或者使用命令:service squid start
chkconfig squid on(将其加入开机自动启动列表中)
d.tail -t /var/log/squid/access.log(查看日志)
trace,跟踪服务,默认不退出
****************************************************************************
案例:(以虚拟机为实验环境)假设有一台服务器(IP地址:192.168.0.254/32),内网客户机为192.168.10.112/24,现在要求使用squid透明代理来实现内网对外网的访问,squid的【内网接口地址:eth0:192.168.10.110】,【外网接口地址:eth1:192.168.0.112】
要求:访问时间:18:30--8:30
只允许192.168.10.0/24访问
不能下载以.rmvb和.mp3为后缀的文件
实现透明代理
单个文件最大不能超过100M
代理端口为8080
错误提示为中文
管理员邮箱 root@test.com
内存大小为64M
缓存目录为1024M
必须设置可见主机名
准备工作:
4. 编辑squid的主配置文件:
Vim /etc/squid/squid.conf
1.
acl worktime time 18:30-23:59
acl worktime time 00:00-08:30
(访问时间限制:18:30--8:30)
2.
acl mynetwork src 192.168.10.0/24
acl myserver dst 192.168.0.254/32
http_access allow mynetwork
(允许访问的网段)
3. acl notmp3 url_regex -i .*/.mp3
acl normvb url_regex -i .*/.rmvb
http_access allow mynetwork !notmp3
http_access allow mynetwork !notrmvb
(不允许下载以.rmvb和.mp3为后缀的文件)
4.在squid服务器上添加iptables规则:
iptables –t nat –A PREROUTING -i eth1 –s 192.168.10.0/24 –p tcp --dport 80 –j REDIRECT --to-ports 8080
透明代理:客户端浏览时,不需在browser中指定代理服务器的地址和端口。
5. reply_body_max_size 102400000 allow all
(单个文件最大不能超过100M)
6. http_port 192.168.10.110:8080(代理服务器监听内网网卡的8080端口)
7. error_directory /usr/share/squid/errors/Simplify_Chinese
(默认为English,此项是当出现错误时,用中文提示)
8. cache_mgr root@test.com(管理员邮箱)
9. cache_mem 64 MB(内存大小,默认为8M)
10. cache_dir ufs /var/spool/squid 1024 16 256(各个数字表示什么意思,可参考前面的介绍)
11. visible_hostname mail.test.com(默认没有设置,需要自己添加)
12.分别对上面的设置进行配置ACL访问控制
常用列表类型:
src(基于客户端地址做控制)
dst ,port,srcdomain,dstdomain
time,maxconn,url_regex,urlpath_regex
1.基于源地址
acl mynetwork src 192.168.10.0/24
http_access allow mynetwork
地址可为:IP/SubMask 或者IP1~IP2/SubMask
2.基于目标地址:
acl mynetwork src 192.168.10.0/24
acl myserver dst 192.168.0.254/32
http_access mynetwork !myserver(所有mynetwork网段的都不允许访问myserver)
a1. http_access deny myserver (不允许访问
a2. http_access allow mynetwork 192.168.0.254 )
b1. http_access deny myserver(允许访问
b2. http_access deny myserver 192.168.0.254)
3.正则表达式:(url_regex)
acl alname url_regex [-i] pattern【-i的作用:忽略大小写】
eg:
acl mynetwork src 192.168.10.0/24
acl notpdf url_regex -i ^http.*/.pdf (全路径,包括协议)
http_access mynetwork !notpdf(不允许mynetwork网段的地址访问pdf格式的文件)
4.正则表达式(urlpath_regex)
acl mynetwork src 192.168.10.0/24
acl notchm urlpath_regex –i .*/.chm$ (以某种格式结尾)
http_access mynetwork !notchm
5.基于协议:FTP,HTTP,ICP
acl myproto proto HTTP
6.基于browser
acl mynetwork src 192.168.10.0/24
acl notfire browser MOZILLA
http_access allow mynetwork !notfire
7.maxconn (并发可连接数)
acl mynetwork src 192.168.10.0/24
acl twoconn maxconn 2(最多允许两个)
http_access deny mynetwork twoconn
或者:http_access allow mynetwork !twoconn
8.srcdomain
基于域名做源地址控制,不常用,需反解。
acl mydomain srcdomain mail.test.com
http_access deny mydomain
9.dstdomain基于域名做目标地址控制
acl domainserver dstdomain origin@example.com
http_access allow domainserver
11. 基于时间(time)
SàSunday MàMonday TàTuesday
WàWednesday HàThursday FàFriday
AàStaurday (星期)
acl worktime time 10:00—23:59
acl worktiime time 00:00-05:59
在acl中aclname相同时,取并集
squid
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。