【问题标题】:squid proxy - howto allow tcp connect - getting TCP_DENIAL/400 with ERR_INVALID_DOMAINsquid 代理 - 如何允许 tcp 连接 - 使用 ERR_INVALID_DOMAIN 获取 TCP_DENIAL/400
【发布时间】:2012-06-09 09:02:14
【问题描述】:

我的设备需要连接到 tcp:80 上的互联网服务,但网络无法直接访问互联网。所以我正在使用 squid 代理来解决这个问题。

设备允许我输入代理服务器、端口、用户名和密码。

我发现该设备使用 http CONNECT 而不是 http GET(在我的浏览器上运行良好)。

当设备尝试连接时,它会收到一个 http 错误 400。 squid access.log 只给了我这个:

1338885433.033 0 172.22.140.129 TCP_DENIED/400 1728 CONNECT :0 - NONE/- text/html

所以我捕获了数据包以真正了解发生了什么:

来自设备的请求:

连接 mydomain.com:0 HTTP/1.0 用户代理:Sequencer/5.5.0.5539

鱿鱼的回答:

HTTP/1.0 400 错误请求
鱿鱼/2.7.STABLE9
X-Squid-错误:ERR_INVALID_URL 0
关闭

我的 squid.conf:

auth_param 基本程序 /usr/lib/squid/pam_auth auth_param 基本儿童 5 auth_param 基本领域 Squid 代理缓存网络服务器 auth_param 基本凭据ttl 2 小时 auth_param 基本区分大小写关闭 acl 全部 src 全部 acl 管理器原型缓存对象 acl 本地主机 src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 acl localnet src 10.0.0.0/8 # RFC1918 可能的内部网络 acl localnet src 172.16.0.0/12 # RFC1918 可能的内部网络 acl localnet src 192.168.0.0/16 # RFC1918 可能的内部网络 acl SSL_ports 端口 443 # https acl SSL_ports 端口 563 # 新闻 acl SSL_ports 端口 873 # rsync acl Safe_ports 端口 80 # http acl Safe_ports 端口 21 # ftp acl Safe_ports 端口 443 # https acl Safe_ports 端口 70 # gopher acl Safe_ports 端口 210 # wais acl Safe_ports port 1025-65535 #未注册的端口 acl Safe_ports 端口 280 # http-mgmt acl Safe_ports 端口 488 # gss-http acl Safe_ports 端口 591 # 文件生成器 acl Safe_ports port 777 #multiling http acl Safe_ports 端口 631 # 杯子 acl Safe_ports 端口 873 # rsync acl Safe_ports 端口 901 # SWAT acl 吹扫方法 PURGE acl CONNECT 方法 CONNECT acl checkpw proxy_auth 需要 http_access 允许管理器本地主机 http_access 拒绝管理器 http_access 允许清除本地主机 http_access 拒绝清除 http_access 拒绝!Safe_ports http_access 允许连接 http_access 允许本地网 http_access 允许本地主机 http_access 允许 checkpw 全部 http_access 全部拒绝 icp_access 允许本地网 icp_access 全部拒绝 http_port 3128 hierarchy_stoplist cgi-bin ? access_log /var/log/squid/access.log 鱿鱼 debug_options ALL,1 33,2 28,9 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern(发布|包(.gz)*)$ 0 20% 2880 刷新模式。 0 20% 4320 acl 广播 rep_header X-HTTP09-First-Line ^ICY.[0-9] upgrade_http0.9 拒绝直播 acl apache rep_header 服务器 ^Apache broken_vary_encoding 允许 apache extension_methods 报告合并 MKACTIVITY CHECKOUT 主机文件 /etc/hosts forwarded_for 关闭 coredump_dir /var/spool/squid

是否有任何解决方案可以摆脱 ERR_INVALID_URL?是我误解了squid代理的概念还是设备的请求无效?

如果需要任何其他信息,请告诉我。

提前谢谢你, 克里斯蒂安。

【问题讨论】:

  • 有两个选项,或者应用程序有错误,它正在发送端口 0,或者您已替换端口以隐藏信息,并且您选择了无效端口:)
  • 如果 squid 配置出现问题 - 在整个配置中搜索单词 deny。你可能错过了一些东西。然后,似乎没有进一步的acls 可以覆盖它。

标签: http tcp proxy connect squid


【解决方案1】:

我通过注释掉默认的 squid.conf 解决了同样的错误:

# Deny CONNECT to other than secure SSL ports
#http_access deny CONNECT !SSL_ports

默认情况下,Squid 设置为不允许 CONNECT 连接到非 SSL 端口。如果您想在没有 SSL 的情况下进行测试,可以通过注释掉上面的行来禁用它。

【讨论】:

    【解决方案2】:

    如上所述,我允许非 SSL 端口连接,但忘记从我尝试访问的网络打开 acl。打开解决了问题:

    acl localnet src 1.1.0.0/24     # <- My Internal network I am accessing from
    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
    

    【讨论】:

    • 谢谢,要使这个答案有效,您还必须取消注释此行:http_access allow localnet。这个答案与@Matthieu 的答案相结合,帮助我修复了/var/log/squid/access.log 中出现的错误“TCP_DENIED/403”“HIER_NONE/”。
    【解决方案3】:

    对我来说,这与 @peaxol 正好相反:我定义了 acl,但没有定义 http_access allow 规则。我必须添加它们:

    acl vpn src xx.xx.xx.xx/xx
    ...
    http_access allow vpn
    

    【讨论】:

    • 啊,谢谢!为了使@peaxol 的答案起作用,我不得不取消注释这一行:http_access allow localnet
    【解决方案4】:

    我已经通过设备的产品支持解决了。

    他们向我展示了一种启用代理连接过程的更详细调试视图的方法。

    日志文件中有一行“无法连接到中继 0.0.0.0”

    所以我检查了设备的 dns 服务器设置,发现有一个错字。就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-19
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      相关资源
      最近更新 更多