fengda 发表于 2018-12-27 12:21:01

CentOS Squid 安装配置

  安装
  ./configure --disable-internal-dns
make
make install
修改squid.conf加以下两句
dns_children 20
redirect_children 20
再启动squid,哇........,这才是我要的squid!!!!!!!!!!!!!
ps一下发现多了20个dnsserver进程。再分析:可能是此参数把squid的逐个查询DNS改为了并行查询。现已运行数天,尚未发现问题。

  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允许列表里,则显示的页面是禁止访问。




页: [1]
查看完整版本: CentOS Squid 安装配置