SQUID Proxy on RHEL5 / CentOS - 您应该了解的一切[第1部分]
代理服务器的主要特征或义务可以是从客户端接收HTTP请求并将请求转发到目的地并将答复中继到请求者的网关。
Squid是最受欢迎的开源软件,将其带给我们。 它还具有一些很好的功能,可用于执行诸如Web访问控制,带宽控制,限制策略以及内容缓存和过滤等其他操作。 实际上,人们安装SQUID来追求2个目标:首先通过内容缓存来减少带宽费用,其次是限制对特定内容的访问。
以下指南说明了使用Squid的优势,并将介绍如何在RHEL5和CentOS Linux上安装,配置,控制和维护Squid代理服务器。
***注意:本指南或教程或您喜欢的任何内容都是基于我的个人经历,我保证100%表示它对我来说是一种魅力。 所以如果你安装这个软件,由于任何原因你有技术上的困难,只是发布评论,我会和你一起解决。 ***
只是你应该知道的东西:
配置文件中的规则行之前的'#'哈希符号将禁用该规则。
如果需要使用代理服务器,您需要修改客户端计算机上的浏览器设置,例如:IE> Internet选项> Lan设置>启用代理服务器复选框>设置Squid代理服务器和端口的IP地址(默认为3128 )。
之前:如果您不确定是否安装了Squid,请键入以下命令:
# rpm -q squid
squid-2.6.STABLE6-5.el5_1.3 //this means you have squid installed on your box and do not need to install, so prepare your self for the configuration.
要在RHEL5 / CentOS上安装,请键入以下命令:
# yum install squid
如果你不能使用yum,那么尝试这样:
首先从http://www.squid-cache.org/ (官方squid网站)下载最新版本的squid并将其移至/ tmp
:
# cd /tmp
# rpm -ivh squid-2.6.STABLE.rpm
这将在其目录中安装squid配置和二进制文件。 之后使用此命令在系统引导时自动运行程序:
# chkconfig --level 35 squid on // runlevel 3 is for running squid on text based and 5 is for running on x environments
好的,现在是时候开始服务了:
# service squid start
对于配置,您需要根据您的Linux版本打开配置文件,对于RHEL5 / CentOS,请执行以下操作:
# vi /etc/squid/squid.conf就是这样,你可以在这里定义大多数参数,记住启动或重启服务或查看日志文件时可能会看到这个错误:
警告:无法确定此机器的公共主机名。 请配置一个或设置'visible_hostname'。
这意味着主机名未正确定义,您需要更改配置文件中的visible_hostname
。需要更改缓存服务器的身份或排除故障或查看日志。所以改变它之前的任何其他像这样:
visible_hostname youcl
您可以看到http_port 3128
,这意味着Squid监听来自此端口上HTTP客户端的请求。
访问控制列表(ACL)
ACL用于限制使用,限制主机的Web访问; 每个ACL行定义一种特定类型的活动,例如访问时间或源网络,之后我们需要将ACL链接到http_access
语句,该语句
告诉Squid是否拒绝或允许与ACL匹配的流量。
当您第一次安装Squid时,您需要添加一些acls以允许您的网络使用互联网,因为squid默认拒绝Web访问。
ACL的语法如下所示:
acl aclname acltype value这个例子将允许localhost访问互联网:
aclname = rulename (it could be some desire name like mynetwork)
acltype = type of acl like : src, dst (src:source ip | dst:destination ip)
value = it could be ip address, networks, URLs ,...
acl localhost src 127.0.0.1/32
http_access allow localhost
我们允许与localhost ACL中包含的ip地址范围匹配的计算机访问互联网。 还有其他ACL和ACL操作符可用于Squid,但这对于实践是有好处的。
所以用这个语法,你现在可以告诉Squid如何工作。 假设你想允许你的192.168.1网络范围访问互联网,你可以这样做,但首先打开配置文件,找到这些行:
http_access allow localhost http_access deny all
将它们替换为:
acl mynetwork src 192.168.1.0/24 http_access allow localhost http_access allow mynetwork http_access deny all
注意:指定http_access
行之前的所有
规则。 之后,保存文件并重新启动squid服务。
(如果您使用vi编辑器使用此功能保存退出> 1按ESC键2键入“:x”而不用引号,然后按Enter键。)
# service squid restart
请记住,重新启动squid服务后,您可能会在配置中使用“/ 24”
时出现错误,如果不行,您可以轻松地将/ 24
更改为/255.255.255.0
,并在重新启动整个网络后重新启动squid服务其使用IP地址192.168.1.1
到192.168.1.254
可以访问互联网。
你可能会问自己关于允许互联网到大家除了特定的ip地址,实际上这是一个好的开始,带来一些乐趣:)。 好的,这样做打开配置文件,做如下:
acl bad_employee src 192.168.1.18 http_access deny bad_employee acl mynetwork src 192.168.1.0/24 http access allow mynetwork
在上述示例中,整个网络将被允许使用互联网,除了被阻止的人(bad_employee)
。 记住Squid从上到下解释规则,所以你需要小心。
您可以为公司创建限制规则,并将其分配给您创建的mynetwork acl,
如下所示:
acl mynetwork src 192.168.1.0/24 acl business_hours time M T W H F 9:00-17:00 acl bad_employee src 192.168.1.18 http_access deny bad_employee http_access allow mynetwork business_hours
日 - 缩写:S - 星期日M - 星期一T - 星期二W - 星期三H - 星期四F - 星期五 - 星期六
您也可以阻止特定的URL:
acl block_site dst www.yahoo.com http_access deny block_site
www.yahoo.com
将被过滤BUT mail.yahoo.com
是开放的,因为我们阻止yahoo.com
,所以如果你想阻止一个单一的url和它的子域,我们这样做:
acl block_domain dstdomain .yahoo.com http_access deny block_domain
而且,您可以阻止一个URL,如果您想阻止多个单个域,我们需要创建一个文件来保存特定的URL,并为此文件读取权限如下所示:
# touch /etc/squid/block_list.txt
# chmod 444 /etc/squid/block_list.txt
# vi /etc/squid/block_list.txt
输入一些要阻止的URL:
www.sxx.com www.yahoo.com www.hotmail.com
然后保存并退出,现在是制定规则的时候了。 打开配置文件并将这些参数放入其中:
acl block_list url_regex "/etc/squid/block_list.txt" http_access deny block_list
您可以阻止包含意外字词的网址如下所示:
acl blockword url_regex sxx http_access deny blockword
(您可以阻止不区分大小写的字词:-i sxx)
您可以阻止.exe
文件的下载:
acl block_exe url_regex .*\.exe$ http_access deny block_exe
如果要阻止更多扩展程序下载,您可以按照前面所述指定所有文件(完全像某些要阻止的URL部分)。
您可以阻止TLD(.br .eu):
acl block_tld dstdom_regex \.br$ http_access deny block_tld
您可以配置squid从ncsa_auth用户读取符合NCSA的加密密码文件提示用户名和密码,因此:
# htpasswd -c /etc/squid/squid_passwd your_username
enter pass : your_password
# chmod o+r /etc/squid/squid_passwd
打开配置文件并将这些行放入其中并更改为您自己的配置:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd acl ncsa_user proxy_auth REQUIRED http_access allow ncsa_user
如果您不想修改浏览器以使用代理,则有一种称为“透明代理”的方法
; 使用这个你需要这样做:
之前的squid版本2.6:
httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on
Squid版本2.6到3.0:
http_port 3128 transparent
Squid版本3.1+:
http_port 3128 intercept
感谢您抽出时间阅读本指南,希望对您有所帮助。
本指南是第1部分,第2部分将了解“内容缓存”
, “负载平衡”
, “带宽管理”
, “Squid日志”
, “Nmap”
和“监视[由用户访问的URL”
等等。 .. ..
玩的开心! :)