我是一名程序员,但现在负责管理基于 Linux 的网络,所以这个问题可能有点愚蠢。所有 PC 都通过 squid 作为代理服务器,squid 未设置为阻止正常的“受信任”端口,例如 80(http),我还将其更改为允许更高的端口,例如 4040。但当我尝试打开包含此端口号的 URL 时,squid 会阻止它,例如
对于它为什么会这样做,有什么想法吗?
客户端是 Windows XP,squid 在 VMware 映像上的 Debian(据我所知)上运行。
答案1
允许的端口通常由 来配置Safe_ports
acl
。配置文件应该有一个配置端口列表的 ACL。这在规则中使用http_access
。我的配置有规则http_access deny !Safe_ports
。
Debian 系统可能正在运行 iptables 防火墙,阻止对端口 4040 的传出访问。
编辑:如果删除注释和空白行,可能会更容易读取配置。这应该会将您查看的行数减少到 50 左右。删除文件并提取 acl 数据的命令是:
sudo grep -v -e '^#' -e '^$' /etc/squid3/squid.conf > ~/squid.txt
grep grep -i -e acl -e allow -e deny squid.txt
您的问题的重要内容是:
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl Safe_ports port 1025-65535 # unregistered ports
http_access deny !Safe_ports
http_access allow localnet
如果缺少未注册的端口,则最有可能出现问题。如果端口上使用 HTTPS,则连接可能会失败。