为你的 IP 打开 Civo 防火墙,再关回去。
手动流程、它留下的动态 IP 隐患,以及一条免费的菜单栏路径:到点自动关掉规则。
你现在坐在这里,需要连上一台 Civo 实例或者某个集群的 API。答案就是一条防火墙规则:查到自己的公网 IPv4,把 CIDR 写成 /32,只放行这一个地址上的那个端口。前半截 Civo 做得很省事,后半截却很危险,因为手动加的规则会一直留在那儿,直到有人去删。这页先把手动流程完整写一遍,再讲几乎没人处理的那部分:关回去。
同一条规则,从菜单栏打开
-
01
告诉应用你要管哪些防火墙
首次启动时菜单栏盾牌会跑一遍初始设置:填 Civo API key,它会进 macOS Keychain;选区域;勾出你想控制的防火墙。每个勾选的防火墙配一个端口,那个输入框的初始值是 6443。
-
02
让它找出你的公网 IPv4
检测先试
api.ipify.org,再试 ifconfig.me/ip,然后是icanhazip.com,第一个返回有效公网地址的就用它。拿到 IPv6 或者私有地址会直接提示出错,不会写进规则,因为 Civo 的防火墙规则需要 IPv4 CIDR。 -
03
一次点击写入规则
应用在选定端口上创建一条入站规则,CIDR 是检测到的地址加 /32,标签为
civo-cloud-<hostname>-<firewall-name>。Civo 在创建响应里返回确切的规则 ID,所以应用之后从不需要猜哪条规则是自己的。 -
04
决定它开多久
定时访问提供 15 分钟、30 分钟、一小时和两小时。还有一个 Unlimited,它只打开规则,完全不安排关闭,所以只在你打算自己去关的时候选它。
-
05
截止时间写在磁盘上
每个关闭任务都带着防火墙 ID、规则 ID、区域和截止时间,原子地写进应用 Application Support 目录下的
firewall-closures.json。退出应用,截止时间还在:下次启动时,已经到期的任务会被关掉,弹窗都不用打开。老实说清楚它的边界:应用必须在运行、并且能连上 Civo,才能删掉一条规则。退出或者休眠并不会在服务端安排一次删除。 -
06
把地址存成带名字的预设
把当前 IP 存成 Home 或者 Office 这样的名字,以后直接用这个预设开防火墙,不用重新检测。人在外面、却想给固定的办公室地址开访问时很好用。
新建的 Civo 防火墙到底是什么行为
Civo 的 API 文档写得很明白:创建规则时没有 allow 或 deny 可选,因为新防火墙的默认行为就是全部拒绝,你只打开需要的端口。所以你自己创建的防火墙一开始是关着的,加的每一条规则都是放行规则。坑在另一边。每个区域都自带一个名字就叫 Default (all open) 的防火墙,Civo 自己的文档也说它所有端口都是开的,并建议你改掉它。所以那个被反复问到的问题,正确答案是:你自己的防火墙默认拒绝,区域自带的 Default 防火墙不是。
完整的手动流程
第一步,拿到公网 IPv4:curl -s https://api.ipify.org。第二步,加规则。用 Civo CLI 就是 civo firewall rule create <firewall_id> --protocol=TCP --startport=6443 --endport=6443 --cidr=203.0.113.42/32 --direction=ingress --label='laptop'。第三步,也是最容易被跳过的一步:把返回的规则 ID 记下来,方便事后删除。注意默认值:不写 --cidr,CLI 会用 0.0.0.0/0,那等于把端口开给整个互联网,而不是开给你。控制台那条路形状一样:Actions,然后 Rules,接着填单个端口或者端口范围、协议、方向和 CIDR。
规则比你加它的理由活得久
Civo 的防火墙规则没有过期时间。它会一直在,直到有人或者某个 API 调用把它删掉。在固定地址的商用线路上,这顶多算不整洁。在家庭宽带上,这是实打实的暴露,因为多数家用 ISP 会在重连或者每晚续租时换掉地址。你放行的那个 /32 随后被交给别人家的路由器,于是你的规则正在放一个陌生人进 6443,而你自己被挡在外面,正在写第二条规则。每一条手写规则都是一小笔债,只有你记得去删的时候才算还上。
为什么应用永远删不掉你自己写的规则
归属是由标签决定的,不是端口,也不是地址。应用只创建标签为 civo-cloud-<hostname>-<firewall-name> 的规则,为 Kubernetes API 连接打开的规则则换成 k8s-api 后缀。批量 Close All 会列出每个受管防火墙上的规则,只删掉标签以本机那个前缀开头的。手写的生产规则没有这种标签,所以永远不会成为候选。有一点值得说明:状态查询失败在菜单栏里同样会显示成已关闭或未知,所以界面上的显示不能当作服务端已关闭的证据。事关重大时,去 Civo 控制台确认。
6443 这个端口为什么总是出现
6443 是 Kubernetes API server 的端口。Civo 的 k3s 集群把 endpoint 公布成 https://<master-ip>:6443,kubectl、kubeconfig 和任何 Kubernetes 客户端连的都是它。如果集群防火墙不放行来自你地址的 6443,每条命令都会超时,这也是这个数字在 Civo 防火墙搜索里占据主导的原因。在应用里,6443 是初始设置时的默认端口,连接集群时会检查 API 访问,缺规则就替你打开。那条 Kubernetes 路径把自己的规则记在内存里,断开连接时清理掉,它不继承菜单栏定时队列的持久化和重试行为。
大家真正会问的问题
- 怎么只为自己的 IP 打开 Civo 防火墙?
- 先用 curl
-shttps://api.ipify.org拿到公网 IPv4,然后在目标防火墙上创建一条入站规则,把这个地址写成 /32 的 CIDR。用 Civo CLI 是:civo firewall rule create<firewall_id>--protocol=TCP--startport=6443--endport=6443--cidr=203.0.113.42/32--direction=ingress。API 里没有 allow 或 deny 的选项,因为你创建的防火墙在你打开端口之前是全部拒绝的。把返回的规则 ID 留着,方便之后删掉这条规则。 - Civo 防火墙规则里的 /32 是什么意思?
- 在 CIDR 记法里,斜杠后面的数字表示地址有多少个高位是固定的。IPv4 地址是 32 位,所以 /32 把所有位都固定住,规则只匹配一个地址。203.0.113.42/32 就是这台主机,别的都不算。对比一下,/24 会覆盖 256 个地址,0.0.0.0/0 覆盖整个互联网,而创建规则时不写 CIDR,Civo 用的就是后者。
- 如果我的 IP 地址变了会怎样?
- 规则不会跟着你变。它继续放行那个旧地址,于是你失去访问,只能再加一条规则,而 ISP 接下来把那个地址分给谁,谁就继承了你开的口子。家庭宽带上这是常态,地址通常在重连或者每晚续租时轮换。解法不是找一个更好的 IP,而是一条会自己关掉的规则:只在固定的时间窗内开着端口,到点由截止时间把它删掉。
- CivoCloudManager 会动我已有的防火墙规则吗?
- 不会。它只删自己创建的规则,靠标签
civo-cloud-<hostname>-<firewall-name>识别,Kubernetes API 访问用的是 k8s-api 后缀。批量 Close All 在删任何东西之前,都会先按这个前缀过滤每个受管防火墙的规则列表,所以你在 Civo 控制台、CLI 或者 Terraform 里手写的规则没有匹配的标签,永远不会被删。 - 退出应用之后自动关闭定时器还在吗?
- 截止时间还在。每个任务都把防火墙 ID、规则 ID、区域和关闭时间原子写入 Application Support 下的一个 JSON 文件,已经到期的任务会在下次启动时关掉。不存在的是无人值守的关闭:删除是从你 Mac 发出的一次 API 调用,所以应用必须在运行、并且能连上 Civo。退出或者睡过了截止时间,只会把关闭推迟到你再次启动应用,服务端那边什么都没安排。
指南
一步一步,以及诚实的对比。
- 01 连接 Civo API Key 在 Civo 控制台生成密钥,粘贴一次,之后交给 macOS Keychain 保管。
- 02 对比 Lens、OpenLens 和 k9s 三个与集群无关的工具,一个只认 Civo 的。差别决定了你想开着哪一个。
- 03 通过 S3 使用 Civo Object Storage 区域 endpoint,s3cmd、rclone 和 AWS CLI 的可用配置,以及原生客户端有什么不一样。
- 04 Mac 上的 Civo DNS 把域名指向 Civo 的 nameserver,之后把这个 zone 放在原生应用里管,而不是一个浏览器标签页。
- 05 更新日志 每一个已发布的版本,最新的在前,附带商店更新说明装不下的细节。
深入了解
按 Civo 产品拆开细说。
CivoCloudManager 覆盖的每个 Civo 领域都有单独一页,讲清细节、取舍和架构。挑一个离你日常最近的。
防火墙控制就是免费档。
七天完整功能试用结束之后,菜单栏为当前 IP 的开关、带名字的预设和自动关闭截止时间依然免费,所以这页讲的事,照做不花钱。