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

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

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

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

一、在 Ubuntu 上安装 Squid

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

sudo apt update
sudo apt install squid

一旦安装完成,Squid 服务将会自动启动。

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

sudo systemctl status squid
● squid.service - LSB: Squid HTTP Proxy version 3.x
   Loaded: loaded (/etc/init.d/squid; generated)
   Active: active (running) since Thu 2019-06-27 11:45:17 UTC
...

二、配置 Squid

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

配置文件包含了注释,说明每一个配置选项的作用。

在做任何修改之前,最好先备份以下原来的配置文件:

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

四、配置防火墙

假设你正在使用 UFW管理你的防火墙,你需要打开 Squid 端口。想要启用包含默认 Squid 端口的‘Squid’ profile:

sudo ufw allow 'Squid'

想要验证状态,输入:

sudo ufw status

输出应该像下面这样:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
Squid                      ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
Squid (v6)                 ALLOW       Anywhere (v6)
如果 Squid 运行在另外一个非默认端口,例如`8888`你可以允许你的流量通过那个端口,设置`sudo ufw allow 8888/tcp`。

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

现在你已经建立了 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。

六、总结

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

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

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

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

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

    雪梦科技
  • 如何在 CentOS 7上安装 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帮帮

扫码关注云+社区

领取腾讯云代金券