Skip to content

懒猫微服进阶心得(十一):把懒猫微服当作旁路由,客户端无需转发直接访问内外地址

今天在外面通过懒猫转发访问路由器时,发现需要逐一映射多个内网地址,操作起来有点麻烦,于是想到了一种一劳永逸的解决办法。

最开始我用 Squid 来代理 AWS VPC,后来想到懒猫也可以用作同样的功能。以下是我准备的 Compose 配置,我已经完成了 app 镜像的复制。

yml
services:
  squid:
    container_name: squid
    ports:
      - 3128:3128
    image: registry.lazycat.cloud/u04123229/ubuntu/squid:c534e32e8e1e766e
networks: {}

下面是 Docker 截图:

image-20250718122636189

默认安装后,Squid 的默认规则会屏蔽所有网站。若要访问内网地址,就会看到“访问被拒绝”的提示。接下来,我们需要修改转发规则。

image-20250718124511756

进入 Squid 容器,编辑配置文件,然后重启容器即可生效:

sudo vim /etc/squid/squid.conf
# 在文件底部添加以下行以允许所有 HTTP 访问
http_access allow all

现在就可以使用你喜欢的工具进行访问了。

image-20250718124727452

然后就可以在外边访问私有地址了。

image-20250718150626296

或者在终端上,通过设置环境变量以通过代理服务器访问 HTTP 和 HTTPS:

export http_proxy=http://your_proxy_ip:3128
export https_proxy=http://your_proxy_ip:3128

如果你需要白名单功能:

首先,创建一个包含你希望允许访问的域名的白名单文件。该文件会用于匹配允许的域名。

  1. 打开终端并创建白名单文件。例如,我们将其存放在 /etc/squid/whitelist 路径:

    sudo vim /etc/squid/whitelist
  2. 在文件中,每行列出一个希望允许访问的域名。例如:

    .youtube.com
    .bilibili.com
    .example.com

    这样就允许 youtube.combilibili.comexample.com 的请求通过代理,而其他未列出的域名将被拒绝。

2. 编辑 squid.conf 配置文件

接下来,编辑 Squid 的主配置文件 squid.conf,将白名单配置添加到文件中。

  1. 打开 Squid 配置文件:

    sudo vim /etc/squid/squid.conf
  2. 在文件中,找到并添加以下规则:

    • 允许 localhost 访问

      http_access allow localhost

      该规则允许本地计算机(localhost)访问代理服务器。

    • 添加白名单配置

      acl whitelist dstdomain "/etc/squid/whitelist"
      http_access allow whitelist

      这两行配置定义了一个名为 whitelist 的 ACL(访问控制列表),它从 /etc/squid/whitelist 文件中加载允许的域名。然后,我们允许匹配这些域名的请求。

    • 拒绝所有其他访问

      http_access deny all

      该规则确保只有白名单中的域名可以访问代理,其他所有请求都将被拒绝。

  3. 配置端口和缓存

    你可以在 squid.conf 文件中设置 Squid 的监听端口并配置缓存目录(如有需要)。例如:

    http_port 3128
    coredump_dir /var/spool/squid
❤️喜欢