【发布时间】:2017-07-07 12:12:37
【问题描述】:
我在我的本地网络上有一个绑定 DNS 服务器来获取 *.home 解析,并为每个其他域提供一个转发器部分。我还有一个本地 Web 服务器,它从外部为 *.mydomain.com 的一些子域提供服务,我的 ISP 框将端口 80/443 重定向到它。
但是,如果我尝试从本地网络中的任何计算机访问任何 *.mydomain.com 地址,则返回的 IP 地址是我的公共 IP 地址,并且 ISP 框不会将请求重定向到我的服务器。我通过在每台本地计算机上的 /etc/hosts 中添加带有服务器本地 IP 地址的子域 *.mydomain.com 来使用解决方法,但这并不完美,因为如果我将计算机移动到另一个网络,我必须更改它,另外我无法在我的非根 Android 设备上执行此操作。
完美的解决方案是让我的本地 DNS 使用本地 IP 而不是公共 IP 覆盖 *.mydomain.com 的 DNS 条目。我为此尝试了一些 Bind9 配置,一些使用“response-policy”指令,一些没有,但在每种情况下,我都有大约 50% 的时间获得外部 IP,但我不知道为什么。这发生在我使用的每台计算机上(一些在 Ubuntu 上,一些在 Windows 上),也发生在我的 Android 手机上。
使用dig @mydns subdomain.mydomain.com 返回本地IP,所以我假设绑定配置没问题,但dig subdomain.mydomain.com(或ping)并不总是返回正确的IP。我还尝试像这样禁用子域的转发器:
zone "mydomain.com" {
type master;
file "/etc/bind/db.mydomain";
forwarders {};
};
我刷新了计算机的 DNS 缓存,但我的网络上没有其他 DNS 服务器,所以我不明白这是怎么发生的。我还尝试在绑定服务器上记录请求,但没有看到返回外部 IP 地址的请求(只有内部 IP 地址的请求)。那么这些请求是从哪里来的呢?
【问题讨论】:
标签: networking dns bind