![内部网站的 DNS](https://linux22.com/image/543944/%E5%86%85%E9%83%A8%E7%BD%91%E7%AB%99%E7%9A%84%20DNS.png)
我正在运行分割 DNS 并且通常可以从内部访问我的站点。
当我托管的网站不在我的主域下时,就会出现例外情况。
我可以为 *.example.com 上的任何内容设置外部和内部 DNS 条目,并从内部和外部访问这些站点。
我的问题与不在 *.example.com 下的站点有关
假设我刚刚设置了 test.com,它的内部 IP 为 192.168.1.55。我将 test.com 地址放入外部浏览器中,然后就看到了我想要的内容。
因此,如果我尝试为 test.com 提供一个指向内部 DNS 中的 192.168.1.55 地址的 A 和 PTR 条目,则不起作用。
我确信这样做有一个很好的理由,因为您不希望其他人劫持您的域名,但我也希望我的内部用户能够看到这些网站。
有人能给我指出正确的方向吗?
答案1
我不知道我是否完全误解了这里真正的问题,但如果它们仅供内部使用,为什么不创建一个仅供内部使用的新区域?例如,您可以创建一个“int”区域,并在其中为您的网站创建 A 和 PTR 记录,例如 myinternalsite.int 可以指向 192.168.1.55。我们公司的所有内部站点都在“cs”区域中,例如 sitename.cs,因此只有内部人员可以访问它们,或者远程人员需要连接到 VPN。希望这能为您提供一些想法。
答案2
您不能只将任意的 A 记录添加到您的 dns 服务器并让它解析到特定地址。您可以在 dns 服务器上创建一个新区域,但这会破坏 test.com 的所有地址,而不仅仅是您试图欺骗的地址。如果您的目标是在测试一组机器时将 test.com 指向 192.168.1.55,您可以修改 linux 和 mac 上的 /etc/hosts 以及 windows 上的 hosts 文件(http://www.ehow.com/how_5225562_edit-windows-hosts-file.html)这将为您提供一个很好的测试方法。
现在,如果您尝试在产品中解决这个问题,您可能需要重新审视您的架构并找到不涉及 DNS 的解决方案。
答案3
使用 DNSMasq 之类的工具作为内部 DNS 服务器,您可以将条目添加到一个 hosts 文件中。可以将其配置为指向拆分 DNS 服务器或单独充当缓存。
答案4
cwebber 关于在 bind 中设置区域文件的说法是正确的。他提到了这个缺陷:
您可以在您的 DNS 服务器上创建一个新的区域,但这会破坏 test.com 的所有地址,而不仅仅是您试图欺骗的地址。
解决此问题的方法是为您想要控制的每个名称设置区域文件,例如为 foo.test.com 而不是 test.com 创建区域文件。