当前位置:首页 > 百科

域名解析要用内网还是外网

```html 域名解析要用内网还是域名用内外网?

域名解析要用内网还是外网?

上周帮朋友处理一个线上故障,事情很小但特别典型。解析他们公司内部有个后台管理系统,网还外网域名是域名用内 admin.xxx.com,平时大家在公司办公网络里访问一直正常。解析结果有几个同事居家办公,网还外网连上 VPN 之后,域名用内这个域名死活打不开,解析浏览器转圈转到超时。网还外网我远程连上去看一眼 DNS 配置就发现问题了:这个域名在内网 DNS 里被解析成了一个 192.168 开头的域名用内私网地址。人不在公司局域网,解析VPN 又没把内网 DNS 的网还外网查询请求带过去,自然就找不到那台服务器。域名用内

这种事太常见了。解析很多团队在搭建内部服务的网还外网时候,习惯性地把域名解析到内网 IP,觉得“反正只有自己人用”。但“自己人”的使用场景其实分好几种:坐在工位上、连 VPN 在家、用手机 4G 看、从云函数里调用、甚至从另一个 VPC 的容器里访问。每种场景走的网络路径都不一样,DNS 解析的结果也应该不一样。

先掰扯清楚一个基本事实:域名解析本身不区分内网还是外网,它只负责把名字翻译成 IP 地址。真正决定用内网 IP 还是外网 IP 的,是你的服务部署在哪里,以及访问者从哪儿来。

一个真实的对比案例:

我见过一家做 SaaS 的公司,他们的 API 网关域名 api.xxx.com 在公网 DNS 里解析到阿里云 SLB 的公网 IP,同时在内网 DNS(他们自建的 BIND)里把同一个域名解析到 SLB 的私网 IP。这样一来,公司内部的服务调用走内网,省流量也更快;外部客户调用走公网,完全无感。两套解析记录,同一个域名,各取所需。

那什么时候该用内网解析?什么时候必须用外网?判断标准只有一个:访问这个域名的人,和服务器之间有没有一条直连的内网路径。 如果有,并且你希望流量不走公网、不花冤枉钱、延迟更低,那就配内网解析。如果没有,或者你根本不确定访问者从哪里来,那就老老实实用外网解析。

很多人踩坑的地方在于“混合环境”。比如你的服务器在腾讯云,但办公网在阿里云,两个 VPC 之间用对等连接打通了。这时候内网 DNS 能不能跨云解析?能,但配置起来麻烦,而且一旦对等连接抖动,解析就会出问题。我个人的经验是:凡是跨云、跨地域、或者涉及移动办公的场景,优先用外网解析,别为了省那点流量费给自己挖坑。内网解析只用在“服务器和客户端在同一个 VPC 或同一个物理局域网”这种确定性极高的场景。

还有一种情况特别隐蔽:你用了云厂商的托管 DNS,比如阿里云的 PrivateZone 或者腾讯云的私有域解析。这些服务默认只对绑定的 VPC 生效,一旦你的 ECS 没绑定那个 VPC,或者你从本地 IDC 通过专线访问,解析结果可能就变成 NXDOMAIN。我遇到过好几次,开发同学在本地电脑上 nslookup 一个内部域名,返回的是公网 IP,但实际服务监听的是内网 IP,连过去就是 connection refused。查了半天才发现是本地 DNS 没指向内网 DNS 服务器。

所以别把“内网解析”当成一个非黑即白的选择。它更像是一个策略:你的域名解析结果,应该和访问者的网络位置匹配。匹配上了,一切顺畅;匹配不上,就是各种超时和报错。具体怎么做?如果你有自建 DNS,可以配 view 视图,根据客户端来源网段返回不同的 A 记录。如果用的是云解析,很多厂商也支持“智能解析”或者“内网解析”功能,但记得把 VPC 和专线都绑全了。

最后说一个我自己的判断:对于绝大多数中小团队,如果没精力维护一套完整的内网 DNS 体系,那就全部用外网解析,然后在安全组和防火墙层面做限制。比如一个内部管理后台,域名解析到公网 IP,但安全组只允许公司出口 IP 访问。这样虽然流量绕了一下公网,但省去了 DNS 分内外网的复杂度,出问题的概率反而更低。毕竟,DNS 这东西,简单就是可靠。

* * *

回到开头那个故障,解决方案很简单:把 admin.xxx.com 的解析改成公网 IP,然后在服务器安全组里放行 VPN 的出口地址段。朋友问我要不要搞一套内网 DNS,我说你先看看团队有没有专人维护 DNS 服务器,没有的话就别折腾。能用外网解决的问题,别用内网给自己加戏。

```

分享到: