专栏首页ITCoder如何在 CentOS 7上安装 Squid代理服务器

如何在 CentOS 7上安装 Squid代理服务器

Squid 是一个功能全面的缓存代理服务器,它支持著名的网络协议像 HTTP,HTTPS,FTP 等等。将 Squid 放在网页服务器的前端,通过缓存重复请求,过滤网络流量等,可以极大地提高服务器的性能。

这篇指南将会讲解如何在 CentOS 7 上建立 Squid,并且配置火狐和 Google 浏览器来使用这个代理服务器。

一、在 CentOS 上安装 Squid

Squid 软件包包含在默认的 CentOS 7 源仓库中。想要安装它,以 sudo 用户身份运行下面的命令:

sudo yum install squid

一旦安装完成,启动并开启 Squid 服务:

sudo systemctl start squid
sudo systemctl enable squid

想要验证安装是否成功,输入下面的命令,将会打印出服务的状态:

sudo systemctl status squid
● squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-07-13 16:47:56 UTC; 12s ago
...

二、配置 Squid

Squid 通过编辑/etc/squid/squid.conf文件进行配置。新增文件可以使用"include"指令添加到配置文件中。

在做任何修改之前,使用cp命令备份原来的配置文件:

sudo cp /etc/squid/squid.conf{,.orginal}

想要编辑文件,使用文本编辑器打开它:

sudo nano /etc/squid/squid.conf

默认情况下,Squid 被配置成在服务器所有网络接口上监听端口3128

如果你想修改端口号,并且设置监听接口,定位到http_port处,并且指定接口 IP 地址和新端口。如果没有接口指定,Squid 将监听所有网络接口。

/etc/squid/squid.conf

# Squid normally listens to port 3128
http_port IP_ADDR:PORT

在所有接口上和默认端口上运行 Squid 对大部分用户都很适用。

你可以使用 Access Control Lists (ACLs)来控制 Squid 服务器的访问。

默认情况下,Squid 仅仅允许从本地主机和本地网络来的访问。

如果所有将要使用代理服务器的客户端都有一个固定 IP 地址,你可以创建一个 包含允许 IP 地址的 ACL。

不用在主要配置中添加 IP 地址,我们可以创建一个新配置文件,用来配置地址: /etc/squid/allowed_ips.txt

192.168.33.1
# All other allowed IPs

一旦完成,打开主要配置文件,并且创建一个新的 ACL ,命名为allowed_ips,并且使用http_access指令允许它访问: /etc/squid/squid.conf

# ...
acl allowed_ips  src "/etc/squid/allowed_ips.txt"
# ...
http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
# And finally deny all other access to this proxy
http_access deny all

这个http_access规则的顺序很重要。确认你在http_access deny all之前添加了这一行。

http_access指令类似于防火墙规则。Squid 从上到下读取规则,并且后面匹配的规则不会被处理。

不管你对配置文件做了什么修改,你需要重新启动 Squid 服务器来使修改生效:

sudo systemctl restart squid

三、Squid 身份验证

Squid 可以使用不同的后端,包括 Samba,LDAP 和 HTTP 基本验证来验证用户。

在这个例子中,我们配置 Squid 使用基本验证。它是一个简单的验证方法,内置在 HTTP 协议中。

我们将使用openssl来生成密码,并且附加username:password对到文件/etc/squid/htpasswd文件中,并且显示出来:

printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd

例如,创建一个用户名称为mike,并且密码为Pz$lPk76,你将要运行:

printf "mike:$(openssl passwd -crypt 'Pz$lPk76')\n" | sudo tee -a /etc/squid/htpasswd
mike:2nkgQsTSPCsIo

下一步是配置 Squid 去启用 HTTP 基本验证,并且使用这个文件。

打开主要配置文件,添加下面的内容: /etc/squid/squid.conf

# ...
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
# ...
http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all

前面三行我们创建了一个 ACL 名称为authenticated,最后一行允许通过验证用户访问。

重启 Squid 服务:

sudo systemctl restart squid

四、配置防火墙

如果你正在运行防火墙,你需要打开端口3128。想要这么做,运行下面的命令:

sudo firewall-cmd --permanent --add-port=3128/tcp
firewall-cmd --reload
如果 Squid 运行在另外一个,非默认端口,你需要允许那个端口通过流量。

五、配置你的浏览器使用代理服务器

现在你已经建立了 Squid,最后一步是配置你喜欢的浏览器去使用它。

5.1 Firefox

下面这些步骤对于 Windows, macOS, 和 Linux 都是一样的。

01.在右上角,点击汉堡包图标打开 Firefox 的菜单:

02.点击⚙ Preferences连接。

03.滚动到Network Settings段,并且点击Settings...按钮。

04.打开一个新窗口。

  • 选择Manual proxy configuration单选按钮。
  • HTTP Host文本域输入你的 Squid 服务器 IP 地址,在Port文本域输入3128
  • 选择Use this proxy server for all protocols复选框。
  • 点击ok按钮来保存设置。

此时,你的 Firefox 就被配置好了。你可以通过 Squid 代理服务器浏览网络了。想要验证它,打开google.com,type"what is my ip”,并且你可以看到你的 Squid 服务器 IP 地址。

想要恢复成默认设置,找到Network Settings,选择Use system proxy settings单选按钮,并且保存设置。

还有一些插件可以帮助你配置 Firefox 的代理服务器设置,例如:FoxyProxy

5.2 Google Chrome

Google Chrome 使用默认的系统代理服务器设置。你也可以安装一个扩展,例如:SwitchyOmega,或者从终端命令行启动 Chrome 网页服务器。

想要使用新设置启动 Chrome,并且连接到 Squid 服务器,使用下面的命令:

Linux:

/usr/bin/google-chrome \
    --user-data-dir="$HOME/proxy-profile" \
    --proxy-server="http://SQUID_IP:3128"

macOS:

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
    --user-data-dir="$HOME/proxy-profile" \
    --proxy-server="http://SQUID_IP:3128"

Windows:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^
    --user-data-dir="%USERPROFILE%\proxy-profile" ^
    --proxy-server="http://SQUID_IP:3128"

如果这个配置不存在的话,会被自动创建。这种方式,你可以在同一时间运行多个实例。

想要确认代理服务器是否正常工作,打开google.com,并且输入"what is my ip”。这个 显示在你浏览器中的 IP,应该是你服务器中的 IP。

六、总结

你已经学会了如何在 CentOS 7 上安装 squid,并且配置你的浏览器去使用它。

Squid 是最著名的代理缓存服务器之一。它改进了网站服务器的速度,并且可以帮助你限制用户对网络的访问。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在 Ubuntu 18.04 上安装 Squid代理服务器

    Squid 是一个功能全面的缓存代理服务器,它支持著名的网络协议像 HTTP,HTTPS,FTP 等等。将 Squid 放在网页服务器的前端,通过缓存重复请...

    雪梦科技
  • 如何在 Ubuntu 20.04 上安装 TeamViewer

    TeamViewer 是一个跨平台解决方案,它可以被用来进行远程控制,桌面共享,在线会议,以及计算机之间的文件传输。

    雪梦科技
  • 如何在 Ubuntu 18.04 上安装 KVM

    KVM(基于内核的虚拟机)是一个内置于Linux内核的开源虚拟化技术。它允许你基于 Linux 或者 Windows 运行多个隔离的客户机虚拟机器。每一个客户机...

    雪梦科技
  • 如何在 Ubuntu 18.04 上安装 Squid代理服务器

    Squid 是一个功能全面的缓存代理服务器,它支持著名的网络协议像 HTTP,HTTPS,FTP 等等。将 Squid 放在网页服务器的前端,通过缓存重复请...

    雪梦科技
  • MHA 切换的2个异常(masterha_master_switch line 53)

            MHA 在测试手动故障转移和在线切换的过程中,碰到了2个比较诡异的问题,在使用IP地址调用的时候均无法测试成功,出现了Detected dead...

    Leshami
  • 常用nginx配置项详解(一个简单的例子)

    核心提示:Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器...

    后端技术探索
  • 深入理解XGBoost:分布式实现

    本文将重点介绍XGBoost基于Spark平台Scala版本的实现,带领大家逐步完成特征提取、变换和选择、XGBoost模型训练、Pipelines、模型选择。

    Coggle数据科学
  • 轻松几步搭建你的私有云

    私有云增加了IT的灵活性,帮助前端用户实现自助式服务。许多企业通往私有云的过程是从虚拟化起步的。从这种角度看,私有云主要是额外增加了一层灵活性,让用户可以自行部...

    静一
  • Spark 与 Hadoop 学习笔记 介绍及对比

    这篇博客将会简单记录Hadoop与Spark对比,HDFS,MapReduce的基本概念,及Spark架构设计,RDD,运行模式。整理起来一起阅读方便我们理解整...

    大鹅
  • HTML5学习-day02【悟空教程】

    请想象你正在看一个视频下面的评论,在翻到十几页的时候,你发现一个写得稍长,但非常有趣的评论。正当你想要停下滚轮细看的时候,手残按到了F5。然后,页面刷新了,评论...

    Java帮帮

扫码关注云+社区

领取腾讯云代金券