squid代理及常见的代理上网(Squid Proxy and Common Proxy Internet Access)

news2024/9/21 21:25:06

 💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

squid代理及常见的代理上网 

Squid Cache(简称为Squid)是HTTP代理服务器软件。Squid用途广泛,可以作为缓存服务器,可以过滤流量帮助网络安全,也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。Squid程序在Unix一类系统运行。由于它是开源软件,有网站修改Squid的源代码,编译为原生Windows版[2];用户也可在Windows里安装Cygwin,然后在Cygwin里编译Squid。
Squid历史悠久,功能完善。除了HTTP外,对FTP与HTTPS的支持也相当好,在3.0测试版中也支持了IPv6。但是Squid的上级代理不能使用SOCKS协议。

1、环境说明

本文中涉及两台服务器,这两台服务器均有内网ip地址,分别为

A: 192.168.0.200
B: 192.168.0.100
C: 192.168.0.101

其中A具有公网访问能力,BC不具备公网访问能力。

因此,可以让B具有公网访问能力或让BC实现某些功能例如yum安装软件能正常使用,可行的方案有两种:

  • 方案1

A服务器开启数据包内核转发功能,接收BC的数据包,BC将自己的网关配置成A的地址,这样BC的上网能力全部通过A来代理转发实现,这种做法简单好用,但是不适用于云厂商提供的虚拟主机例如阿里云ECS,因为云主机的ip和网卡配置一般是不支持自己定义的

  • 方案2

A服务器运行一个squid服务,BC的某些操作通过squid来代理转发实现

本文通过在A服务器上搭建squid代理,并在BC服务器上实现了wgetyumdocker使用A的代理,以及把ABC这三台服务器作为k8s集群的节点利用kubeadm搭建一个k8s集群需要配置的地方

2、搭建squid服务

2.1、安装服务

A服务器能上网,先把A服务器的yum源配置好,这里不做赘述,然后安装squid服务

# rpm -qa | grep squid
# yum install -y squid

默认安装的squid服务只需要配置一点,默认是拒绝所有服务器连接,只需要修改成允许所有服务器连接即可

# vim /etc/squid/squid.conf
http_access allow all

启动服务并设置成开机启动

# systemctl start squid.service
# systemctl enable squid.service

2.2、配置受信

这样配置之后,squid代理服务器就可以使用了,默认的端口是3128,但是为了安全,只让受信的服务器连接,通常还需要对squid配置账号验证授权使用,通过httpd-tools生成密码文件,安装

# yum install httpd-tools -y

生成密码文件

# mkdir /etc/squid3/
# 生成密码文件,指定文件路径,其中squid是用户名
# htpasswd -cd /etc/squid3/passwords squid
#提示输入密码,不能超过8个字符,输入密码123456

测试密码文件

# /usr/lib64/squid/basic_ncsa_auth /etc/squid3/passwords                
squid 123456
OK 
# 测试完成,crtl + c 打断

配置squid使用验证,修改配置文件

# vim /etc/squid/squid.conf
# And finally deny all other access to this proxy
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid3/passwords #账户密码文件
auth_param basic realm proxy
auth_param basic children 50 #最多 50 个账户同时运行
auth_param basic realm CoolTube Proxy Server #密码框描述
auth_param basic credentialsttl 2 hours #认证持续时间
acl authenticated proxy_auth REQUIRED #对 authenticated 进行外部认证
http_access allow authenticated #允许 authenticated 中的成员访问
http_access deny all #拒绝所有其他访问
visible_hostname squid.CoolTube #代理机名字

# 这里是端口号,可以按需修改
# http_port 3128 这样写会同时监听 ipv6 和 ipv4 的端口,推荐适应下面的配置方法。
http_port 0.0.0.0:3128

初始化服务并重新启动

# squid -z
# systemctl restart squid.service

如果开启了防火墙,还要在防火墙中允许端口3128的策略,以CentOS7为例

# 把 3128 端口加入防火墙过滤掉
# firewall-cmd --permanent --zone=public --add-port=3128/tcp
# 重启防火墙
# firewall-cmd --reload

如果想新增用户,只需要按照上面的步骤再次生成一次密码文件就可以

3、配置代理

3.1、配置全局代理

修改环境变量文件并使其生效

vim /etc/profile
#在最后加入(有认证的情况)
export http_proxy="http://squid:123456@192.168.0.200:3128"
export https_proxy="http://squid:123456@192.168.0.200:3128"
如果没有开启认证
http_proxy=http://192.168.0.200:3128
https_proxy=http://192.168.0.200:3128
# source /etc/profile

3.2、配置wget代理

新增wget的环境变量文件

# vim ~/.wgetrc
http_proxy=http://192.168.0.200:3128
https_proxy=http://192.168.0.200:3128
use_proxy = on
wait = 30
# 验证,如果返回值为0表示wget可用
# wget --spider -T 5 -q -t 2 www.baidu.com | echo $?
0

3.3、配置yum代理

编辑yum的配置文件,新增下面的内容

# vim /etc/yum.conf
# 有认证的情况
# Proxy
proxy=http://squid:123456@192.168.0.200:3128
# 没有认证
# Proxy
proxy=http://192.168.0.200:3128

3.4、配置docker代理

docker配置代理是为了保证docker能从外网pull镜像,在安装了docker之后,在docker配置文件下新增配置并重启docker

# mkdir -p /etc/systemd/system/docker.service.d
# vim /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://squid:123456@192.168.0.200:3128" 
# systemctl daemon-reload
# systemctl restart docker

验证,通过docker pull命令pull一个公网的镜像

docker pull busybox:latest

3.5、问题排查

如果在配置上述代理后进行验证的时候,出现没有返回,卡顿或超时的情况,可以通过查看A服务器即squid代理服务器的日志进行检查,在日志中一般都可以查看到较为明显的错误
cache.log

tail -f /var/log/squid/cache.log 
2020/02/12 22:56:12 kid1| Store logging disabled
2020/02/12 22:56:12 kid1| DNS Socket created at [::], FD 9
2020/02/12 22:56:12 kid1| DNS Socket created at 0.0.0.0, FD 10
2020/02/12 22:56:12 kid1| Adding nameserver 114.114.114.114 from /etc/resolv.conf
2020/02/12 22:56:12 kid1| Adding nameserver 114.114.115.115 from /etc/resolv.conf
2020/02/12 22:56:12 kid1| helperOpenServers: Starting 0/50 'basic_ncsa_auth' processes
2020/02/12 22:56:12 kid1| helperOpenServers: No 'basic_ncsa_auth' processes needed.
2020/02/12 22:56:12 kid1| HTCP Disabled.
2020/02/12 22:56:12 kid1| Finished loading MIME types and icons.
2020/02/12 22:56:12 kid1| Accepting HTTP Socket connections at local=0.0.0.0:3128 remote=[::] FD 11 flags=9

access.log

# tail -f /var/log/squid/access.log 
1581519614.049     47 192.168.0.100 TCP_TUNNEL/200 5383 CONNECT registry.cn-beijing.aliyuncs.com:443 - HIER_DIRECT/47.95.181.38 -
1581542724.596     39 192.168.0.100 TCP_MISS/503 397 HEAD http://url/ - HIER_NONE/- text/html
1581542754.860    256 192.168.0.100 TCP_TUNNEL/200 4460 CONNECT www.baidu.com:443 - HIER_DIRECT/180.101.49.41 -
1581542818.197    107 192.168.0.100 TCP_MISS/200 262 HEAD http://www.baidu.com/ - HIER_DIRECT/180.101.49.41 text/html
1581542820.465     53 192.168.0.100 TCP_MISS/200 262 HEAD http://www.baidu.com/ - HIER_DIRECT/180.101.49.41 text/html
1581542821.292     53 192.168.0.100 TCP_MISS/200 262 HEAD http://www.baidu.com/ - HIER_DIRECT/180.101.49.41 text/html
1581542821.864     54 192.168.0.100 TCP_MISS/200 262 HEAD http://www.baidu.com/ - HIER_DIRECT/180.101.49.41 text/html
1581542822.323     53 192.168.0.100 TCP_MISS/200 262 HEAD http://www.baidu.com/ - HIER_DIRECT/180.101.49.41 text/html
1581542822.764     53 192.168.0.100 TCP_MISS/200 262 HEAD http://www.baidu.com/ - HIER_DIRECT/180.101.49.41 text/html
1581542823.243     53 192.168.0.100 TCP_MISS/200 262 HEAD http://www.baidu.com/ - HIER_DIRECT/180.101.49.41 text/html

4、搭建k8s时配置代理

在使用kubeadm或二进制方式搭建k8s集群时,集群内部podservice会单独占用不同的网络,service网络是一个虚拟的网段,这个时候还需要声明流量不让其走http/https代理,这种声明方式也适用于对那些没有域名解析通过绑定hosts文件来访问的域名。

如果不声明,在使用kubeadm部署k8s集群,执行kubeadm init初始化集群的时候会看到如下的提示并执行超时失败

[WARNING HTTPProxyCIDR]: connection to "10.1.0.0/12" uses proxy "http://192.168.0.200:3128". This may lead to malfunctional cluster setup. Make sure that Pod and Services IP ranges specified correctly as exceptions in proxy configuration
[WARNING HTTPProxyCIDR]: connection to "10.244.0.0/16" uses proxy "http://192.168.0.200:3128". This may lead to malfunctional cluster setup. Make sure that Pod and Services IP ranges specified correctly as exceptions in proxy configuration

在不断重试的时候可以查看代理服务器的squid日志,发现日志中一直不断有来自kubeadm所在的机器向本机的6443端口发送的请求,却被拒绝了

1581507643.783      0 192.168.0.100 TCP_DENIED/403 3927 CONNECT 192.168.0.8:6443 - HIER_NONE/- text/html
1581507644.283      0 192.168.0.100 TCP_DENIED/403 3927 CONNECT 192.168.0.8:6443 - HIER_NONE/- text/html
1581507644.783      0 192.168.0.100 TCP_DENIED/403 3927 CONNECT 192.168.0.8:6443 - HIER_NONE/- text/html
1581507645.283      0 192.168.0.100 TCP_DENIED/403 3927 CONNECT 192.168.0.8:6443 - HIER_NONE/- text/html
1581507645.783      0 192.168.0.100 TCP_DENIED/403 3927 CONNECT 192.168.0.8:6443 - HIER_NONE/- text/html
1581507646.283      0 192.168.0.100 TCP_DENIED/403 3927 CONNECT 192.168.0.8:6443 - HIER_NONE/- text/html
1581507646.783      0 192.168.0.100 TCP_DENIED/403 3927 CONNECT 192.168.0.8:6443 - HIER_NONE/- text/html
1581507647.283      0 192.168.0.100 TCP_DENIED/403 3927 CONNECT 192.168.0.8:6443 - HIER_NONE/- text/html

通过踩坑,正确可行的配置流程是:

  • 修改docker代理配置
# vim /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://squid:123456@192.168.0.200:3128" "NO_PROXY=localhost,127.0.0.1,192.168.0.200,192.168.0.100,192.168.0.101,10.244.0.0/16"
# systemctl daemon-reload
# systemctl restart docker
  • 修改全局代理配置
# vim /etc/profile
export http_proxy="http://squid:123456@192.168.0.200:3128"
export https_proxy="http://squid:123456@192.168.0.200:3128"
export no_proxy=localhost,127.0.0.1,192.168.0.200,192.168.0.100,192.168.0.101,10.244.0.0/16
# source /etc/profile
  • 命令行声明
export http_proxy="http://squid:123456@192.168.0.200:3128"
export https_proxy="http://squid:123456@192.168.0.200:3128"
export no_proxy=localhost,127.0.0.1,192.168.0.200,192.168.0.100,192.168.0.101,10.244.0.0/16

然后再次执行kubeadm init初始化集群就成功了

5、总结

本文记录了在特定的网络环境下如何通过squid配置代理,实现内网机器常用功能上网的方法,当然,这里提到的yumwgetdockerk8s集群安装常用的操作之外还有一些也需要通过上网代理,这里不一一提及。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2143958.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学术会议征稿】第九届计算机技术与机械电气工程国际学术论坛(ISCME 2024)

第九届计算机技术与机械电气工程国际学术论坛(ISCME 2024) 2024 9th International Seminar on Computer Technology, Mechanical and Electrical Engineering 第九届计算机技术与机械电气工程国际学术论坛(ISCME 2024)将于2024…

还在为机器学习中,层出不穷的概念烦恼么?不妨看看这边,南瓜书第1,2章学习总结-task01

第一章:绪论 这里面讲了机器学习的基本概念,包括基本术语 1.1.基本概念 数据集和样本集的区别。原始检测数据是总体,总体是统计所研究对象的全体,是包含所研究变量的全部个体的集合,具有同质性、差异性、大量性。构成总体的个别事物叫总体单位。样本检测…

idea插件开发的第四天-完善JSON工具

介绍 Demo说明 本文基于maven项目开发,idea版本为2022.3以上,jdk为1.8本文在Tools插件之上进行开发本次demo将使用idea的一些组件优化 Tools插件说明 Tools插件是一个Idea插件,此插件提供统一Spi规范,极大的降低了idea插件的开发难度,并提供开发者模块,可以极大的为开发者开…

nodejs 009: 使用nvm进行node版本管理(包括Could not retrieve的手动处理办法)

nvm 有些问题类似:“v8::Object::Set": No overloaded function accepts 2 Arguments”可能需要通过更换nodejs的版本来解决(如下图所示,需要看当时的项目的时间,查找当时的流行nodejs版本)。这时可以使用nvm进行…

干耳朵里的耳屎结坨了怎么弄出来?可视挖耳勺推荐

干耳朵里的耳屎结坨了怎么弄出来?这个是很多干耳朵小伙伴的一个难题。用棉签掏根本掏不出来,反而会越推越进。用普通耳勺掏不仅不够精准还会因为盲掏,弄伤自己的耳膜或者刮破耳道。所以干耳朵里的耳屎结坨了,建议用可视挖耳勺来掏…

robosuite基础教程(一)——基本概念

robosuite和robomimic都是由ARISE Initiative开发的开源工具,旨在推进机器人学习和机器人操作领域的研究。 一、基本概念 robosuite是一个由MuJoCo物理引擎驱动的模拟框架,专为机器人学习设计。它提供了一套基准环境,是Advancing Robot Int…

C++/CLI编程知识点小记

1.前言 本篇博文并非详细的C/CLI教程,仅是博主就学习和实践总结的部分知识点记录。 第一次接触C/CLI是2017年了,用C编写底层库,C/CLI编写wrapper层,在C#项目中进行调用,开发应用。 2.内容 C/CLI是一种混合编程&…

不要沉迷大模型的技术与理论,学习大模型的方法——从做一个小应用开始

“ 在应用中学习技术,而不是沉迷于技术本身 ” 不知道大家都是怎么学习大模型技术的,但从个人的经验和公众号的反馈来看,有些人在学习大模型技术时转进了牛角尖,导致很多东西学不明白,事倍功半。 今天就从个人的学习…

基于SpringBoot+Vue的校园礼服装租赁系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

Aigtek电压放大器用途有哪些方面

电压放大器是一种电子电路设备,主要用于将输入信号的电压放大到更大的幅度,增强信号的强度和质量。电压放大器具有广泛的应用领域,下面安泰电子将从以下几个方面详细介绍电压放大器的用途。 信号处理:电压放大器可以用于对各种信号…

Transformer 的可视化解释

Transformer 的可视化解释:了解 LLM Transformer 模型如何与交互式可视化配合使用 部署 Nodejs version > 20.0 git clone https://github.com/poloclub/transformer-explainer.git cd transformer-explainer npm install npm run dev# fix: cnpm install --pl…

物联网行业中小型嵌入式文件系统详解以及使用

一 概述 在嵌入式系统使用过程中,为了方便数据的存储,我们加入了串行的外部Flash(SPI通信)。在使用存储的时候,如需要记录一个字符串“奇迹物联Bloom OS”,我们可以把这些文字转化成 ASCII 码,存储在数组中&#xff0c…

激光模组多少钱一套?具体费用的决定因素

激光模组作为现代科技领域的重要组件,然而,对于许多潜在买家而言,激光模组的价格往往是一个令人困惑的问题。本文将跟大家一起探讨激光模组的价格范围及其具体费用的决定因素。 激光模组的价格范围 激光模组的价格因多种因素而异,…

基于Qt的串口调试工具串口常见问题

1.项目地址 https://github.com/zhangjiechina001/SerialPortTool 2.使用注意 串口的所有参数波特率、数据位、校验位、停止位、控制流都需要设置正确,设置错了有时会连接上但是传输的数据会很奇怪,有时直接连接不上了 3.串口通讯参数解释 串口通讯&a…

C++掉血迷宫

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #include <iostream> #include <string> #include <cstring> using namespace std; enum RBYG {R 1,B 2,Y 4,G 7, }; struct heal {int ix…

7 款 Mac 剪贴板管理器帮助你改善工作流

大家都知道&#xff0c;Mac自带的剪贴板功能实在是太简陋了。复制一下、粘贴一下&#xff0c;就这么点能耐&#xff0c;简直就是个临时小仓库。 如果你经常需要复制粘贴各种内容&#xff0c;Mac原生的剪贴板可能反而会拖你的后腿。这时候&#xff0c;是时候升级一下你的剪贴板…

自有平台自有品牌如何利用电商API接口做定价参考(多平台商品详情数据接口)

如今&#xff0c;多数自有商城自有品牌在为产品做定价时都会参考淘宝|天猫|京东等主流电商平台的商品价格以做参考&#xff0c;这一行为的好处主要有以下几点&#xff1a; 通过参考主流平台价格&#xff0c;用户更能了解目标市场中消费者对产品的接受度&#xff0c;从而制定出符…

C++速通LeetCode简单第17题-爬楼梯(全网最简单)

思路要点&#xff1a;将问题转化为求斐波那契数列的第n项&#xff0c;然后迭代。 思路分析&#xff1a;最后一次爬的阶数不是1就是2&#xff0c;假设爬n阶的方法数是f(n)&#xff0c;假设最后一次爬1阶&#xff0c;那么爬前面的 n-1阶的方法数是f(n-1)&#xff1b;假设最后一次…

DepthCrafter:为开放世界视频生成一致的长深度序列

通过利用视频扩散模型&#xff0c;我们创新了一种新颖的视频深度估算方法–DepthCrafter。 它可以为开放世界视频生成具有细粒度细节的时间一致性长深度序列&#xff0c;而无需摄像机姿势或光流等附加信息。 简介 动机。 尽管在静态图像的单目深度估算方面取得了重大进展&…

Vue2集成高德地图遇到的几个问题

文章目录 前言集成地图实现的功能遇到的问题Uncaught Error: Invalid Object: LngLat(NaN, NaN)搜索结果不显示地图异步加载问题 写在最后 前言 几年没碰过前端了&#xff0c;最近闲来无事在捣鼓一个小项目&#xff0c;项目中一个功能涉及到地图组件&#xff0c;没想到在集成高…