在 Oracle Cloud (OCI) 的 网络安全组 (NSG) 层面,本身是不提供实时仪表盘或图形化监控界面的(NSG 仅作为虚拟防火墙)。要实现“流量监控”,最简单且专业的方法是开启 VCN 流日志 (VCN Flow Logs)。
通过流日志,你可以清晰地看到哪些 IP 正在访问你的 Mailcow(比如 80、25 端口),以及这些请求是被 Accept(允许) 还是 Reject(拒绝) 了。
第一步:创建日志组 (Log Group)
在开启监控前,需要一个“桶”来存放日志。
- 登录 OCI 控制台,点击左上角菜单 $\rightarrow$ 观察与管理 (Observability & Management) $\rightarrow$ 日志记录 (Logging)。
- 点击 日志组 (Log Groups) $\rightarrow$ 创建日志组。
- 命名为
NSG_Monitor_Group。
第二步:开启流日志 (Enable Flow Logs)
- 返回 日志 (Logs) 页面,点击 启用资源日志 (Enable resource log)。
- 资源服务:选择
Network (Virtual Cloud Network)。 - 资源:选择你的 VCN。
- 日志类别:选择
Flow Logs (All Records)。 - 配置日志:
- 选择刚才创建的 日志组。
- 日志名称:命名为
Mailcow_Traffic_Log。 - 日志保留期:默认 1 个月即可。
第三步:在日志中筛选监控流量
开启后大约需要 5-10 分钟才会产生数据。
- 进入刚才创建的
Mailcow_Traffic_Log。 - 你会看到一个类似控制台的界面。点击 在日志搜索中查看 (Explore with Log Search)。
- 简单监控技巧:
- 监控攻击/扫描:搜索
data.action = 'REJECT',你会看到哪些 IP 因为没过 NSG 规则被拦下了。 - 监控正常连接:搜索
data.destPort = '25',查看谁在给你的邮件服务器发信。
- 监控攻击/扫描:搜索
第四步:进阶监控(可选:简单的可视化)
如果你觉得看纯文本日志太累,可以利用 OCI 的 日志仪表盘:
- 在日志页面点击 仪表板 (Dashboards)。
- 创建一个新仪表板,添加一个 “计数图表”。
- 这里的查询语句可以设置为:
search "你的比较符" | summarize count() by data.action这样你就能一眼看到过去一小时内,你的 NSG 拦截了多少次潜在攻击。
为什么在 NSG 层面监控很重要?
- 排查配置错误:如果你配置了
_imap._tcp但仍然连不上,流日志会告诉你流量是否卡在了入口(REJECT)。 - 安全审计:Mailcow 暴露了 25/465/587 等端口,你会在这里看到大量来自全球的扫描 IP。
- 性能零损耗:流日志是在网络架构层捕获的,完全不占用你 Oracle 实例(CPU/内存)的资源。
小提示:
既然你之前遇到了 HTTP Validation Failed 的问题,开启流日志后,你可以专门搜索 data.destPort = '80'。
- 如果看到大量
REJECT,说明你的 NSG 规则没开全。 - 如果看到
ACCEPT但页面还是白屏,说明流量已经进了 VPS,问题确实出在 Caddy 或 Docker 内部。