Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户象要下载一个主页时,它向 Squid发出一个申请,要Squid替它下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。
安装
yum install squid
修改配置文件 /etc/squid/squid.conf
(如果该文件配置坏掉了,有 squid.conf.default 可以备用,两个文件在刚安装后是一模一样的)
# squid 端口,默认是3128
http_port 3128
# 指定硬盘缓冲区的大小
# ufs: 缓存类型
# /var/spool/squid:缓存目录
# 300:缓存大小(Mbytes)
# 允许在“/tmp”下创建的第一级子目录数为16,每个第一级子目录下可以创建的第二级子目录数量为256
cache_dir ufs /var/spool/squid 300 16 256
# 自定义某个IP或者某网段,使用 http_access 选项允许该列表
acl our_networks src 11.11.11.11/255.255.255.255
acl our_networks src 12.12.12.12/29
http_access allow our_networks
# 服务器的主机名,可随便定义
visible_hostname 221_170
# 关闭此项将在访问网站时显示的IP是unknown,如果打开则显示的是你client的内网IP
forwarded_for off
# 防止知道客户的内部 ip
header_access Via deny all
# 防止知道代理服务器的服务器名以及端口
header_access X-Forwarded-For deny all
启动 squid
service squid start
squid 的 log:/var/log/squid/
access.log cache.log squid.out store.log
给出一些 header,可以屏蔽它们
Accept HTTP_ACCEPT
Accept-Charset HTTP_ACCEPT-CHARSET
Accept-Encoding HTTP_ACCEPT-ENCODING
Accept-Language HTTP_ACCEPT-LANGUAGE
Accept-Ranges HTTP_ACCEPT-RANGES
Age HTTP_AGE
Allow HTTP_ALLOW
Authorization HTTP_AUTHORIZATION
Cache-Control HTTP_CACHE-CONTROL
Connection HTTP_CONNECTION
Content-Base HTTP_CONTENT-BASE
Content-Disposition HTTP_CONTENT-DISPOSITION
Content-Encoding HTTP_CONTENT-ENCODING
Content-Language HTTP_CONTENT-LANGUAGE
Content-Length HTTP_CONTENT-LENGTH
Content-Location HTTP_CONTENT-LOCATION
Content-MD5 HTTP_CONTENT-MD5
Content-Range HTTP_CONTENT-RANGE
Content-Type HTTP_CONTENT-TYPE
Cookie HTTP_COOKIE
Date HTTP_DATE
ETag HTTP_ETAG
Expires HTTP_EXPIRES
From HTTP_FROM
Host HTTP_HOST
If-Match HTTP_IF-MATCH
If-Modified-Since HTTP_IF-MODIFIED-SINCE
If-None-Match HTTP_IF-NONE-MATCH
If-Range HTTP_IF-RANGE
Last-Modified HTTP_LAST-MODIFIED
Link HTTP_LINK
Location HTTP_LOCATION
Max-Forwards HTTP_MAX-FORWARDS
Mime-Version HTTP_MIME-VERSION
Pragma HTTP_PRAGMA
Proxy-Authenticate HTTP_PROXY-AUTHENTICATE
Proxy-Authentication-Info HTTP_PROXY-AUTHENTICATION-INFO
Proxy-Authorization HTTP_PROXY-AUTHORIZATION
Proxy-Connection HTTP_PROXY-CONNECTION
Public HTTP_PUBLIC
Range HTTP_RANGE
Referer HTTP_REFERER
Request-Range HTTP_REQUEST-RANGE
Retry-After HTTP_RETRY-AFTER
Server HTTP_SERVER
Set-Cookie HTTP_SET-COOKIE
Title HTTP_TITLE
Transfer-Encoding HTTP_TRANSFER-ENCODING
Upgrade HTTP_UPGRADE
User-Agent HTTP_USER-AGENT
Vary HTTP_VARY
Via HTTP_VIA
Warning HTTP_WARNING
WWW-Authenticate HTTP_WWW-AUTHENTICATE
Authentication-Info HTTP_AUTHENTICATION-INFO
X-Cache HTTP_X-CACHE
X-Cache-Lookup HTTP_X-CACHE-LOOKUP
X-Forwarded-For HTTP_X-FORWARDED-FOR
X-Request-URI HTTP_X-REQUEST-URI
X-Squid-Error HTTP_X-SQUID-ERROR
Negotiate HTTP_NEGOTIATE
X-Accelerator-Vary HTTP_X-ACCELERATOR-VARY
Squid 用户名密码认证
利用 apache 携带的工具 htpasswd 生成密码文件并添加相应的用户信息,可能需要写全 htpasswd 的路径(如果这个服务器上有若干网站,选择使用80端口的那个目录下的htpasswd)
/usr/bin/htpasswd -c /etc/squid/passwd testuser
根据提示输入密码:1234
成功后将会在 /etc/squid/passwd 中写入:
testuser:cuUEnEwyMTcGY
第一列表明用户名,第二列表明密码
修改 squid 配置文件:
# 定义了认证方式为 basic,认证程序的路径,认证程度需要读取的帐户文件(注意 ncsa_auth 和 上个步骤建立的 passwd 的路径)
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
# 自定义一条名为 auth_user 的ACL,ACL类型为 proxy_auth 通过外部程序进行用户认证方式,列表值为REQUIRED,说明接受所有合法用户的访问,然后使用 http_access 选项允许该列表
acl auth_user proxy_auth REQUIRED
http_access allow auth_user
体验:
– 在没有开启用户名密码认证时,能成功地只允许某些 IP 访问代理服务器,并且屏蔽掉客户端的信息。
– 当开启用户名密码认证时,只要验证成功,无论 IP 是什么,都能够使用代理服务器。
验证方法:
浏览器菜单 – 工具 – Internet选项 – 连接 – 局域网设置 – 勾选“为LAN使用代理服务器”,输入代理服务器的IP和端口
然后看是否能正常浏览网页,如果是通过用户名密码验证的,则会跳出验证框,如果不在IP允许列表里,则显示的页面是禁止访问。
正要找这份资料呢
这么隐晦的都被你发现了,楼主视力好好哦![emot]grin[/emot]