我正在尝试在位于普通数据中心的红帽机器上设置一个 squid 代理服务器,以便通过该代理发送我的所有流量。
我已经将 squid 配置为允许每个请求(当然只是为了测试:)),这是我的小配置:
debug_options ALL,1 33,2 28,9
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl CONNECT method CONNECT
http_access allow all
icp_access allow all
http_port 3128
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
问题是,当我将服务器的 IP 和 squid 端口 3128 输入到 Firefox 中时,出现超时...
如您所见,我在调试模式下运行 squid,但 cache.log 和 access.log 文件都没有显示任何请求。我以为 acl 是问题所在,但如果是这样,应该有一个限制访问的条目,对吗?
我还尝试了 squidclient,它运行起来非常好。所以我猜问题出在,由于某种原因,我无法连接到服务器...
答案1
经过一些额外的检查,很明显你的 iptables 防火墙阻止了来自主机的连接。根据 RedHat 文档添加规则以允许 SQUID 流量:http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sect-Security_Guide-Firewalls-Basic_Firewall_Configuration.html
规则本身应该是这样的:
-A INPUT -s <your.internal.network>/<netmask> -p tcp -m tcp --dport 3128 -j ACCEPT
-A OUTPUT -d <your.internal.network>/<netmask> -p tcp -m tcp --sport 3128 -j ACCEPT
仅当输出流量也经过过滤时才需要最后一条规则(我没有 RHEL 框来检查默认设置)。设置仅从内部网络访问对于安全性也非常重要。或者您可以将 squid 配置为仅监听内部的界面
http_port your.internal.ip.address:3128