首先描述下硬件环境cpu P4 2.93\2G\80G 单网卡;系统环境为CentOS 5.4 x86_64,所需的squid由yum安装,squid包的版本为squid-2.6.STABLE21-6.el5.

部署完成后,能成功实现透明代理,如下将贴出配置内容,并且在最后将贴出部分参数的解释优化(不针对透明代理),作为以后一个参考内容;我个人也是在不断磨合,学习,所以也希望看到的朋友如果觉得哪些地方参数等需要进一步的调整优化,请指出,感激不尽!

vi /etc/squid/squid.conf

http_port 192.168.1.6:3128 transparent
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443          #https
acl Safe_ports port 53          #dns
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
acl mynet src 192.168.1.0/255.255.255.0
http_access allow mynet
http_access deny all
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow all
http_reply_access allow all
icp_access allow all
hierarchy_stoplist cgi-bin ?
cache_mem 512 MB
cache_dir ufs /var/spool/squid 10240 16 256
maximum_object_size_in_memory 256 KB
maximum_object_size 2048 KB
cache_swap_low 88
cache_swap_high 93
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log squid
cache_store_log /var/log/squid/store.log squid
emulate_httpd_log on
pid_filename /var/run/squid.pid
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
cache_mgr haipeng.wang@simplnano.com
cache_effective_user squid
cache_effective_group squid
visible_hostname ips_squid
udp_incoming_address 0.0.0.0
# udp_outgoing_address 255.255.255.255
dns_nameservers 211.147.6.3
coredump_dir /var/spool/squid

下面是iptables的脚本,此脚本作用关键是重定向80端口,其他规则则允许内网所有包通行,如有相关限制,可再写.

#!/bin/bash
#Filename: firewall
IPS=/sbin/iptables
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
echo "1" > /proc/sys/net/ipv4/ip_forward
$IPS -F
$IPS -X
$IPS -Z
$IPS -F -t nat
$IPS -X -t nat
$IPS -Z -t nat
$IPS -P INPUT DROP
$IPS -P OUTPUT DROP
$IPS -P FORWARD DROP
$IPS -t nat -A PREROUTING -s 192.168.1.0/24 -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
$IPS -t filter -A INPUT -s 127.0.0.1 -j ACCEPT
$IPS -t filter -A FORWARD -s 192.168.1.0/24 -j ACCEPT
$IPS -t filter -A INPUT -s 192.168.1.0/24 -j ACCEPT
$IPS -t filter -A INPUT -i eth0 -j ACCEPT
$IPS -t filter -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
$IPS -t filter -A OUTPUT -o eth0 -j ACCEPT
#$IPS -t nat -A POSTROUTING -o eth0 -j MASQUERADE
###########################################################################

如下为squid相关优化可做参考,源链接为:http://bbs.linuxtone.org/thread-1107-1-1.html

squid 2.6 编译优化参数
*NIX将TCP/IP也作为文件来访问
而squid 2.6默认的访问文件数是1024
作为运营环境使用.就需要修改最大打开文件数
配置时加上?with-maxfd 参数即可
存储方式使用aufs会加快访问速度.因为使用非同步方式
打开snmp,这样可以从cacti之类的snmp软件中获取相关squid的参数进行监控
打开大文件支持.允许日志文件超过2G
./configure --prefix=/usr/local/squid --with-maxfd=65535 --enable-storeio=aufs,ufs --enable-snmp ?with-large-files

补充 另外还需要设置 ulimit 打开文件数
ulimit 参数介绍:

-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes

一般可以设置 ulimit -SHn 65535
请注意,该命令只在当前shell环境下有效,而且只能由root权限来设置,一般可以放在需要启动服务的命令脚本里,另外,如果你是用root登录来启 动服务的话,防止忘记这条命令,一般可以设置在~/.root 下的 .bash_profile 文件中,不建议在/etc/profile 中设置,因为该命令只有root用户有权限将数字增加到超过系统默认的上限(比如 -n 打开文件数 1024 )。
在Linux 环境下默认编译squid(2.6)这个数字是1024,这是受到操作系统默认设置限制的,可以查看一下
/usr/include/bits/typesizes.h
/usr/include/bits/nptl/typesizes.h
/usr/include/linux/posix_types.h
中的 __FD_SETSIZE

查看 当前 squid 能够打开的最大文件句柄数和目前已经打开的数字用以下命令查看最后一段信息

squidclient -p 80 mgr:info

增加一个选项
?with-large-files

当日志文件超过2G后,如果没有这个选项,会导致squid退出

squid代理服务的配置与优化

主要是/opt/bokee/squid/etc/squid.conf文件参数的配置:

#缓存用户UID
cache_effective_user nobody

#缓存用户组 GID
cache_effective_group nobody

#代理服务器的高速缓存;系统默认8M;注意,如果您的机器有N兆内存,那么,推荐您在这里添的数字是N/3。
cache_mem 768 MB

#定义缓冲区
#type: 为存储内型(ufs和asyncufs以及diskd等,ufs使用较多);
#/opt/bokee/squid/cache: 缓冲目录的路径
#8196M: 目录空间大小
#64: 第一层缓冲目录数
#256: 第一层目录下的每一个目录所包含的目录数
cache_dir diskd /opt/bokee/squid/cache 10240 16 256 Q1=72 Q2=64

#将cache目录的所有者更改为nobody
#chown -R nobody:nobody /opt/bokee/squid/cache

关于Cache目录的建议:
由于cache目录是经常的读写,所以最好硬盘能用SCSI的,速度比较快而且稳定。
如果我们的cache大概需要40G的大小,那么我们尽量使用多硬盘,不要当纯用一个40G的硬盘,
可以使用4个10G的硬盘,这样,对于cache的速度更快。比如,当你有10M的东西要写到cache中,
如果是只是用一个硬盘的话,虽然可能你已经将4个cache目录分别放在4个分区,可是你只有一个硬盘,同时只有一个在写入,
可是当你有4个硬盘的时候,你每个硬盘就只要写入2.5M的东西,那样是不是更快呢?
还有,建议将每个cache目录单独存放在一个分区中,分区不要划分太大,一般2至4G就行,这样proxy搜索资料的时候不用耗费太多的时间。

#icp_port参数指定Squid从邻居服务器缓冲内发送和接收ICP请求的端口号。
#这里设置为0是因为这里配置Squid为内部Web服务器的加速器,所以不需要使用邻居服务器的缓冲。
icp_port 0

#swap 性能微调
#有时候由于用户的不正常操作,可能会使与squid的TCP连接处于半关闭状态,这时候,该TCP连接的发送端已经关闭,而接收端正常工作。
#默认时,该值设为on. squid将一直保持这种处于半关闭状态的TCP连接,直到返回套接字的读写错误才将其关闭。
#如果将该值设为off,则一旦从客户端 返回“no more data to read”的信息,squid就立即关闭该连接
half_closed_clients off

#squid使用大量的交换空间来存储对象。过了一定的时间以后,该交换空间就会用完,
#所以还必须定期的按照某种指标来将低于某个水平线的对象清除。 squid使用所谓的“最近最少使用算法”(LRU)来做这一工作。
#当已使用的交换空间达到cache_swap_high时,squid就根据LRU所计算的得到每个对象的值,将低于某个水平线的对象清除。
#这种清除工作一进行到已用空间达到cache_swap_low。这两个值用百分比表示,
#如果所使用的交换空间很大的话,建议减少这两个值得差距,因为这时一个百分点就可能是几百兆空间,这势必影响squid的性能。
#默认为:90-95(大于95会造成不稳定)
cache_swap_high 93
cache_swap_low 88

#maximum_object_size 大于该值的对象将不被存储。如果想要提高访问速度,就请降低该值;如果想最大限度地节约带宽,降低成本,请增加该值。
#默认值为:4096 KB
maximum_object_size 2048 KB

#以下是系统默认值
minimum_object_size 0 KB

#在内存中单个文件最大缓存大小,超过这个大小将不缓存到内存中
maximum_object_size_in_memory 256 KB

#reference_age 3 months
squid根据对象的LRU(最近最少使用算法)来清除对象,squid依据使用磁盘空间的总量动态地计算对象的LRU年龄。
我们用 reference_age定义对象的最大LRU年龄。如果一个对象在指定的reference_age内没有被访问,squid将删除该对象。默认值为一个月。
可以使用如下所示的时间表示方法。
1 week
3.5 days
4 months
2.2 hours

#定义all名为所有ip
acl all src 0.0.0.0/0.0.0.0

#dstdomain指代理服务器代理的主机. 定义bolg名为所有一下的域名的主机
acl blog dstdomain .blogchina.com
acl blog dstdomain localhost
acl blog dstdomain .bokee.com

#允许blog类使用代理服务器
http_access allow blog

#允许使用代理服务器(中间件被其它的squid调用)
#icp_access allow all

#acl denywords url_regex -i sex
#http_access deny badwords
#以上2句不允许使用该缓存服务器访问URL正则表达式中含sex字样的URL

hierarchy_stoplist .jsp Ctrl
acl QUERY urlpath_regex .jsp Ctrl
no_cache deny QUERY
#以上3句不缓存url中有.jsp或Ctrl的页面;直接访问主机.

#默认用户禁止使用代理服务器
http_access deny all

#客户端代理端口(本机的公网ip)
http_port ***.***.***.***:80 vhost vport

### httpd 透明代理设置

#squid2.5

#反向代理的WEB服务端口号。
httpd_accel_port 80

#此处设置反向代理的主机名,如果对后面多个域名进行缓冲,请使用虚拟主机模式(hosts文件中)。
httpd_accel_host virtual(127.0.0.1单个域名时;直接用ip而不用virtual;但须加httpd_accel_single_host on)
或用dns服务器: #dns_nameservers 60.191.254.49

#此处设置开反向代理的同时,是否开普通代理缓存服务。
#如果这行不注释掉,就没有高速缓存功能。不正向代理(不让外面用)就off;默认为on
httpd_accel_with_proxy off

#设定http1.1协议支持
httpd_accel_uses_host_header on

#squid2.6反向代理

cache_peer 127.0.0.1 parent 80 0 no-query originserver

#发生错误时,生成提示所显示的缓存服务器名
visible_hostname www.bokee.com

#发生错误时,生成提示所显示的缓存服务器管理员名
#cache_mgr jhzhou@bokee-inc.com

#打开“emulate_httpd_log”选项,将使Squid仿照Web服务器的格式创建访问记录。
#如果希望使用Web访问记录分析程序,就需要设置这个参数. 默认为off
emulate_httpd_log on

#不写日志
cache_access_log none
cache_log none
cache_store_log none

#写日志
#cache_store_log /var/log/squid/store.log
#cache_access_log /var/log/squid/access.log
#cache_log /var/log/squid/cache.log

#客户端不持续连接
client_persistent_connections off

#设置snmp监控的共同体有密码为123; 默认为public
acl snmppublic snmp_community 123

#设置snmp监控端口;默认为3401
snmp_port 3401

#允许所有的计算机访问snmppublic;默认为all
snmp_access allow snmppublic all

#时间设置
#消极存储对象的生存时间。所谓的消极存储对象,就是诸如“连接失败”及404 Not Found等一类错误信息。默认为:5 minutes。
negative_ttl 1 minutes

#缓存失败的D N S查询结果的生存时间。默认为5min。
negative_dns_ttl 1 minutes

#缓存成功的DNS查询结果的生存时间。默认为6小时。
positive_dns_ttl 1 hours

#在建立与客户的连接后, squid将花多长时间等待客户发出HTTP请求。默认值为30s。
request_timeout 1 minutes

#squid等待连接完成的超时值。默认值为2min。
connect_timeout 1 minutes

#持续连接时间。默认值为1min。
persistent_request_timeout 1 minutes

#squid在与其他服务器和代理建立连接后,该连接闲置多长时间后被关闭。默认值为120秒。
pconn_timeout 1 minutes

配置SQUID,对动态内容强制CACHE,用到的配置参数是refresh_pattern
refresh_pattern ^/forum/viewthread.php 1440 1000% 1440 ignore-reload
/forum/viewthread.php的内容将强制保持1天

有些频繁更新的页面可以不CACHE,用no_cache参数
acl no_forum_cache urlpath_regex ^/forum/forumdisplay.php
no_cache DENY no_forum_cache

转载于:https://blog.51cto.com/wanghaipeng1124/863874

squid+iptalbes实现透明代理配置记录相关推荐

  1. squid+iptables实现透明代理

    NAT 网络地址转换(网络地址映射) 就是把数据包的源IP或者目标IP进行修改. 作用: 修改源IP,叫源地址映射,一般为了实现让私有网络的机器能够访问互联网 修改目标IP,叫目标地址映射,一般为了实 ...

  2. 【Mitmproxy】Mac + Python + mitmproxy透明代理配置,拦截所有网络请求

    Mac OS Monterey 版本 12.1 mitmproxy==8.0.0 Mitmproxy --version Mitmproxy: 8.0.0.dev Python: 3.9.13 Ope ...

  3. squid代理服务之透明代理的配置方法

    本章目录 一:透明代理实验过程 1.1:环境 1.2 配置双网卡 1.3 client客户端修改 1.4:squid服务器配置 1.5:web端设置 1.6:再次使用client客户端访问web端 1 ...

  4. Squid 正反向 / 透明代理

    squid是什么? Squid是一种用来缓冲Internet数据的软件.它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求.也就是说,如果一个人想下载一web页 ...

  5. 【APP】squid 3.0反向代理配置

    系统环境:centos 5.5 64位 一.安装篇: 添加squid运行账户 groupadd squid useradd -g squid -s /bin/false -M squid 添加日志目录 ...

  6. 使用squid配置透明代理并对上网行为进行控制

    使用Squid配置透明代理 环境:CentOS 6.4 + squid-3.1.10-20.el6_5.3.x86_641.检查squid是否默认安装,没有安装先安装 rpm -qa squid 假如 ...

  7. squid缓存服务器 ACL访问控制 传统代理 透明代理 squid日志分析 反向代理

    缓存代理概述 Squid提供了强大的代理控制机制,通过合理的设置ACL,并进行限制,可以针对源地址.目标地址.访问的URL路径.访问的时间等条件进行过滤. 作为应用层的代理服务器软件,Sqiod主要提 ...

  8. Squid之传统代理和透明代理解析实验步骤

    目录 一:squid概述 1.1:squid代理的作用 二:squid的代理类型 三:squid传统代理的部署 3.1: 项目介绍 3.2:部署过程 3.3:修改配置文件,编写脚本优化服务启动项 3. ...

  9. 缓存加速--Squid代理服务器应用(传统代理、透明代理)

    文章目录 一. Squid 服务基础 1.1 代理的工作机制 1.2 代理的基本类型 二. squid代理服务器(传统模式)搭建 实验目的 实验参数 实验过程 1. 手工编译安装squid 2. 修改 ...

最新文章

  1. python学习之第一课时--初始python
  2. webx3 日志系统级别问题
  3. 如何开发一个高性能的redis cluster proxy
  4. stack.pop()方法_C.示例中的Stack.Pop()方法
  5. We7 CMS 2.7beta3 版发布!SVN源码同步开放
  6. C++_引用_引用的基本语法_注意事项_引用做函数参数---C++语言工作笔记031
  7. anaconda如何做python笔记_python笔记
  8. 数据库树形结构、多级联动的表设计
  9. 计算机插曲符号怎么找不到,怎么打出来简谱的符号?
  10. word2vec模型
  11. CentOS7下宽带连接
  12. html5做在线课件,HTML5教程:制作移动教育课件
  13. python3 爬虫入门 简单爬取京东商品名称案例 详细笔记说明
  14. 中邮消费金融面试随笔
  15. Patch:虚拟DOM最核心的部分--如何对比虚拟DOM树,以及如果生成真实DOM
  16. 数据库审计是什么意思?作用是什么?
  17. 中缀表达式转后缀表达式——c语言栈实现
  18. 基于SSM+Vue游戏商城系统Java游戏攻略网站(源码调试+讲解+文档)
  19. 出租屋网络常用配置方案
  20. 看看佛祖是怎么巧妙的调配队伍的!

热门文章

  1. 单端信号和差分信号的区别
  2. Vue项目build后静态资源文件路径或新建文件夹图片路径找不到的问题
  3. docker 安装MongoDB以及设置用户
  4. 向大家推荐一个C/C++通用Makefile
  5. 非常详细的测试unity与android之间的通讯操作
  6. 正常正则表达式(不允许为空…
  7. android之lint警告This Handler class should be static or leaks might occur
  8. Ubuntu11.10下载android4.0.1源码
  9. java编写socket使用bufferedReader.readLine()问题研究
  10. Tengine编译安装config项目清单