如何在CentOS 7上安装和配置Squid代理
Squid是功能齐全的缓存代理,支持流行的网络协议,例如HTTP,HTTPS,FTP等。
通过将重复的请求缓存,过滤Web流量和访问受地理限制的内容,将Squid放置在Web服务器的前面可以大大提高服务器性能。
本教程说明了如何在CentOS 7上设置Squid以及如何配置Firefox和Google Chrome浏览器以使用代理。
在CentOS上安装Squid
Squid软件包包含在默认的CentOS 7存储库中。
要安装它,请以sudo用户身份运行以下命令:
sudo yum install squid
安装完成后,启动并启用Squid服务:
sudo systemctl start squidsudo 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
可以通过编辑'/etc/squid/squid.conf'文件来配置Squid。
可以使用“ 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应该可以。
我们可以使用访问控制列表(ACL)控制对Squid服务器的访问。
默认情况下,Squid仅允许从localhost和localnet访问。
如果将使用代理的所有客户端都具有静态IP地址,则可以创建一个ACL,其中将包含允许的IP。
代替在主配置文件中添加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
在前三行突出显示的行中,我们正在创建一个名为'authenticated'的新ACL。
最后一个突出显示的行是允许访问经过身份验证的用户。
重新启动Squid服务:
sudo systemctl restart squid
配置防火墙
如果我们正在运行防火墙,则需要打开端口“ 3128”。
为此,请运行以下命令:
sudo firewall-cmd --permanent --add-port=3128/tcpfirewall-cmd --reload
如果Squid在另一个非默认端口上运行,则需要允许该端口上的流量通过。
配置浏览器以使用代理
现在已经设置了Squid,最后一步是配置我们喜欢的浏览器以使用它。
火狐浏览器
对于Windows,macOS和Linux,以下步骤相同。
- 在右上角,点击汉堡包图标“☰”以打开Firefox菜单:
- 单击“⚙首选项”链接。
- 向下滚动到“网络设置”部分,然后单击“设置...”按钮。
- 一个新的窗口将会打开。
- 选择“手动代理配置”单选按钮。
- 在“ HTTP主机”字段中输入Squid服务器IP地址,在“端口”字段中输入“ 3128”。
- 选中“将此代理服务器用于所有协议”复选框。
- 单击“确定”按钮以保存设置。
至此,Firefox已配置完毕,我们可以通过Squid代理浏览Internet。
要进行验证,请打开“ google.com”,键入“ what is my ip”,我们应该会看到Squid服务器的IP地址。
要恢复为默认设置,请转到“网络设置”,选择“使用系统代理设置”单选按钮并保存设置。
还有一些插件可以配置Firefox的代理设置,例如FoxyProxy。
谷歌浏览器
Google Chrome使用默认的系统代理设置。
我们可以使用SwitchyOmega之类的插件,也可以从命令行启动Chrome网络浏览器,而无需更改操作系统代理设置。
要使用新的配置文件启动Chrome并连接到Squid服务器,请使用以下命令:
Linux:
/usr/bin/google-chrome \ --user-data-dir="$HOME/proxy-profile" \ --proxy-server="http://SQUID_IP:3128"
苹果系统 :
"/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"
如果配置文件不存在,将自动创建。
这样,我们可以同时运行多个Chrome实例。
要确认代理服务器正常运行,请打开“ google.com”,然后输入“ what is my ip”。
浏览器中显示的IP应该是服务器的IP地址。