linux配置squid代理
前提
有两台服务器,一台可以翻墙,一台不能,现在想使用那台能翻墙的服务器做代理服务器,网上搜一下教程,发现使用 docker
部署 squid
比较简单,于是记录下使用过程。
Squid介绍
Squid
是一款非常流行的开源代理和缓存服务器。它主要用于各种网络协议的内容缓存,以提高访问速度,减少带宽使用,并提供更有效的网络服务。以下是 Squid
的一些核心特点和应用场景:
核心特点
缓存和加速:
Squid
可以缓存请求的网页、图片和其他文件,这样当同一个资源再次被请求时,它可以快速从本地缓存提供,而不是每次都从原始服务器下载。控制访问:
Squid
可以用来控制哪些内容可以被用户访问。它支持强大的访问控制列表(ACLs
),允许管理员根据源地址、目的地、使用的协议等标准过滤内容。提供安全性:
Squid
可以作为一个透明代理来提高网络安全,可以用来拦截恶意流量和提供SSL/TLS
加密的代理服务。减少带宽使用:通过缓存频繁访问的内容,
Squid
可以显著减少带宽需求,特别是在网络连接有限或昂贵的环境中非常有用。提高响应时间:由于从近距离缓存提供内容,
Squid
能够减少数据的往返时间,从而提高响应速度。支持多种协议:
Squid
支持HTTP
、HTTPS
、FTP
等多种网络协议。
应用场景
企业网关:在企业环境中,
Squid
通常用作网关代理,来管理和监控员工的互联网使用。ISP缓存解决方案:互联网服务提供商(
ISP
)使用Squid
来减少带宽使用,加快用户访问互联网资源的速度。内容分发网络:
Squid
可以用作内容分发网络(CDN
)的一部分,来提供地理分布式的缓存服务。安全和匿名浏览:
Squid
还可用于提高浏览的安全性和匿名性,尤其是当结合VPN
或Tor
使用时。
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
评论区