centos 6或7 squid 代理服务器搭建

一、简介

代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。

Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向Squid 发出一个申请,要Squid 代替其进行下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速度相当快。Squid 可以代理HTTP、FTP、GOPHER、SSL和WAIS等协议并且Squid 可以自动地进行处理,可以根据自己的需要设置Squid,使之过滤掉不想要的东西。

  1.1 工作流程

  当代理服务器中客户端需要的数据时:

    a. 客户端向代理服务器发送数据请求;

    b. 代理服务器检查自己的数据缓存;

    c. 代理服务器在缓存中找到了用户想要的数据,取出数据;

    d. 代理服务器将从缓存中取得的数据返回给客户端。

  当代理服务器中没有客户端需要的数据时:

    1. 客户端向代理服务器发送数据请求;

    2. 代理服务器检查自己的数据缓存;

    3. 代理服务器在缓存中没有找到用户想要的数据;

    4. 代理服务器向Internet 上的远端服务器发送数据请求;

    5. 远端服务器响应,返回相应的数据;

    6. 代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。

  Squid代理服务器工作在TCP/IP的应用层。

Squid

  1.2 Squid 分类

  按照代理类型的不同,可以将Squid 代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为普通代理和透明代理。

    • 普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;
    • 透明代理:适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理;
    • 反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

 

二、普通代理搭建

  1、操作系统: centos 6.10

  2、squid 服务器公网IP:123.123.123.5            

  3、客户端IP:110.11.3.0/24

  4、实验拓扑图如下:

  

 

 

5、安装

  a、关闭防火前 和 selinux、httpd

  b、开启内核路由转发功能

    #vim /etc/sysctl.conf  

      修改为: net.ipv4.ip_forward = 1

1|0    # sysctl -p

  c、安装squid 包

    # yum install squid -y

  d、生成密码文件,用于squid代理的web认证 (如果不需要认证,此步骤无需操作

    # yum install httpd-tools -y

    # sudo htpasswd -bc /etc/squid/passwords 用户名 密码

    # sudo chmod o+r /etc/squid/passwords

  e、编辑配置文件

    # vim /etc/squid/squid.conf 

#设置允许被代理的网段的ACL acl test src 110.11.3.0/24 ( test:客户端IP组名称,参数:all 允许全部:acl test src all) # 以下三行用于认证 centos6:auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/passwords  centos7:auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwords      auth_param basic realm proxy   acl authenticated proxy_auth REQUIRED #用于配置高匿()       request_header_access Via deny all request_header_access X-Forwarded-For deny all #开启https代理 http_access allow CONNECT !SSL_ports #将deny 改为allow #开启ACL代理,或密码认证代理 http_access allow test http_access allow authenticated #设置服务端口(默认端口3128) http_port 3128 #配置多IP模式 acl random11 random 1/11 acl random10 random 1/10 acl random9 random 1/9 acl random8 random 1/8 acl random7 random 1/7 acl random6 random 1/6 acl random5 random 1/5 acl random4 random 1/4 acl random3 random 1/3 acl random2 random 1/2 acl random1 random 1/1 tcp_outgoing_address 服务器IP_11 random11 tcp_outgoing_address 服务器IP_10 random10 tcp_outgoing_address 服务器IP_9 random9 tcp_outgoing_address 服务器IP_8 random8 tcp_outgoing_address 服务器IP_7 random7 tcp_outgoing_address 服务器IP_6 random6 tcp_outgoing_address 服务器IP_5 random5 tcp_outgoing_address 服务器IP_4 random4 tcp_outgoing_address 服务器IP_3 random3 tcp_outgoing_address 服务器IP_2 random2 tcp_outgoing_address 服务器IP_1 random1 #设置日志输出格式(日志默认路径:/var/log/squid/logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %<A #可以删除和注销一些无用配置 1、默认自带的ACL 2、注销一下行 #http_access allow localhost manager #http_access deny manager #http_access deny to_localhost

  f、监测配置及初始化服务   (Centos7 不需要执行此步骤

       # squid -k check

       # squid -z

 

    g、启动服务并开机自启动

      # service squid restart    (Centos 6)     # systemctl restart squid  (Centos 7)  

      #  chkconfig squid on     (Centos 6)          # systemctl enable squid  (Centos 7) 

 

三、客户端测试     

1、浏览器测试

  打开浏览器(以IE为例,其他类似),菜单栏 -> 工具 -> Internet 选项 -> 连接 -> 局域网设置 -> 代理服务器,按照以下格式设置。

      

 

     浏览器访问:http://httpbin.org/get

 

 

 

2、代码测试多IP代理是否成功:

import requests #pip install requests import time headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36', } proxies={ 'http':'x.x.x.x:3128', 'https':'x.x.x.x:3128', } for i in range(10): print(i) try: response = requests.get('http://httpbin.org/get',proxies=proxies,headers=headers) print(response.text) except requests.exceptions.ConnectionError as e: print('Error',e.args) time.sleep(10)

 


__EOF__

本文作者语 默
本文链接https://www.cnblogs.com/weijie0717/p/12202427.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   语~默  阅读(115)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言
点击右上角即可分享
微信分享提示