多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

腾讯轻量云主机应用模板装完OpenClaw,IPv6开启方案一次跑通

腾讯轻量云主机应用模板装完OpenClaw,IPv6开启方案一次跑通 1. 腾讯轻量云主机 OpenClaw 应用模板装完后 IPv6 不通的排查思路腾讯轻量云主机上装 OpenClaw最省事的路径就是直接在购买页选「应用模板」系统会自动把 OpenClaw 的运行环境、依赖、默认配置都铺好开机后进控制台填一下接入渠道和模型配置就能跑。但很多人装完会发现一个尴尬的问题应用模板装出来的系统控制台里那个「IPv6」开关是灰的点不动或者干脆没有这个入口。这就是本文要解决的核心问题——腾讯轻量云主机应用模板安装 OpenClaw 后怎么把 IPv6 真正开起来并且重启后依然可用。先说清楚 IPv6 对 OpenClaw 到底有什么用。OpenClaw 本身是一个自托管的 AI 助手网关你接入模型之后通常要通过 HTTP 或者 WebSocket 从外部访问它。如果只开 IPv4 公网端口暴露在扫描器面前被撞的概率不低。IPv6 地址空间极大随机扫到一个特定地址的成本高得多相当于给服务加了一层「隐身上限」。另外如果你想让 OpenClaw 接 Telegram 之类的境外渠道IPv6 出口往往比 IPv4 更顺。所以给 OpenClaw 配 IPv6不是折腾是实打实的安全和可用性收益。问题在于应用模板为了开箱即用把系统做了一定程度的封装网络配置这块不像纯 Debian 镜像那样干净。你直接ip -6 addr大概率只能看到::1这个回环地址网卡上没有全局 IPv6。这时候别急着骂模板先按下面的顺序排查第一确认云控制台侧有没有给实例分配 IPv6 地址第二确认系统内核有没有禁用 IPv6第三确认网卡有没有通过 DHCPv6 或静态方式拿到地址和默认网关。这三步里任何一步断了IPv6 都不通。我试过在应用模板系统里直接改/etc/network/interfaces结果重启后被模板的初始化脚本覆盖了白改。所以正确做法是分两层云控制台层负责「分配地址」系统层负责「让网卡接受并保持这个地址」。下面从 TaoToken 的前置准备讲起再给可复制的配置最后用curl -6和ping6验证。2. TaoToken 前置准备给 OpenClaw 配好模型接入OpenClaw 装完只是空壳它需要接一个大模型才能干活。这里用 TaoToken 来做模型接入层它的 API 兼容 OpenAI 格式OpenClaw 里填 Base URL 和 Key 就能用。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 注意 API 这个地址后面不加任何参数。你需要先拿到 API Key。进控制台创建 Key 的页面在 https://taotoken.net/console/api-keys 登录后新建一个 Key复制出来存好后面填进 OpenClaw 的配置里。如果你还没想好接哪个模型可以先去模型对话页面 https://taotoken.net/models 看看当前可用的模型列表选一个适合日常对话或编码的。对于长期跑 OpenClaw 做 Agent 或者编码辅助的场景Coding Plan 会更划算入口在 https://taotoken.net/coding-plan 。OpenClaw 的模型配置一般在这几个地方如果你是通过应用模板装的控制台里会有「模型配置」或者「接入渠道」的入口把 Base URL 填https://taotoken.net/apiKey 填你刚创建的Model ID 填你选的模型名。如果你打算用 Claude Code 那套 Anthropic 协议接入TaoToken 也提供了对应的端点文档在 https://taotoken.net/doc 里面有 ClaudeCodeAnthropic 的接入说明。这里要提醒一句OpenClaw 的配置里 Base URL 和 Model ID 必须成对匹配。你填了 OpenAI 格式的 Base URLModel ID 就要用 OpenAI 风格的模型名填了 Anthropic 格式的端点Model ID 也要对应。填错最常见的报错就是 401 或者reading choices之类的解析错误后面排障章节会细说。把模型接通之后OpenClaw 就能正常回消息了。这时候再回头处理 IPv6因为 IPv6 是网络层的事跟模型接入互不干扰但建议先把模型跑通确认 OpenClaw 本体没问题再动网络免得两个问题混在一起分不清是谁的锅。3. 可复制的网卡与内核参数配置这一节是重点给你可以直接复制粘贴的配置。前提是云控制台已经给实例分配了 IPv6 地址下一节讲控制台操作系统侧我们分三步开内核 IPv6、配网卡 DHCPv6、设默认网关。先看内核参数。Debian 默认是开 IPv6 的但有些应用模板为了「精简」会把 IPv6 关掉。检查命令cat /proc/sys/net/ipv6/conf/all/disable_ipv6返回0表示 IPv6 已启用返回1表示被禁用了。如果是1临时开启sudo sysctl -w net.ipv6.conf.all.disable_ipv60 sudo sysctl -w net.ipv6.conf.default.disable_ipv60永久生效要写进配置文件。创建/etc/sysctl.d/99-ipv6.confnet.ipv6.conf.all.disable_ipv6 0 net.ipv6.conf.default.disable_ipv6 0 net.ipv6.conf.all.accept_ra 2 net.ipv6.conf.default.accept_ra 2 net.ipv6.conf.all.forwarding 0accept_ra 2这个值很关键它表示「即使开启了转发也接受路由通告」很多云环境需要这个才能拿到默认网关。写完执行sudo sysctl -p /etc/sysctl.d/99-ipv6.conf接下来配网卡。先确认网卡名ip link show腾讯轻量云主机通常是eth0但也可能是ens3或enp0s3以实际为准。假设是eth0用 nmcli 配置 DHCPv6 自动获取地址并指定默认网关。这里网关地址用链路本地地址fe80::feee:ffff:feff:ffff这是腾讯云环境常见的 IPv6 网关sudo nmcli connection modify eth0 ipv6.method auto sudo nmcli connection modify eth0 ipv6.addr-gen-mode eui64 sudo nmcli connection modify eth0 ipv6.gateway fe80::feee:ffff:feff:ffff sudo nmcli connection up eth0如果你不用 NetworkManager而是传统的 ifupdown那就编辑/etc/network/interfaces在对应网卡段落里加iface eth0 inet6 dhcp accept_ra 2 autoconf 1然后sudo ifdown eth0 sudo ifup eth0。但前面说过应用模板可能会覆盖这个文件所以更稳的是用 nmcli它写的是 NetworkManager 的 connection 配置模板一般不动这块。配置完检查地址ip -6 addr show dev eth0你应该能看到一个inet6 2402:.../128或者/64的全局地址以及一个fe80::开头的链路本地地址。再看路由ip -6 route show默认路由应该指向fe80::feee:ffff:feff:ffff。如果这两条都对了IPv6 基本就通了。4. 云控制台 IPv6 放行与验证请求系统侧配好之前得先在腾讯轻量云控制台把 IPv6 分配出来。应用模板系统之所以控制台开关是灰的是因为模板镜像的网络配置被锁定了。解决办法是先备份 OpenClaw 的数据然后重装系统为「基于操作系统镜像」的纯 Debian在控制台申请 IPv6拿到地址后再恢复 OpenClaw 模板系统。听起来绕但这是目前最稳的路径。具体操作进轻量云控制台找到你的实例先做快照备份。然后重装系统镜像选 Debian 12或你喜欢的版本不要选应用模板。装好后进实例详情找到「IPv6」相关的设置点击申请系统会分配一个 IPv6 地址段给你。这时候控制台的 IPv6 开关就能正常操作了。确认分配成功后再把系统恢复成 OpenClaw 应用模板用之前的快照或者重新选模板恢复后 IPv6 的分配信息还在系统侧按上一节的配置接上即可。控制台侧还要注意防火墙。轻量云主机的防火墙规则里IPv6 和 IPv4 是分开的。你要在防火墙页面确认入站规则对 IPv6 也放行了 OpenClaw 用的端口比如 8080 或者你自定义的端口。如果只放行了 IPv4IPv6 请求会被挡在门外。验证连通性用两个命令。先 ping 网关ping6 -c 4 fe80::feee:ffff:feff:ffff能通说明链路层没问题。再 ping 一个公网 IPv6 地址比如ping6 -c 4 2400:3200::1这是阿里公共 DNS 的 IPv6 地址能通说明出口正常。最后用 curl 测 HTTPcurl -6 -I https://taotoken.net/api-6强制走 IPv6如果返回 HTTP 状态码比如 200 或 401说明 IPv6 下的 HTTPS 请求完全通了。你也可以用curl -6 https://ifconfig.co看自己的出口 IPv6 地址确认不是走的 IPv4。如果ping6通但curl -6不通多半是 DNS 解析问题。检查/etc/resolv.conf里有没有 IPv6 的 DNS 服务器或者临时用curl -6 --resolve指定 IP 测试。DNS 这块建议加一个 IPv6 DNS比如2400:3200::1写进/etc/resolv.conf或者 NetworkManager 的 DNS 配置里。5. 本篇常见错排查401、local proxy failed、reading choices配 IPv6 和接模型的过程中几个报错特别常见这里对照着说。401 Unauthorized这个基本是 TaoToken 的 Key 没填对或者 Base URL 填成了带路径的地址。记住 API 地址是https://taotoken.net/api不要在后面加/v1或者/chat/completionsOpenClaw 会自己拼。Key 复制的时候注意别带空格重新去 https://taotoken.net/console/api-keys 生成一个再试。local proxy failed这个报错通常出现在 OpenClaw 尝试通过本地代理访问外部时。如果你系统里设了http_proxy或https_proxy环境变量而代理又不支持 IPv6就会失败。检查env | grep -i proxy有的话 unset 掉或者确保代理支持 IPv6。另外 OpenClaw 的配置里如果有 proxy 相关字段确认没填错。reading choices 报错这是典型的响应格式不匹配。你用的 Base URL 是 OpenAI 格式但 Model ID 填了 Anthropic 的模型名或者反过来。OpenClaw 拿到响应后去解析choices字段结果响应里是content数组就报这个错。解决办法是 Base URL、Model ID、协议三者对齐。用 TaoToken 的话OpenAI 格式统一走https://taotoken.net/apiModel ID 用文档里列出的名称。OAuth 相关报错如果你接的是 Claude Code 那套 Anthropic 协议可能会遇到 OAuth token 的问题。TaoToken 的 ClaudeCodeAnthropic 接入方式在 https://taotoken.net/doc 里有说明按文档配置 Base URL 和 Key不要混用 OAuth 流程。IPv6 重启后丢失这是最烦的。原因是应用模板的初始化脚本在开机时重置了网络配置。解决办法是把你的 nmcli 配置写成一个 systemd service在 network 之后执行。创建/etc/systemd/system/ipv6-fix.service[Unit] DescriptionEnsure IPv6 gateway and DHCPv6 AfterNetworkManager.service WantsNetworkManager.service [Service] Typeoneshot ExecStart/usr/bin/nmcli connection modify eth0 ipv6.gateway fe80::feee:ffff:feff:ffff ExecStart/usr/bin/nmcli connection up eth0 RemainAfterExityes [Install] WantedBymulti-user.target然后sudo systemctl enable ipv6-fix.service。这样每次重启都会重新应用一遍不怕模板覆盖。6. 让 OpenClaw 在 IPv6 下稳定跑起来把上面这些串起来你的腾讯轻量云主机 OpenClaw 就具备了公网 IPv6 访问能力。回顾一下关键动作控制台申请 IPv6 并放行防火墙系统侧开内核参数、配 nmcli 的 DHCPv6 和网关、用 systemd 保活最后用ping6和curl -6验证。模型接入这块Base URL 用https://taotoken.net/apiKey 从 https://taotoken.net/console/api-keys 拿模型列表在 https://taotoken.net/models 看长期编码场景可以考虑 https://taotoken.net/coding-plan 。一个实用技巧如果你不想每次手动检查 IPv6可以写个 cron 任务每 10 分钟跑一次ip -6 addr show dev eth0 | grep inet6发现没有全局地址就重启 network。命令类似*/10 * * * * /usr/bin/nmcli connection up eth0 /dev/null 21这样即使模板偶尔抽风也能自动恢复。IPv6 这东西配一次麻烦配好之后确实省心尤其是你想让 OpenClaw 长期在后台跑、又不想天天盯着端口安全的时候。
返回列表