侧边栏壁纸
博主头像
CYC的个人博客博主等级

学习使人进步

  • 累计撰写 96 篇文章
  • 累计创建 11 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

linux配置squid代理

Administrator
2025-03-25 / 0 评论 / 0 点赞 / 130 阅读 / 10033 字

linux配置squid代理

前提

有两台服务器,一台可以翻墙,一台不能,现在想使用那台能翻墙的服务器做代理服务器,网上搜一下教程,发现使用 docker部署 squid比较简单,于是记录下使用过程。

Squid介绍

Squid是一款非常流行的开源代理和缓存服务器。它主要用于各种网络协议的内容缓存,以提高访问速度,减少带宽使用,并提供更有效的网络服务。以下是 Squid的一些核心特点和应用场景:

核心特点

  1. 缓存和加速Squid可以缓存请求的网页、图片和其他文件,这样当同一个资源再次被请求时,它可以快速从本地缓存提供,而不是每次都从原始服务器下载。

  2. 控制访问Squid可以用来控制哪些内容可以被用户访问。它支持强大的访问控制列表ACLs),允许管理员根据源地址、目的地、使用的协议等标准过滤内容。

  3. 提供安全性Squid可以作为一个透明代理来提高网络安全,可以用来拦截恶意流量和提供 SSL/TLS加密的代理服务。

  4. 减少带宽使用:通过缓存频繁访问的内容,Squid可以显著减少带宽需求,特别是在网络连接有限或昂贵的环境中非常有用。

  5. 提高响应时间:由于从近距离缓存提供内容,Squid能够减少数据的往返时间,从而提高响应速度。

  6. 支持多种协议Squid支持 HTTPHTTPSFTP等多种网络协议。

应用场景

  1. 企业网关:在企业环境中,Squid通常用作网关代理,来管理和监控员工的互联网使用。

  2. ISP缓存解决方案:互联网服务提供商(ISP)使用 Squid来减少带宽使用,加快用户访问互联网资源的速度。

  3. 内容分发网络Squid可以用作内容分发网络(CDN)的一部分,来提供地理分布式的缓存服务。

  4. 反向代理负载均衡Squid还可以配置为反向代理,用于负载均衡和为后端服务器提供缓存服务。

  5. 安全和匿名浏览Squid还可用于提高浏览的安全性和匿名性,尤其是当结合 VPNTor使用时。

Docker部署Squid

拉镜像

[root@sk4z3dzp01yel1a3 ~]# docker search squid
[root@sk4z3dzp01yel1a3 ~]# docker pull ubuntu/squid

配置文件

新建目录和 Squid配置文件目录映射,并且需要准备 squid.conf配置文件。如 /usr/local/squid/squid.conf,文件内容如下,需要修改的见注释。

acl localnet src 0.0.0.1-0.255.255.255  # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8             # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10          # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16         # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12          # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16         # RFC 1918 local private network (LAN)
acl localnet src fc00::/7               # RFC 4193 local private network range
acl localnet src fe80::/10              # RFC 4291 link-local (directly plugged) machines
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


# 这里配置哪些ip可以使用本代理服务器,多个用空格隔开或写到文件里
#acl allowed_ips src 112.17.xx.xx
#允许所有
acl allowed_ips src all



# 这三行是个人配置的代理访问用户和密码
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
acl auth_user proxy_auth REQUIRED
http_access allow auth_user


http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow localnet
# 这里运行自己配置的ip
http_access allow allowed_ips
# 其他一律拒绝
http_access deny all
# 绑定ip和端口号
http_port 0.0.0.0:3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern .               0       20%     4320
logfile_rotate 0

/etc/squid/passwd 是用户密码存储文件,密码是经过加密的

可使用如下命令来生成用户密码

htpasswd -c /etc/squid/passwd 用户名

(没有htpasswd可安装yum install httpd-tools)

运行容器

docker run --name squid -d --restart=always --publish 51888:3128 --volume /etc/squid:/etc/squid/  -v /etc/localtime:/etc/localtime hub.xsdsx.cn/public/squid:latest

注意端口号 51888是否占用,是否放行!

测试访问

curl -x http_proxy://用户:密码@xxx.xxx.xxx.xxx:51888 www.baidu.com

java jar 包

java -Dhttp.proxyHost=用户:密码@proxy.example.com -Dhttp.proxyPort=8080 -Dhttps.proxyHost=用户:密码@proxy.example.com -Dhttps.proxyPort=8080 -jar your-application.jar

0

评论区