网络工具您现在的位置是:首页 > 工具箱 > 网络工具

CentOS下Squid网站代理搭建配置应用记录

<a href='mailto:'>微wx笑</a>的头像微wx笑 2019-08-19网络工具 17 0关键字: CentOS  Squid  代理  

服务器环境:阿里云香港ECS CentOS release 6.8 (Final)本地环境:MacOS 10.12.6 (16G1510)Squid介绍Squid是Linux自带的代理软件,与其它代理软件如Apache、Socks等相比,下载安装

服务器环境:阿里云香港ECS CentOS release 6.8 (Final)M0G无知

本地环境:MacOS 10.12.6 (16G1510)M0G无知

Squid介绍

Squid是Linux自带的代理软件,与其它代理软件如Apache、Socks等相比,下载安装简单,配置灵活,支持缓存和多种协议。 M0G无知

image.pngM0G无知

代理的工作机制

代理服务器(Proxy Server)是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。其最基本的功能就是连接,此外还包括安全性、缓存,内容过滤,访问控制管理等功能。当客户机通过代理请求Web页面时,执行的代理服务器会先检查自己的缓存,当缓存中有客户机需要访问的页面,则直接将缓存服务器中的页面内容反馈给客户机;如果缓存中没有客户机需要访问的页面,则由代理服务器想Internet发送访问请求,当获得返回的Web页面以后,将页面数据保存到缓存中并发送给客户机。M0G无知


M0G无知

代理的基本类型

根据实现的方式不同,代理服务可以分为传统代理和透明代理两种常见的代理服务。M0G无知


M0G无知

1、传统代理:普通代理服务,必须在浏览器、QQ聊天工具,下载团建等程序中手动设置代理服务器的地址和端口,然后才能使用代理服务来访问网络,对于网页浏览器,访问网站时的域名解析请求也会发送给指定的代理服务器。M0G无知


M0G无知

2、透明代理:提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向,实际上仍然交给代理服务器来处理。重定向的过程对客户机“透明”的,用户甚至不知道自己在使用代理服务,所以称为“透明代理”。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给DNS服务器。M0G无知

安装

yum install squid -y
yum install httpd-tools -y

基本配置

vi /etc/squid/squid.conf

#这里是端口号,可以按需修改
#http_port 3128 这样写会同时监听ipv6和ipv4的端口,推荐适应下面的配置方法。
http_port 0.0.0.0:3128
http_access allow all  #允许任意客户机使用代理,文件中默认是 http_access deny all
cache_mem 64 MB        #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
reply_body_max_size 10 MB   #允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
maximum_object_size 4096 KB   #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

  1、如果不需要带用户认证,只需启用这条即可(安全性很差)M0G无知

1
http_access allow all

  2、带用户认证配置(这里通过ncsa认证模块来为我们的squid添加认证)M0G无知

1
2
3
htpasswd -c /etc/squid/passwd airoot       #创建一个密码文件名为passwd,账号名为airoot的密码文件
# 回车之后提示输入密码,在此这里我设置的密码为 321654
# 注意密码不要超过8位 

  2.1 验证密码文件M0G无知

1
2
3
4
5
6
/usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
# 输入 用户名 密码
airoot 321654
# 提示OK说明成功,ERR是有问题,请检查一下之前步骤
OK
# 测试完成,crtl + c 打断

  2.2 配置文件 M0G无知

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#注释以下内容:
# http_access deny !Safe_ports
# http_access deny CONNECT !SSL_ports
# http_access deny to_localhost
# http_access allow localnet
# http_access deny all
 
#在代码后添加验证和安全相关命令
acl OverConnLimit maxconn 16       #定义每个IP最大允许16个连接,防止攻击
 
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd      #选择的认证方式为basic,定义认证程序路径和密码文件路径。
auth_param basic children 5         #认证程序的进程数
auth_param basic realm airoot's Squid Server        #客户端在使用代理时,输入密码时弹出来的提示框中的描述文字
auth_param basic credentialsttl 5 hours     #认证有效时间
acl auth_user proxy_auth REQUIRED     #定义认证的用户
http_access deny OverConnLimit       #超出之前设定的连接数则拒绝
http_access allow auth_user     #允许认证的用户访问
http_access deny all     #拒绝所有其它访问
  
#题外话
# acl auth_user proxy_auth REQUIRED 等于 acl authenticated proxy_auth REQUIRED
# http_access allow auth_user 等于 http_access allow authenticated

开放端口

如果你使用的是云服务器,比如我使用的是阿里云ECS,那么需要配置安全组,参考:云服务器 ECS > 安全 > 安全组 > 添加安全组规则M0G无知

开放防火墙端口M0G无知

[root@promote run]# iptables -F              #清除防火墙filter表中规则
[root@promote run]# setenforce 0             #关闭增强安全×××
[root@promote run]# iptables -I INPUT -p tcp --dport 3218 -j ACCEPT    #这句策略就是允许访问3218端口的tcp数据包通过
[root@promote run]# service squid reload     #重新加载服务配置

初始化SquidM0G无知

1
squid -z

启动命令与开机自启M0G无知


M0G无知

1
2
3
4
5
6
7
8
9
# 启动
systemctl start squid.service
# 停止
systemctl stop squid.service
# 重启
systemctl restart squid.service
 
#设置开机自启
systemctl enable squid.service

你也可以使用以下命令:M0G无知


M0G无知

service squid start
service squid restart
service squid stop

连接测试

使用 curl 或 wget 命令测试是比较方便的,不会影响浏览器的正常上网。
M0G无知

curl -x proxyhost:port  
wget -e "http_proxy=porxyhost:port" www.baidu.com

如果测试通过了,再设置浏览器的代理配置M0G无知

Mac系统下Chrome浏览器代理设置


M0G无知

参考:M0G无知

Centos7 squid安装与配置M0G无知

Squid-4.1(最新)安装及构建代理服务器M0G无知

使用Squid搭建CentOS7代理服务器上网M0G无知

Linux、Mac下curl如何使用带有用户名密码的http proxy

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/toolbox/newwork/2019-08-19/113.html

很赞哦! () 有话说 ()