19.4. 配置示例
19.4.1. Squid 连接到非标准端口
复制链接链接已复制到粘贴板!
						以下示例提供了 SELinux 如何通过强制上述布尔值补充 Squid 的真实演示,默认情况下仅允许访问某些端口。此示例随后将演示如何更改 布尔值并演示允许访问。
					
						请注意,这只是一个示例,并演示 SELinux 如何影响简单的 Squid 配置。Squid 综合文档已超出本文档的讨论范畴。详情请查看官方 Squid 文档。此示例假定 Squid 主机有两个网络接口,即 Internet 访问,并且任何防火墙已配置为允许使用 Squid 侦听的默认 TCP 端口(TCP 3128)对内部接口进行访问。
					
- 确认已安装了 squid :rpm -q squid ~]$ rpm -q squid package squid is not installedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有安装该软件包,以 root 用户身份使用yum工具进行安装:yum install squid ~]# yum install squidCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 编辑主配置文件/etc/squid/squid.conf,并确认cache_dir指令已取消注释,并类似于以下内容:cache_dir ufs /var/spool/squid 100 16 256 cache_dir ufs /var/spool/squid 100 16 256Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此行指定要在本示例中使用的cache_dir指令的默认设置;它由 Squid 存储格式(ufs)、缓存所在的系统上的目录(/var/spool/squid)、要用于缓存的磁盘空间量(100),最后是要创建缓存的第一个级别和第二级缓存目录的数量(分别为16和256)。
- 在同一配置文件中,确保http_access allow localnet指令已取消注释。这允许来自localnetACL 的流量,该流量在 Red Hat Enterprise Linux 上的 Squid 的默认安装中自动配置。它将允许任何现有 RFC1918 网络上的客户端计算机通过代理进行访问,这足以满足这个简单示例。
- 在同一配置文件中,确保visible_hostname指令已取消注释,并且配置为计算机的主机名。该值应该是主机的完全限定域名(FQDN):visible_hostname squid.example.com visible_hostname squid.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 以 root 用户身份,输入以下命令启动squid守护进程:因为第一次启动squid时,这个命令会按照cache_dir指令中指定的缓存目录的初始缓存目录,然后启动守护进程:systemctl start squid.service ~]# systemctl start squid.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确保squid已成功启动。输出将包括以下信息,只有时间戳会有所不同:systemctl status squid.service ~]# systemctl status squid.service squid.service - Squid caching proxy Loaded: loaded (/usr/lib/systemd/system/squid.service; disabled) Active: active (running) since Thu 2014-02-06 15:00:24 CET; 6s agoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 确认squid进程 ID (PID)已作为受限服务启动,如squid_var_run_t值所示:ls -lZ /var/run/squid.pid ~]# ls -lZ /var/run/squid.pid -rw-r--r--. root squid unconfined_u:object_r:squid_var_run_t:s0 /var/run/squid.pidCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 此时,连接到之前配置的localnetACL 的客户端机器可以成功使用此主机的内部接口作为其代理。这可以在适用于所有常见 Web 浏览器或系统范围的设置中配置。Squid 现在侦听目标计算机的默认端口(TCP 3128),但目标计算机将仅允许通过通用端口与 Internet 上的其他服务的传出连接。这是由 SELinux 本身定义的策略。SELinux 将拒绝对非标准端口的访问,如下一步中所示:
- 当客户端通过 Squid 代理(如侦听 TCP 端口 10000 的网站)使用非标准端口发出请求时,会记录类似如下的拒绝:SELinux is preventing the squid daemon from connecting to network port 10000 SELinux is preventing the squid daemon from connecting to network port 10000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 要允许此访问,必须修改squid_connect_any布尔值,因为它默认是禁用的:setsebool -P squid_connect_any on ~]# setsebool -P squid_connect_any onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您不希望 setsebool 更改在重启后保留,请不要使用 the-P选项。
- 现在,客户端可以访问 Internet 上的非标准端口,因为现在允许 Squid 代表其客户端发起到任何端口的连接。