---
title: Kubernetes出口治理与Egress策略(NetworkPolicy/DNS白名单)最佳实践
keywords:
- Egress
- NetworkPolicy
- DNS白名单
- 出口治理
- CIDR
description: 通过Kubernetes Egress策略与DNS白名单统一治理出站流量,阻断对非受控目的地的访问并提升可审计性。
categories:
- 文章资讯
- 技术教程
---
背景与价值
云原生环境需严格出口治理。Egress策略结合DNS白名单可控制出站流量并减少风险。
统一规范
- Egress白名单:仅允许受控CIDR与端口。
- DNS白名单:解析目标域仅限批准列表。
- 审计:记录策略命中与拒绝事件。
核心实现
CIDR与端口策略占位
type Rule = { cidr: string; ports: number[] }
const rules: Rule[] = [{ cidr: '203.0.113.0/24', ports: [443, 53] }]
function ipv4ToInt(ip: string): number { const m = ip.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/); if (!m) return -1; const n = m.slice(1).map(Number); for (const x of n) if (x<0||x>255) return -1; return ((n[0]<<24)>>>0)+(n[1]<<16)+(n[2]<<8)+n[3] }
function inCidr(ip: string, cidr: string): boolean { const [b,p] = cidr.split('/'); const base = ipv4ToInt(b); const mask = (~0 << (32-Number(p)))>>>0; const v = ipv4ToInt(ip); if (base<0||v<0) return false; return (v & mask) === (base & mask) }
function allowed(ip: string, port: number): boolean { return rules.some(r => inCidr(ip, r.cidr) && r.ports.includes(port)) }
DNS白名单
const allowDomains = new Set(['api.example.com','metrics.example.com'])
function domainAllowed(d: string): boolean { return allowDomains.has(d) }
落地建议
- 为命名空间与应用制定Egress白名单策略并限制端口与CIDR。
- 使用DNS白名单控制解析结果与访问通道,统一审计拒绝请求。
验证清单
- 出站目标是否命中CIDR与端口白名单;域名是否在DNS白名单中。

发表评论 取消回复