CentOS-7.2部署Squid服务

2023-05-16

一、安装Squid代理服务器

#yum -y install squid

在这里插入图片描述

1、启动Squid服务和设置开机启动

#systemctl start squid
#systemctl enable squid

在这里插入图片描述

2、详解Squid服务器配置文件

默认的/etc/squid/squid.conf文件内容和文件结构如下,该文件由访问控制列表、参数设置和刷新模式三部分组成,更详细的内容可以参考**/usr/share/doc/squid-*/squid.conf.documented模板文件**

[root@fl ~]# more /etc/squid/squid.conf

第一部分:访问控制列表

acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
#http_access deny to_localhost
http_access allow localnet
http_access allow localhost
http_access deny all


第二部分:参数设置

http_port 128
#cache_dir ufs /var/spool/squid 100 16 256
coredump_dir /var/spool/squid

第三部分:刷新条目

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

3、介绍/etc/squid/squid.conf文件中可添加和修改的主要参数,以下内容为添加、修改内容,

仅作为参考,不作为修改内容,此处仅作介绍,可直接跳过此步骤

1)网络设置
#vi /etc/squid/squid.conf
在这里插入图片描述
第59行
在这里插入图片描述
添加如下内容:
icp_port 3130 //设置Squid发送/接受ICP查询时使用的端口
htcp_port 4827 //设置Squid发送/接收HTCP查询时使用的端口
在这里插入图片描述

2)临近代理设置
cache_peer 192.168.100.20 parent 3128 3130 no-digest no-netdb-exchange //表示指定其他代理服务器,192.168.100.20为上层服务器,http_port为3128,icp_port为3130,不发出建立摘要表的请求,不交换管理信息

cache_peer_access example.com allow aclcom //表示用不通的代理服务器获取特定的目标资源,使用example.com服务器去访问aclcom中定义的目标主机资源,这里的aclcom为用户自定义的ACL名称
在这里插入图片描述

3)缓存设置
cache_mem 256 MB //设置缓存区大小,一般为实际内存的1/3。

cache_dir ufs /var/spool/squid 100 16 256 //设置磁盘缓存目录和大小,ufs表示缓存格式,/var/spool/squid表示目录缓存,100表示磁盘缓存容量100MB,16表示最大16个二级子目录,256表示每个二级子目录最大有256个三级子目录

cache_swap_high 95 //设置最高缓存百分比,当实际缓存超过cache_swap_hig设置的百分比时,服务器会开始删除缓存直到百分比下降到cache_swap_low的设定值

cache_swap_low 90 //设置最高缓存百分比,当实际缓存超过cache_swap_hig设置的百分比时,服务器会开始删除缓存数据,直至容量达到cache_mem容量的90%

maxi mum_object_size 4096 KB //设置能缓存的最大单个文件的大小

maximum_object_size_in_memory 8 KB //在内存中单个文件最大缓存大小,超过这个大小将不缓存到内存中

ipcache_size 1024 //设置IP地址的最大缓存大小

fqdncache_size 1024 //设置完全合格的域名的最大缓存大小
在这里插入图片描述
4)日志文件名设置
cache_log /var/log/squid/cache.log //设置缓存日志文件路径,它记录服务器启动,关闭以及系统相关信息

cache_store_log /var/log/squid/store.log //网页缓存日志文件路径,记录了网页在缓存中的调用情况

access_log /var/log/squid/access.log //设置访问日志文件路径,记录了用户访问Internet的详细信息,可以查看每个用户的上网记录,格式由logformat参数指定

pid_filename /var/run/squid.pid //设置将squid的进程号记录在哪个文件中

在这里插入图片描述

5)认证设置
auth_param basic children 5 //设置鉴权程序的进程数

auth_param basic realm Squid proxy-caching web server //定义Web浏览器显示认证对话框时的领域名称,即用户输入用户名密码时看到的提示信息

auth_param basic credentialsttl 2 hours //用户通过认证后的有效时间,超出则必须重新认证

auth_param basic casesensitive off //用户名是否需要匹配大小

acl ncsa_users proxy_auth REQUIRED //所有成功鉴权的用户都归于ncsa_users组。

http_access allow nsca_uesrs //允许ncsa_users组的用户使用Proxy

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd //指定密码文件和用来验证密码的程序

在这里插入图片描述

6)禁止缓存
hierarchy_stoplist cgi-bin ? //出现cgi-bin或者?的URL不予缓存

hierarchy_stoplist -i ^https://?
acl QYERY urlpath_regex -i cgi-bin /? /.asp /.php /.jsp /.cgi
acl denyssl urlpath_regex -i ^https://
no_cache deny QUERY
no_cache deny denyssl
以上几条设置遇到URL中包换有cgi-bin和以https://开头的都不要缓存,asp\cgi\php\等动态脚本也不要缓存,。https://开头的不缓存是因为一般我们进行电子商务交易,例如银行付款等都是采用这个,如果把信用卡号等进行缓存是十分危险的!
在这里插入图片描述

7)超时设置
connect_timeout 1 minute //设置连接超时时间
peer_connect_timeout 30 seconds //设置与上层服务器之间的连接超市时间。
request_timeout 5 minutes //设置建立连接后请求的超时时间
persistent_request_timeout 1 minute //设置持续请求的超时时间
在这里插入图片描述

4、详解Squid访问控制列表(ACL)
1)内容格式
Squid服务支持访问控制,可以控制客户是否能够连接,以及连接后可以使用的资源,使用acl命令对不通性质的客户进行分类赋予名称,然后使用http_access命令对某一类客户实施允许还是拒绝的操作,下面给出Squid访问控制列表的内容格式,其中类型如下表1所示,时间表示方法如表2所示,匹配模式如表3所示,参数-i 使Squid不区分大小写:
acl ACL名称 ACL类型 [-i] 值|文件
http_access allow|deny ACL名称
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、配置正向代理服务器

1、Squid服务器与客户端网卡设置

在这里插入图片描述

2、规划代理服务器参数

项目要求:
在公司内部配置一台Squid服务器,为公司网络内的用户提供代理上网服务,具体参数如下表所示
在这里插入图片描述

1、编辑服务器配置文件

#vi /etc/squid/squid.conf

修改以添加如下内容:
修改并添加
添加acl规则,允许192.168.100.0/24访问,并将 192.168.0.0/16这行注释掉
在这里插入图片描述

http_port 3128   //此处为修改内容,第59行
cache_mem 512 MB
cache_dir ufs /var/spool/squid 20480 16 256
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
cache_access_log /var/log/squid/access.log
cache_mgr root@fl.com
cache_effective_user squid
cache_effective_group squid
dns_nameservers 8.8.8.8
visible_hostname prox.fl.com

在这里插入图片描述

2、重启squid服务器

#systemctl restart squid 

在这里插入图片描述

3、打开内核转发功能

编辑文件/etc/sysctl.conf,添加如下内容

net.ipv4.ip_forward=1

在这里插入图片描述

生效配置

#sysctl -p

在这里插入图片描述

4、本机测试Squid服务

#curl -x 192.168.100.10:3128 www.baidu.com  //注意此处192.168.200.20为外网网卡

在这里插入图片描述

停止squid服务再次测试

#systemctl stop squid
#curl -x 192.168.100.20:3128 www.baidu.com

在这里插入图片描述

5、配置Squid客户端

1)标准正向代理
当Squid服务程序顺利启动后,默认即可使用标准正向代理模式,在此模式下,Windows客户端只需设置IP地址和子网掩码即可,网关和DNS可不设置。在Win7中打开浏览器,依次单击”工具”,”Internet选项”,在“Internet选项”对话框中单击,“连接”,“局域网设置”,“局域网设置”对话框,填写Squid服务器的IP地址和端口号,然后尝试访问互联网网站

先确保您的Squid服务已重新启动

设置Win7的VM1的IP地址
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2)透明正向代理(此处仅作介绍,并不演示)
Linux网关提供透明代理服务,局域网可以通过透明代理访问Internet中的网站,在使用透明正向代理服务器时,无需在修改客户端的浏览器选项,但必须将客户端的网关IP指向Squid服务器,可不设置DNS,然后尝试访问互联网网站,会发现失败,无法解析目标主机域名,原来Squid服务程序是不支持DNS解析代理的,这个就需要配置SNAT

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS-7.2部署Squid服务 的相关文章

  • Vagrant 与 apache 同步文件夹权限问题

    我正在运行 Centos6 4 机器 Running vagrant upVagrant 文件中没有同步文件夹配置就可以了 我可以通过以下方式访问我的主机http localhost 8080它显示 Apache 页面 我可以在中创建ind
  • 内存屏障和 TLB

    内存屏障保证数据缓存的一致性 但是 它能保证TLB的一致性吗 我发现一个问题 在线程之间传递 MappedByteBuffer 时 JVM java 7 update 1 有时会因内存错误 SIGBUS SIGSEG 而崩溃 e g fin
  • 使用apache服务器时覆盖python3默认编码器

    我正在运行一个 apache 服务器 它服务于一个名为巧妙 http inginious readthedocs io Getting UnicodeDecodeError ascii 读取带有希伯来字符的文件时 我读到您可以使用环境变量更
  • unixODBC (DB2) + PHP + CentOS 的段错误

    经过两天的战斗 我尝试在这里寻求帮助 我正在使用 unixODBC 2 2 11 在 CentOS 5 4 服务器上使用 DB2 iSeries 和 PHP 5 3 我猜是因为 PHP 从 5 1 升级到 5 3 我让 PHP 在某些查询上
  • ai_socktype 不支持 Servname

    我正在使用 Vagrant 运行 Centos 虚拟机 机器似乎运行正常 但是当我尝试同步 Perforce 时 我可以看到以下错误 vagrant vagrant c5 x86 64 perforce p4 sync f Perforce
  • gcc 找不到 cc1plus

    我正在尝试在 CentOS 6 上安装 python 包 pandas 但我遇到了 gcc 编译器问题 sudo pip install pandas creating build temp linux x86 64 2 7 pandas
  • CentOS 中的 JMeter 整数表达式预期错误

    在 CentOS 中执行 JMeter 脚本时出现以下错误 我的JMeter版本是4 0 Java是1 8 我的脚本在 Windows 中运行良好 这是我的 JMeter 命令和我收到的错误 root localhost bin sh jm
  • 无法在 CentOS 7 上启动 postgresql 服务

    无法在 CentOS 7 上启动 postgresql 9 5 我关注了这个页面 https wiki postgresql org wiki YUM Installation https wiki postgresql org wiki
  • Centos 上的 MSBuild 返回“未找到导入的项目“/Microsoft.Cpp.Default.props””

    我正在尝试在 CentOS 中构建 VS 项目 我通过安装 dotnet sdk 2 2yum install dotnet sdk 2 2 执行时dotnet msbuild myproj vcxproj I get Microsoft
  • 增加 CentOS 上的 Docker 容器存储大小

    我想增加 Docker 容器的磁盘空间 这是 docker info 的输出 Containers 3 Running 3 Paused 0 Stopped 0 Images 4 Server Version 19 03 5 Storage
  • apache 和 httpd 正在运行,但我看不到我的网站 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我已经在我的服务器上安装了 apache 但是我无法通过我的服务器 IP 浏览我的网站 apache 的设置是 var www htdocs 下的单帐
  • 如何从 Mac OS X 交叉编译到 Linux x86?

    我正在运行 Mac OS X 10 5 8 并希望使用 GCC 4 1 2 为目标 CentOS 5 3 进行编译 我怎么能 编译GCC 4 1 2工具链及相关工具 使用该工具交叉编译目标 CentOS 5 3 任何帮助是极大的赞赏 最简单
  • 将 awk 输出保存到变量 [重复]

    这个问题在这里已经有答案了 谁能帮我解决这个问题吗 我正在尝试将 awk 输出保存到变量中 variable ps ef grep port 10 grep v grep port 10 awk printf s 12 printf var
  • 从现有虚拟机创建 docker 镜像

    我需要使用 CentOS 和 MySQL 创建 docker 基础镜像 但我已经有这样的虚拟机 没有docker 如何从现有的虚拟机创建基础 docker 镜像并在另一台带有 docker 的机器上使用它 虽然其他评论者正确地指出 将虚拟机
  • 如何找出apache上次重启的时间? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个 VPSkloxo控制面板已安装 我在用CentOS 5 8 32 bit 我今天重新启动了 Apache 但忘记了启动时间 知道确切的时间非
  • apache centos 上的多个 php

    如何在 Centos 6 5 上同时运行多个 php 版本 就是这样 要求Centos 6 5 可能适用于 6 6 和 7 Apache Apache 2 2 15 可能与其他版本一起使用 本指南安装和使用FASTCGI 请参阅替代安装的注
  • MariaDB 10 CentOS 7 移动数据目录的问题

    CentOS 7 和 MariaDB 10 的全新 最小 安装 我有一个额外安装的镜像卷 我想将其用于数据目录 当 my cnf mysqld 被注释掉时 启动顺序正常并正常完成 我已经复制了数据 sudo cp R p var lib m
  • 无法使用 git 克隆任何存储库

    我尝试克隆一些存储库 但总是遇到相同的错误 我在哪里可以找到有关此错误的更多信息 错误日志文件或类似的文件 或者也许有人知道可能出了什么问题 git clone http github com creationix nvm git nvm
  • 合并来自 ffmpeg 的两个视频

    我想使用 ffmpeg 将两个 mp4 视频组合成一个 mp4 视频 到目前为止我尝试过的是 ffmpeg i input1 mp4 i input2 mp4 output mp4 但是 每次我获取带有第一个输入的视频编解码器的视频而不是另
  • Composer 已安装,但获取 /usr/bin/env: php: No such file or directory

    在 CentOS 7 上 我安装了 PHP 7 1 然后我安装了作曲家 cd tmp curl sS https getcomposer org installer php71 gt used php71 instead of php ph

随机推荐