行者无疆
利用Squid搭建私人代理
发布于: 2020-07-31 更新于: 2020-08-03 分类于:  阅读次数: 

起因

国内有时候访问github或者googke特别慢,甚至无法访问,虽然有很多办法可以解决(比如改host或者用VPN),但始终安全性和稳定性存在不可控因素。
这里介绍搭建代理的方式。


环境版本

  • Squid 4.4
  • 云服务器(Centos 8.1)
  • Apache的htpasswd
  • Chrome及SwitchyOmega插件

搭建流程

  • 在云服务器上安装squid
    yum install squid

  • 创建代理的认证账号,如果代理是对公共开放可以跳过此步骤
    /usr/bin/htpasswd -c /etc/squid/passwd proxy_username

  • 修改squid的配置文件
    vi /etc/squid/squid.confhttp_access deny all前加入
    auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
    auth_param basic children 2
    auth_param basic realm lovewow
    auth_param basic credentialsttl 1 hours #认证有效时间
    acl myproxy proxy_auth REQUIRED #定义认证的用户
    http_access allow myproxy
    #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象
    #容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
    cache_mem 128 MB
    #允许保存到缓存空间的最大对象大小,超过大小限制的文件将不被缓存,而是直接转发给用户
    maximum_object_size 16 MB
    #允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
    reply_body_max_size 10 MB
    #缓存文件夹,默认是只在内存中进行缓存的。这里指定缓存大小为100M,第一层子目录为16个,第二层为256
    cache_dir ufs /var/spool/squid 100 16 256

  • 启动Squid
    验证配置squid -k parse
    初始化缓存squid -z
    启动服务squid -s


遇到的问题

  • 找不到或没有htpasswd工具
    可以先用查询工具位置whereis htpasswd,一般在/usr/bin的下面,如果没有就需要安装yum install http-tools

  • 默认3128端口无法访问
    连接代理地址总是失败,查询端口netstat -nltp,只有tcp6且IP和端口并没有绑定上

    1
    2
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp6 0 0 :::3128 :::* LISTEN 1382/(squid-1)

    修改squid配置vi /etc/squid/squid.confhttp_port所在行,把3128改为0.0.0.0:3128后, 重启服务

  • 还是无法访问端口
    检查防火墙策略,云服务器只要设置网络安全组的规则就行,虚拟机可能需要修改策略允许访问3218端口的tcp数据包通过iptables -I INPUT -p tcp --dport 3218 -j ACCEPT


附录_基本指令

创建缓存目录
squid -z
使配置文件生效(修改配置文件后需要执行)
squid -k parse
以后台进程的形式启动squid
squid -s
停止squid
squid -k shutdown
重载配置
squid -k reconfigure [-f /XXX/squid.conf]
滚动日志
squid -k rotate

--- 本文结束 The End ---