写点什么

CentOS-7.2 部署 Squid 服务

作者:指剑
  • 2022-11-30
    重庆
  • 本文字数:3581 字

    阅读完需:约 12 分钟

CentOS-7.2部署Squid服务

一、安装 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 networkacl localnet src 172.16.0.0/12 # RFC1918 possible internal networkacl localnet src 192.168.0.0/16 # RFC1918 possible internal networkacl localnet src fc00::/7 # RFC 4193 local private network rangeacl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443acl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 # httpsacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl CONNECT method CONNECT
http_access deny !Safe_portshttp_access deny CONNECT !SSL_portshttp_access allow localhost managerhttp_access deny manager#http_access deny to_localhosthttp_access allow localnethttp_access allow localhosthttp_access deny all

第二部分:参数设置
http_port 128#cache_dir ufs /var/spool/squid 100 16 256coredump_dir /var/spool/squid
第三部分:刷新条目
refresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern -i (/cgi-bin/|\?) 0 0% 0refresh_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 /.cgiacl denyssl urlpath_regex -i ^https://no_cache deny QUERYno_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 MBcache_dir ufs /var/spool/squid 20480 16 256cache_log /var/log/squid/cache.logcache_store_log /var/log/squid/store.logcache_access_log /var/log/squid/access.logcache_mgr root@fl.comcache_effective_user squidcache_effective_group squiddns_nameservers 8.8.8.8visible_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

发布于: 刚刚阅读数: 3
用户头像

指剑

关注

InfoQ签约作者 2022-07-13 加入

AWS社区建设者,AWS学生大使,微软学生大使,阿里云签约作者,Info Q签约作者,CSDN博客专家,华为云云享专家

评论

发布
暂无评论
CentOS-7.2部署Squid服务_centos_指剑_InfoQ写作社区