【问题标题】:Squid proxy at ubuntu 18.04 impossible to connectubuntu 18.04 的 Squid 代理无法连接
【发布时间】:2020-02-19 09:53:00
【问题描述】:

我是 Google Cloud 的新手,所以我可能解释不准确。\ 我在 Google Cloud Platform 上安装了带有 Ubuntu 18.04 的 VM,并在其上安装了 Squid 3 代理服务器。 代理已经配置了一点。

http_port 3128 transparent
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 2
auth_param basic realm My Proxy Server
auth_param basic credentialsttl 24 hours
auth_params basic casesensitive off

#add acl rules
acl users proxy_auth REQUIRED

#http access rules
http_access deny !users
http_access allow users

在 Google 控制台中,我可以看到服务器的外部 IP 地址,但它无法通过它工作。

ifconfig 命令显示下一个

ens4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1460
        inet 10.156.0.3  netmask 255.255.255.255  broadcast 0.0.0.0
        inet6 fe80::4001:aff:fe9c:3  prefixlen 64  scopeid 0x20<link>
        ether 42:01:0a:9c:00:03  txqueuelen 1000  (Ethernet)
        RX packets 104399  bytes 83418274 (83.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 93840  bytes 12598292 (12.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 16697  bytes 1149429 (1.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16697  bytes 1149429 (1.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

其中 inet 10.156.0.3 表示我的内部 IP。 我想我不明白使用 Google 平台或仅使用代理配置的一些简单工作规则。

你能告诉我哪里错了吗? 谢谢。

【问题讨论】:

  • 您是否在防火墙上打开了端口 3128 以使连接到您的虚拟机成为可能?
  • 我好像没有。感谢您的提示,我现在会检查它。
  • 我在回答中提供了更多详细信息。如果您解决了问题,请将其标记为已接受。

标签: google-cloud-platform google-compute-engine ubuntu-18.04 http-proxy squid


【解决方案1】:

要解决您的问题,您需要检查nmap 哪些端口在您的 VM 上打开,如果 3128 已关闭,请为您的 VM 设置 Network tag 并添加防火墙规则以允许访问它。

我已尝试在我的测试虚拟机上复制您的问题:

  1. 创建虚拟机实例或使用现有实例
  2. 安装 Squid
  3. 检查 Squid 是否正在运行:

    $ sudo systemctl status squid 
     ● squid.service - LSB: Squid HTTP Proxy version 3.x
       Loaded: loaded (/etc/init.d/squid; generated)
       **Active: active (running)** since Wed 2020-02-19 11:47:50 UTC; 26s ago
    
  4. 使用 nmap 检查 Squid 的可访问性:

    $ nmap -Pn 35.XXX.155.XXX
    Starting Nmap 7.80 ( https://nmap.org ) at 2020-02-19 12:53 CET
    ...
    Host is up (0.023s latency).
    Not shown: 996 filtered ports
    PORT     STATE  SERVICE
    22/tcp   open   ssh
    3389/tcp closed ms-wbt-server
    8000/tcp closed http-alt
    8081/tcp closed blackice-icecap
    

    鱿鱼不可用

  5. 编辑虚拟机并设置Network tagproxy-server

  6. 添加防火墙规则以使用Network tag 启用与 Squid 的连接:

    $ gcloud compute --project=test-prj firewall-rules create proxy-server-rule --direction=INGRESS --priority=999 --network=default --action=ALLOW --rules=tcp:3128 --source-ranges=0.0.0.0/0 --target-tags=proxy-server
    
  7. 再次使用 nmap 检查 Squid 的可访问性

    $ nmap -Pn 35.XXX.155.XXX
    Starting Nmap 7.80 ( https://nmap.org ) at 2020-02-19 12:53 CET
    ...
    Host is up (0.022s latency).
    Not shown: 995 filtered ports
    PORT     STATE  SERVICE
    22/tcp   open   ssh
    3128/tcp open   squid-http
    3389/tcp closed ms-wbt-server
    8000/tcp closed http-alt
    8081/tcp closed blackice-icecap
    

    现在 Squid 可以使用了。

【讨论】:

  • 我已经采纳了您的建议,但似乎无法在我的帐户中通过 SSH 执行此操作。我收到下一条消息:ERROR: (gcloud.compute.firewall-rules.create) Could not fetch resource: - Insufficient Permission: Request had insufficient authentication scopes. 然后我尝试通过控制台使用您的参数执行此操作。 [link]prntscr.com/r4q5mm 但即使这样 nmap 显示:Host is up (0.0020s latency). PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 443/tcp closed https 3128/tcp closed squid-http 3389/tcp closed ms-wbt-server
  • 1. 您在 GCP 防火墙中还有其他优先级为 999 或更低的规则吗?如果是,请使用 Squid 更改测试 VM 的优先级,使其小于最小的。 2. 您的测试虚拟机的 GCP 防火墙规则中有几个端口吗?如果是,请更改它并保留 3128,甚至尝试通过选择 tcp 而不指定任何端口来打开所有 tcp 端口。 3. 您是否更改了 squid.conf 或其他配置设置?如果是,请按照我的步骤删除测试项并创建新项,但不要更改 VM 内部的任何内容以获得与我相同的配置。
  • nmap 显示 3128 端口是来自sudo tail -f /var/log/squid/access.log 的开放字符串:1582191844.819 0 [MY IP ADDRESS] TCP_DENIED/403 4032 CONNECT www.google.com: 443 - HIER_NONE/- text/html
  • 好的,我们终于得到了一些积极的结果。因此,您放入 GCP 的规则防火墙按预期工作,并且您能够访问您的 Squid 代理,下一步是配置您的 Squid 代理。作为可能的快速临时解决方法,您可以检查 squid.conf 并将 http_access deny all 替换为 http_access allow all 就像在这篇文章中一样 askubuntu.com/questions/1051554/…
  • 对不起,我不经常使用这个服务,误解了界面。我的问题完全解决了。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 2021-05-09
  • 2021-08-19
  • 2020-09-28
  • 1970-01-01
相关资源
最近更新 更多