直接在安全列表的入站规则里把源 CIDR 改成特定 IP 段,删掉允许所有的规则,适合子网级别的访问控制。
先说结论:甲骨文云的安全列表是白名单机制,要限制特定 IP,关键是移除默认的通用允许规则,只保留可信源。
- 先判断:确认实例是否同时绑定了网络安全组(NSG),两者规则会叠加生效。
- 优先做:在控制台找到对应子网的安全列表,编辑入站规则,缩小源 CIDR 范围。
- 再验证:修改后立即从受限 IP 测试端口连通性,防止误操作导致无法远程。
快速处理思路
由于每条安全规则都依赖具体的资源 OCID,不适合直接复制命令,建议按以下路径在控制台操作:
登录控制台 > Networking > Virtual Cloud Networks > 点击你的 VCN > Security Lists > 点击列表名称 > Edit Ingress Rules在编辑页面删除源为 0.0.0.0/0 的规则,新增源为你的特定 IP(如 1.2.3.4/32)。
为什么会这样
甲骨文云的安全列表(Security Lists) acting 在子网层级,默认行为是“未明确允许即拒绝”,但官方提供的默认安全列表往往包含允许所有流量(0.0.0.0/0)的规则以便新手上手。
安全列表是无状态的,这意味着入站和出站规则需要分别配置。更重要的是,如果实例的 VNIC 还绑定了网络安全组(NSG),最终生效的规则是安全列表和 NSG 的并集。也就是说,只要其中任何一方允许了流量,访问就会通过。因此只改安全列表而忽略 NSG,可能导致限制失效。
分步处理
1. 备份现有规则
在编辑前,截图或复制当前的规则列表。如果操作失误导致断连,这是恢复的唯一依据。
2. 定位安全列表
进入 VCN 详情页,查看子网(Subnet)关联的是哪个安全列表。注意,一个子网只能关联一个安全列表,但一个安全列表可被多个子网共用,修改会影响所有关联子网。
3. 编辑入站规则
点击“编辑入站规则”(Edit Ingress Rules)。找到源 CIDR 为 0.0.0.0/0 的行,点击删除。添加新规则,协议选 TCP,源类型选 CIDR,源 CIDR 填写你的特定 IP 地址(末尾加/32 表示单个 IP),目标端口范围填写具体端口(如 22 或 80)。
4. 检查 NSG 规则
在实例详情页查看是否绑定了网络安全组。如果有,进入网络安全组页面,重复上述步骤,确保 NSG 里也没有放开 0.0.0.0/0。
怎么验证是否生效
1. 允许侧测试
在白名单内的 IP 机器上,使用 telnet 或 nc 命令测试端口:
telnet 你的实例公网 IP 22如果显示 Connected 或打开,说明允许规则生效。2. 拒绝侧测试
换一个不在白名单的网络环境(如切换手机热点),尝试 SSH 连接或访问 Web 服务。如果连接超时或被拒绝,说明限制成功。
3. 查看流日志
如果开启了 VCN 流日志(Flow Logs),可以在日志中查看被拒绝的流量记录,确认源 IP 是否被拦截。
常见坑
1. 把自己锁在门外
这是最高频事故。修改 SSH 端口规则时,务必先确认当前连接会话未断开,或者保留一个临时的宽限规则,验证新规则生效后再删除。
2. 忽略 NSG 叠加
很多用户只改了安全列表,但实例上还挂着 NSG,且 NSG 里保留了允许所有的规则。因为规则是并集,流量依然能通。必须两边都检查。
3. 无状态特性
安全列表是无状态的。如果你限制了入站,记得检查出站规则是否允许响应流量返回。通常默认出站是允许的,但如果自定义过,需确保出站规则允许相关端口。
4. 共用列表风险
修改前确认该安全列表是否被其他子网共用。如果是公共列表,修改会影响其他业务实例,建议克隆一个新的安全列表专门给需要限制的子网使用。
参考来源
- Oracle Cloud Infrastructure Documentation, "Security Lists", https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/securitylists.htm
- Oracle Cloud Infrastructure Documentation, "Security Rules Overview", https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/securityrules.htm