网络代理已经存在了很长一段时间,并已被全球数百万用户使用。 它们具有广泛的用途,最受欢迎的是在线匿名,但还有其他方法可以利用网络代理。 以下是一些想法:
- 在线匿名
- 提高在线安全性
- 改善加载时间
- 阻止恶意流量
- 记录您的在线活动
- 规避区域限制
- 在某些情况下可以减少带宽使用
Proxy Server如何工作
代理服务器是用作客户端和客户端可以从中请求资源的其他服务器之间的中介的计算机。 一个简单的例子是当客户端发出在线请求(例如想要打开网页)时,他首先连接到代理服务器。
然后代理服务器检查其本地磁盘缓存,如果可以在那里找到数据,它将把数据返回给客户端,如果没有缓存,它将使用代理IP地址代表客户端发出请求(不同于客户端)然后将数据返回给客户端。 代理服务器将尝试缓存新数据,并将其用于将来对同一服务器发出的请求。
什么是Squid代理
Squid是一个Web代理,用于我的各种组织。 它通常用作缓存代理,可缩短响应时间并减少带宽使用。
出于本文的目的,我将在Linode CentOS 7 VPS上安装Squid并将其用作HTTP代理服务器。
如何在CentOS 7上安装Squid
在我们开始之前,您应该知道Squid没有任何最低要求,但RAM使用量可能会有所不同,具体取决于通过代理服务器浏览Internet的客户端。
Squid包含在基本存储库中,因此安装简单明了。 但是,在安装之前,请确保您的软件包是最新的。
# yum -y update
继续安装squid,使用以下命令在系统启动时启动并启用它。
# yum -y install squid # systemctl start squid # systemctl enable squid
此时,您的Squid Web代理应该已经运行,您可以使用以下方式验证服务的状态。
# systemctl status squid
样本输出
● squid.service - Squid caching proxy Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2018-09-20 10:07:23 UTC; 5min ago Main PID: 2005 (squid) CGroup: /system.slice/squid.service ├─2005 /usr/sbin/squid -f /etc/squid/squid.conf ├─2007 (squid-1) -f /etc/squid/squid.conf └─2008 (logfile-daemon) /var/log/squid/access.log Sep 20 10:07:23 howtoing systemd[1]: Starting Squid caching proxy... Sep 20 10:07:23 howtoing squid[2005]: Squid Parent: will start 1 kids Sep 20 10:07:23 howtoing squid[2005]: Squid Parent: (squid-1) process 2007 started Sep 20 10:07:23 howtoing systemd[1]: Started Squid caching proxy.
以下是您应该注意的一些重要文件位置:
- squid配置文件: /etc/squid/squid.conf
- Squid访问日志: /var/log/squid/access.log
- Squid缓存日志: /var/log/squid/cache.log
最小的squid.conf
配置文件(没有注释)如下所示:
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network acl localnet src 172.16.0.0/12 # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl localnet src fc00::/7 # RFC 4193 local private network range acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager http_access allow localnet http_access allow localhost http_access deny all http_port 3128 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
将Squid配置为HTTP代理
在这里,我们将向您展示如何仅使用客户端IP地址进行身份验证,将squid配置为HTTP代理。
添加Squid ACL
如果您希望允许IP地址通过新的代理服务器访问Web,则需要在配置文件中添加新的acl ( 访问控制列表 )行。
# vim /etc/squid/squid.conf
你应该添加的行是:
acl localnet src XX.XX.XX.XX
其中XX.XX.XX.XX是您要添加的实际客户端IP地址。 该行应添加到定义ACL的文件的开头。 在ACL旁边添加注释是一个很好的做法,它将描述谁使用此IP地址。
请务必注意,如果Squid位于本地网络之外,则应添加客户端的公共IP地址。
您需要重新启动Squid,以便新的更改生效。
# systemctl restart squid
打开Squid代理端口
正如您在配置文件中看到的那样,只允许某些端口进行连接。 您可以通过编辑配置文件来添加更多内容。
acl Safe_ports port XXX
其中XXX是您要加载的实际端口。 同样,最好在旁边留下评论,以描述将要使用的端口。
要使更改生效,您需要再次重新启动squid。
# systemctl restart squid
Squid代理客户端身份验证
在使用代理之前,您很可能希望用户进行身份验证。 为此,您可以启用基本的http身份验证。 配置简单快捷。
首先,您需要安装httpd-tools 。
# yum -y install httpd-tools
现在让我们创建一个文件,稍后将存储用于身份验证的用户名。 Squid使用用户“squid”运行,因此该文件应归该用户所有。
# touch /etc/squid/passwd # chown squid: /etc/squid/passwd
现在我们将创建一个名为“proxyclient”的新用户并设置其密码。
# htpasswd /etc/squid/passwd proxyclient New password: Re-type new password: Adding password for user proxyclient
现在配置autnetication打开配置文件。
# vim /etc/squid/squid.conf
在端口ACL之后添加以下行:
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd auth_param basic children 5 auth_param basic realm Squid Basic Authentication auth_param basic credentialsttl 2 hours acl auth_users proxy_auth REQUIRED http_access allow auth_users
保存文件并重新启动squid以使新更改生效:
# systemctl restart squid
在Squid代理上阻止网站
最后,我们将创建一个最后的ACL ,以帮助我们阻止不需要的网站。 首先创建将存储列入黑名单的网站的文件。
# touch /etc/squid/blacklisted_sites.acl
您可以添加一些要阻止的域。 例如:
.badsite1.com .badsite2.com
程序点告诉squid阻止对该站点的所有引用,包括www.badsite1 , subsite.badsite1.com等。
现在打开Squid的配置文件。
# vim /etc/squid/squid.conf
在端口ACL之后添加以下两行:
acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl" http_access deny bad_urls
现在保存文件并重启squid:
# systemctl restart squid
一旦配置正确,现在您可以配置本地客户端浏览器或操作系统的网络设置以使用您的squid HTTP代理。
结论
在本教程中,您学习了如何自己安装,保护和配置Squid HTTP代理服务器。 通过您刚刚获得的信息,您现在可以通过Squid为传入和传出流量添加一些基本过滤功能。
如果你想加倍努力,你甚至可以配置Squid在工作时间阻止一些网站,以防止分心。 如果您有任何问题或意见,请在下面的评论部分发布。