最近 OpenClaw(曾用名 Clawdbot,Moltbot)这个开源项目爆火。如果说 ChatGPT 的出现实现了知识能力平权,那 OpenClaw 就使每个人都拥有了一样的动手能力——它可以通过命令行/脚本帮你操作一台电脑,浏览器任务,甚至很多运行在本地的软件(脚本操作为主,等效UI操作)。这篇文章不讨论它的实现原理或应用能力,而是分享一个在国内网络环境安装完 OpenClaw 后,很可能会碰到的“OpenClaw 无法正常访问所有网络服务”问题的解决办法。
因为 OpenClaw 是一个基于 Node.js 运行时 + 常驻后台进程的程序,所以你不一定非要买一个 Mac mini 来运行它,只要是隔离的系统环境(安全考虑起见),Windows/macOS/Linux,甚至手机上都可以运行。下文内容中的命令行针对 Ubuntu 系统,你可以让 AI 转换成其他操作系统的等效操作。
- 我的 OpenClaw 安装在 Ubuntu 24.04 的 Linux 系统里(N100 CPU 小主机 ESXi 分配的一个虚拟机),16GB 内存 + 100GB 硬盘。
- 建议模型使用国外大厂的在线模型,避免模型的思考能力成为瓶颈。
总体流程如下:
- 配置好本地可以自由访问网络的 HTTP 代理。
- 配置系统级 HTTP/HTTPS 代理。
1. 配置本地可以自由访问网络的 HTTP 代理
声明:请在遵守法律法规与单位网络策略的前提下使用。
因为要让 OpenClaw 和后续系统命令行,其他应用顺利访问所有网络,首先你需要准备一个本地 HTTP 代理(包括 OpenClaw 本身,很多软件无法直接使用 SOCKS5 代理)。这里推荐目前比较健壮的自建代理方式: Xray 软件,以 VLESS + Reality + Vision 方式搭建一个可自由访问网络的服务器端代理,具体过程略去。之后在 OpenClaw 的运行主机上,用 Xray 软件当作客户端,通过设置 config.json 配置文件,在本地同时启动 SOCKS5 以及 HTTP 代理,端口分别是 10808 和 10809。
验证本地 HTTP 代理是否可用:运行以下命令,返回你的公网 IP 地址说明成功。
curl -x http://127.0.0.1:10809 https://httpbin.org/ip
2. 配置系统级 HTTP/HTTPS 代理
给 OpenClaw 的运行主机配置系统级的 HTTP/HTTPS 代理,请按以下步骤操作。
让终端命令默认走代理
配置 /etc/environment 系统级环境变量:
sudo cp /etc/environment /etc/environment.bak.$(date +%F_%H%M%S)
sudo vim /etc/environment
写入下面内容(建议整段覆盖):
ALL_PROXY=http://127.0.0.1:10809
all_proxy=http://127.0.0.1:10809
HTTP_PROXY=http://127.0.0.1:10809
http_proxy=http://127.0.0.1:10809
HTTPS_PROXY=http://127.0.0.1:10809
https_proxy=http://127.0.0.1:10809
NO_PROXY=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.local,.lan
no_proxy=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.local,.lan
让当前 shell 立刻生效:
set -a
. /etc/environment
set +a
env | grep -i proxy
验证系统命令行(已经使用全局代理)可以访问到 Google:有返回内容说明成功。
curl -I -L --connect-timeout 5 --max-time 10 https://www.google.com
让 systemd 系统服务继承代理环境变量
配置 system manager。创建 drop-in 文件:
sudo mkdir -p /etc/systemd/system.conf.d
sudo vim /etc/systemd/system.conf.d/10-proxy.conf
写入以下内容:
[Manager]
DefaultEnvironment="ALL_PROXY=http://127.0.0.1:10809" "all_proxy=http://127.0.0.1:10809" "HTTP_PROXY=http://127.0.0.1:10809" "http_proxy=http://127.0.0.1:10809" "HTTPS_PROXY=http://127.0.0.1:10809" "https_proxy=http://127.0.0.1:10809" "NO_PROXY=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.local,.lan" "no_proxy=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.local,.lan"
systemd 重新执行自身加载配置:
sudo systemctl daemon-reexec
让 systemd –user 用户服务继承代理环境变量
因为 OpenClaw 的 gateway 常驻进程是以 user 服务的方式运行,所以还需要让用户服务 systemctl --user 也能使用代理。
创建用户环境文件:
mkdir -p ~/.config/environment.d
vim ~/.config/environment.d/10-proxy.conf
写入以下内容:
ALL_PROXY=http://127.0.0.1:10809
all_proxy=http://127.0.0.1:10809
HTTP_PROXY=http://127.0.0.1:10809
http_proxy=http://127.0.0.1:10809
HTTPS_PROXY=http://127.0.0.1:10809
https_proxy=http://127.0.0.1:10809
NO_PROXY=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.local,.lan
no_proxy=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.local,.lan
让 user systemd 重新加载:
systemctl --user daemon-reexec
验证 user systemd 环境里确实有代理:
systemctl --user show-environment | grep -i proxy
最后确认 OpenClaw 通过 HTTP 代理访问外网成功:
systemctl --user restart openclaw-gateway.service
openclaw status
这样配置后,运行 OpenClaw 的主机就可以自由访问所有网络服务了。
写在最后
上面的具体配置过程主要是 AI 生成的,我只是做了整理和验证。写在这里的目的除了自己学习,更重要的是你可以把这些内容丢给 OpenClaw,它自己就可以完成所有配置 :)
