OpenShift CoreDNS是否可被平台外其他VM访问并设为首选DNS服务器?
OpenShift CoreDNS 外部访问场景答疑
总体可行性判定
两个咨询需求不存在架构层面的硬性阻断,均可通过配置调整实现,仅需要结合平台默认安全策略做针对性的规则放开。
OpenShift平台的CoreDNS能否被平台外其他VM访问
- 默认部署状态下,OpenShift通过
openshift-dns命名空间下的Operator管理CoreDNS实例,该实例的Service默认是ClusterIP类型,仅集群内部可通过Service网络IP访问,53端口的查询请求仅对集群内节点、Pod开放。平台外VM直接发起的DNS查询,会被节点主机防火墙、集群网络策略阻断,无法直接连通。 - 要实现外部访问仅需要两项调整:
- 将CoreDNS对应的Service从默认ClusterIP类型,修改为NodePort或LoadBalancer类型,获取可从平台外访问的固定入口地址
- 放开集群节点、集群入口负载均衡上对应DNS端口(
53/udp、53/tcp)的网络访问规则,允许平台外VM的流量到达CoreDNS服务
- CoreDNS本身是标准DNS服务实现,无协议层面的访问限制,只要网络连通就可以响应外部客户端的查询请求。需要注意的是,默认配置下CoreDNS仅配置了集群内部域的解析逻辑,不会响应非集群域的查询请求。
能否让集群外VM将该CoreDNS设置为首选DNS服务器
- 技术层面完全可行:只要完成上述网络连通性调整,在外部VM的
/etc/resolv.conf配置文件中,将CoreDNS的访问地址写入nameserver条目并置于第一位,即可实现该CoreDNS作为VM首选DNS的配置。 - 两个必须提前明确的实际坑点:
- 默认配置下CoreDNS没有配置公共域名/企业内部域名的转发链路,如果直接作为VM全局首选DNS,VM查询所有非集群域的请求都会返回NXDOMAIN解析失败,需要手动在CoreDNS对应的ConfigMap的
Corefile配置中补充上游DNS的转发规则,才能满足常规上网、内网系统访问的解析需求 - 生产场景不推荐做这种全局首选DNS配置:OpenShift的dns-Operator会周期性对CoreDNS的配置做 reconcile 校验,手动直接修改
Corefile添加的自定义转发规则,很可能会在集群升级、组件重启时被官方默认配置覆盖,带来不可预期的维护风险。结合你当前通过ExternalName+CNAME实现服务外部可达的场景,更稳妥的配置方式是在VM原有DNS配置基础上,单独添加仅指向OpenShift集群域的转发规则,既可以正常解析集群内的ExternalName服务,也不会破坏原有VM的解析逻辑,同时避免了CoreDNS配置被覆盖的风险。
- 默认配置下CoreDNS没有配置公共域名/企业内部域名的转发链路,如果直接作为VM全局首选DNS,VM查询所有非集群域的请求都会返回NXDOMAIN解析失败,需要手动在CoreDNS对应的ConfigMap的
补充提示:如果要实现ExternalName服务的对外CNAME解析能力,更符合OpenShift生产最佳实践的方式是在企业原有内部DNS上配置对应域名的转发规则,而非直接将集群内置CoreDNS暴露给外部网络,能大幅降低平台组件被外部恶意枚举、查询攻击的风险。
内容的提问来源于stack exchange,提问作者drawnup
相关产品推荐
相关产品推荐

