0%

需求

在公司局域网部署的Squid代理服务器,和局域网中其他电脑一样无法访问外网。 需要给Squid配置一个父级的HTTP代理,这个父代理能访问外网,这样Squid就具备了访问外网的能力。

基础知识

Squid提供了cache_peer指令, 以定义邻居cache, 并告知Squid如何与邻居通信。
邻居cache有两种关系: 父子或姐妹

  • 父子cache, 可用于配置父代理来请求内容。
  • 邻居cache, 用于提供额外的cache命中,提升性能。 例如某些请求cache丢失,在邻居cache有可能命中,这样比从原始服务器请求速度要快。
阅读全文 »

ACL简介

Squid ACL(Access Control List,访问控制列表)提供了代理控制的功能。
通过设置ACL,Squid可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤,从而实现对网络流量的精细控制。

基本的ACL元素语法:

1
acl name type value1 value2 ...

可以对一个ACL元素列举多个值,也可以多个ACL行使用同一个名字。例如,以下两种配置方式是等价的

1
acl safe_ports port 80 443 8080

等价于

1
2
3
acl safe_ports port 80
acl safe_ports port 443
acl safe_ports port 8080
阅读全文 »

问题描述

客户在windows CMD中SSH连接失败,报错:

1
2
Corrupted MAC on input
ssh_dispatch_run_fatal: Connection to x.x.x.x port 22: message authentication code incorrect

值得注意的是,客户通过别的机器做SSH连接可以成功,使用putty, mobaxterm连接也可以成功

原因分析

通过别的机器能做SSH连接,说明SSH服务端本身没有问题,网络连接也正常。
这个原因一般是SSH客户端和服务器的配置不匹配,使用了不同的MAC(消息认证码)或cipher(加密算法),导致协商失败。

定位思路

分别查看SSH客户端和服务端支持的MAC和cipher列表,先确认配置是否匹配。

阅读全文 »

HTTP basic认证是一种简单的认证机制,要求用户在请求资源前提供有效的用户名和密码。

实例: 给Squid代理添加HTTP basic认证

要求: 只允许用户名为peter,密码为123的请求通过认证, 其他请求返回407(Proxy认证失败)

步骤

1 使用htpasswd工具,生成用户名密码。 例如这里添加用户名peter, 密码123.

1
2
3
4
5
yum install httpd-tools
htpasswd -c /etc/squid/squid_user peter
New password: 123
Re-type new password: 123
Adding password for user peter

检查密码文件/etc/squid/squid_user,可以找到刚才添加的用户peter

1
2
cat /etc/squid/squid_user
peter:$XXXXXXXXXXXXXXXXXXX
阅读全文 »

前言

学习如何在k8s中部署Squid, 过程如下:

  • 先在Docker环境中运行Squid, 准备好Squid镜像。
  • 再搭建一个k8s环境,把上一步的docker镜像传进来,再创建对应k8s资源,完成Squid的部署

准备环境

准备两台Linux VM:

  • 一台Centos/RHEL/RockyLinux 7/8/9,安装Docker, 构建Squid的Docker镜像
  • 一台RockyLinux 9, 用于运行k8s, 部署Squid

1. 在Docker环境中运行Squid, 准备Squid镜像

安装Docker

参考: 安装Docker

阅读全文 »