=Start=
缘由:
简单记录一下 Squid 代理服务的搭建过程,方便有需要的时候参考。
正文:
参考解答:
Squid 是什么?以及能做什么?
Squid Cache(简称为Squid)是一个支持HTTP,HTTPS,FTP等服务的代理服务软件。Squid用途广泛,可以作为缓存服务器(它可以通过缓存页面来提高服务器的响应速度并降低带宽占用),可以过滤流量帮助网络安全(它具有强大的访问控制功能),也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。
使用 Squid 简单快速的搭建HTTP代理
用Squid搭建HTTP代理以及支持简单的Basic认证还是很快的。
以下内容主要引用自 使用Squid,简单快速的搭建HTTP代理 一文,简单明了:
- 安装 Squid
$ sudo yum install squid -y
- 修改配置文件
$ sudo vim /etc/squid/squid.conf
...
# 将 http_access deny all 中deny改为allow,还有就是 http_port 后面的是端口号,随便改成没被占用的端口号就行
http_access allow all
http_port 13128
...
- 启动/重启服务
# 查看状态
$ sudo systemctl status squid.service
# 启动
$ sudo systemctl start squid.service
# 重启
$ sudo systemctl restart squid.service
高匿代理:
在/etc/squid/squid.conf中添加
request_header_access Via deny all
request_header_access X-Forwarded-For deny all
OK 拉~
使用 Squid 快速的搭建带认证的HTTP代理服务
自己搭建的HTTP代理服务如果没有认证还是不太安全(容易被扫描到然后被滥用),这里简单记录一下如何配置带认证的HTTP代理服务:
1. 安装相关依赖(htpasswd命令在这里面)
$ sudo yum install -y httpd-tools
2. 创建账号并设置密码
$ sudo htpasswd -c /etc/squid/passwords squid_username_here #指定创建的用户名,输入回车之后再输入密码
$ sudo cat /etc/squid/passwords
3. 更新 Squid 的配置文件
$ sudo vim /etc/squid/squid.conf
...
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
# 在上面这一行提示之后添加自己的允许规则(实际测试basic认证的逻辑直接添加在最后是无效的,因为前面可能有allow all了)
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
...
4. 重启 Squid 服务
$ systemctl status squid.service
$ sudo systemctl start squid.service
$ sudo systemctl stop squid.service
$ sudo systemctl restart squid.service
一些其它内容
# 1. 检查 Squid 配置文件是否存在语法错误
# squid -k parse
# 2. 当连接命令报错“No route to host(没有到主机的路由)”时该怎么排查和处理?
# 没有到主机的路由这种问题很常见,绝大多数是由机器的防火墙没有关闭,少数情况是真的因为没有路由而不通
# 查看防火墙状态
service iptables status
firewall-cmd --state
# 关闭防火墙,注意有些机器防火墙是iptables
systemctl stop firewalld && systemctl disable firewalld
# 或者开放特定端口,然后重新加载防火墙配置
firewall-cmd --add-port=9092/tcp --permanent
firewall-cmd --reload
# 首先检查一下服务器的iptables规则,然后先备份,再清空已有规则
$ sudo iptables --list
$ sudo iptables-save > iptables-save-$(date +%F).txt
$ sudo iptables -F
$ sudo iptables --list
# 3. 当使用 yum 命令安装时发现网络不通或是网速较慢时,更换成更合适的repo源
# 备份然后更新repo文件
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget https://mirrors.163.com/.help/CentOS7-Base-163.repo
sudo mv CentOS7-Base-163.repo /etc/yum.repos.d/
# 生成缓存
sudo yum clean all
sudo yum makecache
查看 Squid 日志
$ sudo ls -lt /var/log/squid/
$ sudo cat /var/log/squid/access.log
$ sudo tail -f /var/log/squid/access.log
使用 Squid 搭建 HTTPS 代理
这里只简单摘录一下网上搜到的看上去还比较靠谱的步骤说明。实际测试发现用 Squid 配置 HTTPS 代理还是没那么简单直接的,后面实测OK了我再整理一篇文章说明。
- 生成一个CA证书给Squid使用 (Generate a CA Certificate to be used by Squid)
- 配置Squid以支持功能 (Configure Squid to Peek-N-Slice SSL Connections)
- 在浏览器中导入证书CA (Import Certificate CA into the Browser for Squid)
- 检查Squid日志 (Check out Squid Logs)
- 使用代理自动配置(PAC)文件进行代理设置 (Using a proxy auto-config (PAC) file to Specify Proxy Settings)
- 安全连接代理 (Secure Proxy Connections)
首先需要准备证书,有三种方式:
- 自己签名
- 找机构购买(如阿里云)
- 使用acme.sh免费生成
我用的第三种,操作官网上写着,这里不多说了。
……
使用 Squid 搭建使用 LDAP 认证的 HTTP 代理
根据以后的实际需求情况再看是否进行补充
使用 Squid 搭建使用 Kerberos 认证的 HTTP 代理
根据以后的实际需求情况再看是否进行补充
参考链接:
使用Squid,简单快速的搭建HTTP代理
https://blog.kieng.cn/2717.html
Centos7下使用Squid快速搭建带认证的HTTP代理服务器
https://blog.phpgao.com/squid_proxy_with_basic_auth.html
使用Squid搭建HTTP代理服务器
https://bu1.github.io/2021/12/04/%E4%BD%BF%E7%94%A8Squid%E6%90%AD%E5%BB%BAHTTP%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8/
squid代理及常见的代理上网
https://www.cnblogs.com/ssgeek/p/12302135.html
玩转VPS之快速搭建HTTP代理
https://blog.phpgao.com/vps_tinyproxy.html
Squid test config file for syntax errors
https://www.cyberciti.biz/faq/squid-test-config-file-for-syntax-errors/
Squid极简搭建HTTP/HTTPS代理服务器
https://cooolin.com/scinet/2020/06/21/squid-proxy-simple.html
CentOS 7 + TinyProxy 快速搭建HTTP代理
https://www.bestyii.com/topic/126
How to install Squid forward proxy with TLS enabled
https://www.googlecloudcommunity.com/gc/Cloud-Product-Articles/How-to-install-Squid-forward-proxy-with-TLS-enabled/ta-p/478008
https://elatov.github.io/2019/01/using-squid-to-proxy-ssl-sites/
acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书
https://github.com/acmesh-official/acme.sh/wiki
https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E
Chapter 3. Configuring the Squid caching proxy server
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/deploying_web_servers_and_reverse_proxies/configuring-the-squid-caching-proxy-server_deploying-web-servers-and-reverse-proxies
Chapter 16. Configuring the Squid Caching Proxy Server
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/configuring-the-squid-caching-proxy-server
Squid Log Files
https://wiki.squid-cache.org/SquidFaq/SquidLogs
Squid Web Cache wiki
https://wiki.squid-cache.org/Features/LogFormat
Squid configuration directive access_log
https://www.squid-cache.org/Doc/config/access_log/
Squid configuration directive logformat
https://www.squid-cache.org/Doc/config/logformat/
Squid 代理服务之传统代理服务器架构搭建
https://blog.csdn.net/shenyuanhaojie/article/details/121128443
Squid 缓存代理(原理 + 安装配置)
https://blog.csdn.net/shenyuanhaojie/article/details/121123525
squid代理及常见的代理上网
https://www.ssgeek.com/post/squid-dai-li-ji-chang-jian-de-dai-li-shang-wang/
squid代理与缓存(上)
https://www.cnblogs.com/ywb123/p/11395954.html
squid代理与缓存(下)
https://www.cnblogs.com/ywb123/p/11396059.html
代理服务器之 squid、lvs、nginx、haproxy之间的区别
https://www.cnblogs.com/ywb123/p/17514940.html
=END=