云网牛站
所在位置:首页 > Linux云服务器 > 在CentOS 7操作系统上安装及设置Squid代理的过程

在CentOS 7操作系统上安装及设置Squid代理的过程

2019-07-15 10:43:33作者:陈有利稿源:云网牛站

本文介绍在CentOS 7操作系统上安装及设置Squid代理的全过程,将在CentOS 7上设置Squid并配置Firefox和Google Chrome Web浏览器以使用代理,可参考在Ubuntu 18.04/16.04/CentOS 7上安装和配置Squid代理的方法。Squid是一个功能齐全的缓存代理,支持流行的网络协议,如HTTP、HTTPS、FTP等。将Squid放置在Web服务器前可以通过缓存重复请求,过滤Web流量和访问地理限制内容来极大地提高服务器性能。

 

在CentOS上安装Squid

Squid包包含在默认的CentOS 7存储库中,要安装它,请以sudo用户身份运行以下命令:

sudo yum install squid

安装完成后,启动并启用Squid服务:

sudo systemctl start squid

sudo systemctl enable squid

要验证安装是否成功,请输入以下命令查看状态:

sudo systemctl status squid

出现大致如下信息表示OK:

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;

 

设置Squid

可以通过编辑/etc/squid/squid.conf文件来设置Squid,可以使用“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应该适合大多数用户。

你可以使用访问控制列表(ACL)控制对Squid服务器的访问。

默认情况下,Squid只允许从localhost和localnet访问。

如果将使用代理的所有客户端都具有静态IP地址,则可以创建包含允许的IP的ACL。

我们将创建一个新的专用文件来保存IP,而不是在主配置文件中添加IP地址。

/etc/squid/allowed_ips.txt文件:

192.168.33.1

# All other allowed IPs

完成后,打开主配置文件并创建一个名为allowed_ips的新ACL(第一个突出显示的行),并允许使用http_access指令(第二个突出显示的行)访问该ACL。

/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生成密码,并使用tee命令将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

通过前三个突出显示的行:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/htpasswd

auth_param basic realm proxy

acl authenticated proxy_auth REQUIRED

我们将创建一个名为authenticated的新ACL,最后突出显示的http_access allow authenticated行允许访问经过身份验证的用户。

重启Squid服务:

sudo systemctl restart squid

 

配置防火墙

如果你正在运行防火墙,则需要打开3128端口,为此,请运行以下命令:

sudo firewall-cmd --permanent --add-port=3128/tcp

firewall-cmd --reload

如果Squid在另一个非默认端口上运行,则需要允许该端口上的流量。

参考:CentOS 7下使用FirewallD构建动态防火墙

 

配置浏览器以使用代理

现在你已经设置了Squid,最后一步是配置你的浏览器以使用它。

1、Firefox浏览器(参考:Linux下用snap安装不同的Firefox版,包括稳定/candidate/beta/esr版

对于Windows、macOS和Linux,以下步骤都是相同。

1]、在右上角,点击菜单图标以打开Firefox的菜单。

2]、单击首选项链接。

3]、向下滚动到“网络设置”部分,然后单击“设置...”按钮。

4]、将打开一个新窗口,按照下面步骤操作:

选择手动代理配置单选按钮。

在HTTP主机字段中输入你的Squid服务器IP地址,在端口字段中输入3128。

选中“为所有协议使用相同代理服务器”复选框。

单击“确定”按钮以保存设置。

在CentOS 7操作系统上安装及设置Squid代理的过程

此时,你的Firefox已配置,你可以通过Squid代理浏览Internet,要验证它,请打开google,输入“what is my ip”,你应该看到你的Squid服务器IP地址。

要恢复为默认设置,请转到“网络设置”,选择“使用系统代理设置”单选按钮并保存设置。

在CentOS 7操作系统上安装及设置Squid代理的过程

还有几个插件可以帮助你配置Firefox的代理设置,如FoxyProxy。

2、Google Chrome浏览器(参考:在RHEL 8/CentOS 8上安装Google Chrome浏览器的方法

Google Chrome使用默认的系统代理设置,你可以使用插件(如SwitchyOmega)或从命令行启动Chrome网络浏览器,而不是更改操作系统代理设置。

要使用新配置文件启动Chrome并连接到Squid服务器,请使用以下命令:

1、Linux:

/usr/bin/google-chrome \

 --user-data-dir="$HOME/proxy-profile" \

 --proxy-server="http://SQUID_IP:3128"

2、macOS:

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \

 --user-data-dir="$HOME/proxy-profile" \

 --proxy-server="http://SQUID_IP:3128"

3、Windows:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^

 --user-data-dir="%USERPROFILE%\proxy-profile" ^

 --proxy-server="http://SQUID_IP:3128"

如果配置文件不存在,将自动创建配置文件,这样,你可以同时运行多个Chrome实例。

要确认代理服务器是否正常工作,请打开google,然后输入“what is my ip”,浏览器中显示的IP应该是服务器的IP地址。

 

相关主题

第16章 使用Squid部署代理缓存服务

精选文章
热门文章