centos5.5+NAT+Squid透明代理总结
1.安装squid软件包这里用yum来安装。
[root@zh888 ~]# yum -y install squid
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
addons | 951 B 00:00
base | 1.1 kB 00:00
extras | 2.1 kB 00:00
updates | 1.9 kB 00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package squid.i386 7:2.6.STABLE21-6.el5 set to be updated
--> Processing Dependency: perl(URI::URL) for package: squid
--> Running transaction check
---> Package perl-URI.noarch 0:1.35-3 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
squid i386 7:2.6.STABLE21-6.el5 base 1.3 M
Installing for dependencies:
perl-URI noarch 1.35-3 base 116 k
Transaction Summary
================================================================================
Install 2 Package(s)
Upgrade 0 Package(s)
Total download size: 1.4 M
Downloading Packages:
(1/2): perl-URI-1.35-3.noarch.rpm | 116 kB 00:01
(2/2): squid-2.6.STABLE21-6.el5.i386.rpm | 1.3 MB 00:03
--------------------------------------------------------------------------------
Total 239 kB/s | 1.4 MB 00:05
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : perl-URI 1/2
Installing : squid 2/2
Installed:
squid.i386 7:2.6.STABLE21-6.el5
Dependency Installed:
perl-URI.noarch 0:1.35-3
Complete!
2.[root@zh888 ~]# /etc/rc.d/init.d/squid start//启动squid服务
init_cache_dir /var/spool/squid... Starting squid: . [ OK ]
[root@zh888 ~]# chkconfig --list squid
squid 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@zh888 ~]# chkconfig squid on//让系统开机runlevel 234级别启动
[root@zh888 ~]# chkconfig --list squid
squid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@zh888 ~]# /etc/rc.d/init.d/squid status//查看squid的状态
squid (pid 1646) is running...
3.[root@zh888 ~]# cd /etc/squid/
[root@zh888 ~]# wc squid.conf
[root@zh888 ~]# diff squid.conf.default squid.conf
[root@zh888 ~]#sed -e '/\(^#\|^$\)/d' squid.conf.default > squid.conf
4.贴上自己2.6版本squid的/etc/squid/squid.conf文件
http_port 192.168.100.1:3128 transparent// 指定Squid监听浏览器客户请求的端口号3128
cache_mem 200 MB //配置内存缓存数
cache_swap_high 85//最多允许使用swap 85% ipcache_size 2048
cache_swap_low 70 // 最小允许ipcache使用swap 70%
cache_log /dev/null //定义日志存放记录
cache_store_log /dev/null //store日志
emulate_httpd_log on //使用HTTPD登录格式
pid_filename /var/run/squid.pid //pid文件
useragent_log /var/log/squid/useragent.log //用户代理登录文件
ident_timeout 1 seconds //RFC931 身份查找超时:1秒 ident_timeout 1 seconds
cache_dir ufs /home/samba/software/squid 30000 16 256 //高速缓存目录:/home/samba/software/squid 默认目录是/var/spool/squid类型:ufs大小:30000 一级目录:16 二级目录:256
dns_nameservers 202.101.172.35 //dns域名这个为浙江电信
cache_effective_user squid //以unix用户身份运行
cache_effective_group squid //以unix用户身份运行
cache_mgr enjoygoodboy@163.com//高速缓存管理邮件地址
visible_hostname zh888.com//可见主机名
acl all src 0.0.0.0/0.0.0.0 #允许所有IP访问
acl manager proto cache_object #manager
acl localhost src 127.0.0.1/255.255.255.255#允午本机IP
acl to_localhost dst 127.0.0.0/8#允许目的地址为本机IP
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT#请求方法以CONNECT
http_access allow all#允许所有人使用该代理.因为这里是代理加速web服务器
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
coredump_dir /var/spool/squid
重要提示
由于squid的访问控制规则是从上到下寻找匹配,如果匹配到规则,则停止往下匹配.
所以如果要做访问控制,allow和deny的顺序是很有讲究的.
此外,squid.conf默认的4000多行配置不是白给的,真的很有用.有兴趣深入研究squid的哥们
建议花时间看一下.
5.squid常用命令:
/usr/local/squid/sbin/squid -z 初始化缓存空间
/usr/local/squid/sbin/squid 启动
/usr/local/squid/sbin/squid -k shutdown 停止
/usr/local/squid/sbin/squid -k reconfigure 重新载入配置文件
/usr/local/squid/sbin/squid -k rotate 轮循日志
6.启动nat地址转换启动80到3128转换 eth1为lan地址,eth0为wan地址,具体情况可以自行修改。
echo "iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j SNAT --to-source 192.168.20.xx" >>/etc/rc.local
echo "iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.100.0/24 --dport 80 -j REDIRECT --to-ports 3128" >>/etc/rc.local
echo "echo 1 >/proc/sys/net/ipv4/ip_forward">>/etc/rc.local
7.最后客户端xp的ip地址设置ip 192.168.100.12 网络掩码 255.255.255.0
网关为192.168.100.1为代理服务器的lan的ip地址,dns为202.101.172.35也可以是192.168.100.1因为这个我是做bind的所以可以设置为192.168.100.1如果没做过域名解析那就添加8.8.8.8即可。
8. 疑惑的问题
1.cat /var/log/squid/access.log
73 192.168.100.12 TCP_MISS/304 298 GET h - DIRECT/118.144.78.59 总是tcp_miss但是客户端访问没问题。
[root@zh888 squid]# cat /var/log/squid/access.log|gawk '{print $4}'|sort|uniq -c|sort -nr
40 TCP_MISS/200
27 TCP_MISS/304
10 TCP_IMS_HIT/304
6 TCP_MISS/301
1 TCP_NEGATIVE_HIT/404
1 TCP_MISS/204
1 TCP_MEM_HIT/200
1
2./etc/squid/squid.conf//
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
icp_access allow all
http_access allow all
这四句话到底要不加入,但是加入是可以的。
http_access有访问的顺序的,因为默认是全部deny。不过用普通代理也是可以的如图所示:
9.最后介绍一下/var/log/squid/access.log
相应于HTTP请求,下列标签可能出现在access.log文件的第四个域。
TCP_HIT
Squid发现请求资源的貌似新鲜的拷贝,并将其立即发送到客户端。
TCP_MISS
Squid没有请求资源的cache拷贝。
TCP_REFERSH_HIT
Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。原始服务器返回304(未修改)响应,指示squid的拷贝仍旧是新鲜的。
TCP_REF_FAIL_HIT
Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。然而,原始服务器响应失败,或者返回的响应Squid不能理解。在此情形下,squid发送现有cache拷贝(很可能是陈旧的)到客户端。
TCP_REFRESH_MISS
Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。原始服务器响应新的内容,指示这个cache拷贝确实是陈旧的。
TCP_CLIENT_REFRESH_MISS
Squid发现了请求资源的拷贝,但客户端的请求包含了Cache-Control: no-cache指令。Squid转发客户端的请求到原始服务器,强迫cache确认。
TCP_IMS_HIT
客户端发送确认请求,Squid发现更近来的、貌似新鲜的请求资源的拷贝。Squid发送更新的内容到客户端,而不联系原始服务器。
TCP_SWAPFAIL_MISS
Squid发现请求资源的有效拷贝,但从磁盘装载它失败。这时squid发送请求到原始服务器,就如同这是个cache丢失一样。
TCP_NEGATIVE_HIT
在对原始服务器的请求导致HTTP错误时,Squid也会cache这个响应。在短时间内对这些资源的重复请求,导致了否命中。 negative_ttl指令控制这些错误被cache的时间数量。请注意这些错误只在内存cache,不会写往磁盘。下列HTTP状态码可能导致否定 cache(也遵循于其他约束): 204, 305, 400, 403, 404, 405, 414, 500, 501, 502, 503, 504。
TCP_MEM_HIT
Squid在内存cache里发现请求资源的有效拷贝,并将其立即发送到客户端。注意这点并非精确的呈现了所有从内存服务的响应。例如,某些cache在内存里,但要求确认的响应,会以TCP_REFRESH_HIT, TCP_REFRESH_MISS等形式记录。
TCP_DENIED
因为http_access或http_reply_access规则,客户端的请求被拒绝了。注意被http_access拒绝的请求在第9域的值是NONE/-,然而被http_reply_access拒绝的请求,在相应地方有一个有效值。
TCP_OFFLINE_HIT
当offline_mode激活时,Squid对任何cache响应返回cache命中,而不用考虑它的新鲜程度。
TCP_REDIRECT
重定向程序告诉Squid产生一个HTTP重定向到新的URI(见11.1节)。正常的,Squid不会记录这些重定向。假如要这样做,必须在编译squid前,手工定义LOG_TCP_REDIRECTS预处理指令。
NONE
无分类的结果用于特定错误,例如无效主机名。
相应于ICP查询,下列标签可能出现在access.log文件的第四域。
UDP_HIT
Squid在cache里发现请求资源的貌似新鲜的拷贝。
UDP_MISS
Squid没有在cache里发现请求资源的貌似新鲜的拷贝。假如同一目标通过HTTP请求,就可能是个cache丢失。请对比UDP_MISS_NOFETCH。
UDP_MISS_NOFETCH
跟UDP_MISS类似,不同的是这里也指示了Squid不愿去处理相应的HTTP请求。假如使用了-Y命令行选项,Squid在启动并编译其内存索引时,会返回这个标签而不是UDP_MISS。
UDP_DENIED
因为icp_access规则,ICP查询被拒绝。假如超过95%的到某客户端的ICP响应是UDP_DENIED,并且客户端数据库激活了(见附录A),Squid在1小时内,停止发送任何ICP响应到该客户端。若这点发生,你也可在cache.log里见到一个警告。
UDP_INVALID
Squid接受到无效查询(例如截断的消息、无效协议版本、URI里的空格等)。Squid发送UDP_INVALID响应到客户端。
总结:squid命中率很低原因是:找到cach_hit命中率低的原因了:我的squid.conf配置文件中,cache_mem 200 MB,这个值设置的太低,网上建议应该设置为内存的1/3大小,之后,将其改为cache_mem 300 MB后,用命令: squidclient -h host-squid-01 -p 3128 mgr:info结果如下:
Median Service Times (seconds) 5 min 60 min:
HTTP Requests (All): 0.12783 0.13498
Cache Misses: 0.24524 0.30459
Cache Hits: 0.00865 0.00562 //cach_hit命中率86.5%
Near Hits: 0.17711 0.18699
Not-Modified Replies: 0.00286 0.00286
DNS Lookups: 0.04237 0.04639
ICP Queries: 0.00000 0.00000
本文转自zh888 51CTO博客,原文链接:http://blog.51cto.com/zh888/653215,如需转载请自行联系原作者
centos5.5+NAT+Squid透明代理总结相关推荐
- Squid透明代理内网用户上网
Squid透明代理内网用户上网 2015-04-19 20:48:38 标签:squid 路由器 代理服务 ip地址 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明 ...
- Squid服务器应用(Squid传统代理、Squid透明代理、ACL访问控制、Squid日志分析、Squid反向代理)
文章目录 一.缓存代理概述 二.Squid代理服务器 三.代理的工作机制 四.Squid代理的类型 五.部署Squid代理服务器步骤 (一).安装Squid服务 (二).构建传统代理服务器 (三).构 ...
- debian squid透明代理简单配置
实验环境 主机用途 IP 客户端 10.10.100.11 网关 10.10.100.12 ,192.168.65.160 网站 192.168.65.161 客户端配置 配置网关 route add ...
- 使用squid配置透明代理并对上网行为进行控制
使用Squid配置透明代理 环境:CentOS 6.4 + squid-3.1.10-20.el6_5.3.x86_641.检查squid是否默认安装,没有安装先安装 rpm -qa squid 假如 ...
- 缓存加速CDN——squid代理服务器应用(传统代理,透明代理)
squid代理服务 一.缓存代理概述 1.1 web代理的工作机制 1.2 阿里云CDN产品介绍与工作原理 1.3 代理的基本类型 1.4 使用代理的好处 二.部署squid传统代理 2.1 实验环境 ...
- Squid之传统代理和透明代理解析实验步骤
目录 一:squid概述 1.1:squid代理的作用 二:squid的代理类型 三:squid传统代理的部署 3.1: 项目介绍 3.2:部署过程 3.3:修改配置文件,编写脚本优化服务启动项 3. ...
- centos7配置squid代理(透明代理)
squid透明代理 实验材料 这里只是先详细的阐述,后面实验环境配置我会详细讲 一台centos7配置squid服务 添加一块网卡 vm1 网卡IP 192.168.100.102 模拟内网 vm2 ...
- 学会Squid之传统代理和透明代理一篇就够了!
文章目录 squid的概念 一:squid概述 1.1:squid代理的作用 1.2:缓存代理概述 1.21:Web代理的工作机制 二:squid的代理类型 三:squid传统代理的部署 3.1: 项 ...
- squid代理-----透明代理模式
目录 一.squid透明代理 二.实验环境 1.squid服务器添加网卡 2.web服务器指定静态路由 3.开启透明代理 4.设置防火墙规则 5.客户机验证 一.squid透明代理 客户端不需要指定代 ...
最新文章
- float最大值_float.h库
- iMeta期刊纸质版开始免费订阅(包邮)——第一期创刊收藏版
- 4.二叉树的先序、中序以及后序遍历的递归写法与非递归写法(LeetCode第94、144、145题)
- Python divmod方法
- 功能自动化测试工具列表大全
- 【django】项目准备
- Java中数组的地址问题(hashCode解析):
- 解决android扫描二维码时,用户禁止权限报错问题
- cisco 模拟器安装及交换机的基本配置实验心得_网络工程师的Python之路 -- 自动监测网络配置变化...
- 树莓派4烧录系统后黑屏_原创试用 | 树莓派3B+测评(二)ubuntu系统烧录+彩虹屏问题解决...
- c语言字母等腰三角形边框,用C语言编写一个四行*等腰三角形
- java程序设计期末考试试题汇总及答案_《JAVA程序设计》期末考试试题汇总及答案...
- 提供一套基于SpringBoot-shiro-vue的权限管理思路.
- Echarts X轴类型为time时,X轴标签的细化(年月日时分秒)
- mysql5.7源码安装 简书_在CentOS7上编译安装MySQL 5.7.13步骤详解
- FaceBook创始人扎克伯格称Google+是小号版Facebook
- micropython stm32f401_在STM32F401RE(小钢炮CANNON开发板)移植MicroPython
- 腾讯乐固加固+app签名+多渠道打包
- 高级商务办公软件应用【7】
- flow 3d的后处理Analyze打不开是怎么回事呢?
热门文章
- python打印tensor_如何在TensorFlow中打印SparseTensor内容?
- php7自定义异常处理,基于PHP7错误处理与异常处理方法(详解)
- python二维列表转字典_在Python中字符串、列表、元组、字典之间的相互转换
- easyUi reload 重定向URL
- ios 给网页传值_ios常见的页面传值方式
- python中tile的用法_Python:numpy中的tile函数
- 一只青蛙一次可以_“七夕青蛙”被玩坏了,哈哈哈哈哈哈哈哈哈哈太好玩了
- 树莓派python开发教程_树莓派Raspberry开发从基础到进阶视频+设计资料超详细教程下载...
- Navicat连接oracle03135,ORA-03135: connection lost contact的解决方法
- python中filter用法_filter用法--Python