背景:我有一台装有 Ubuntu 9.10 的工作笔记本电脑。我家里有一个小型网络,我在那里运行一些基本服务(为自己/家人)已有 10 多年了。在我的家庭网络中,有一个运行 Bind 9 的名称服务器(Fedora),有两个“视图”。一个视图是“外部”视图,它为电子邮件、wiki 和几个博客提供名称解析(面向整个互联网)。“内部”视图提供名称解析(面向这些服务器的内部 RFC1918 地址)以及所有内部主机、网络设备等。
我使用 openvpn 客户端从外部(例如工作地点)连接到我的家庭网络。我希望能够通过此 VPN 解析我的内部网络上的名称(以便我获得 RFC1918“内部”响应),而无需完全将我的解析器更改为我家里的 DNS 服务器。
例如,如果我从工作地点连接到 VPN,我可以将我的解析器(通过编辑 resolv.conf)更改为我家里的 DNS 服务器(通过 VPN),然后成功解析我家庭网络上的所有内部 DNS 名称。我遇到的问题是,现在我无法再解析我工作地点的 DNS 服务器提供的“内部”名称(因为我正在使用我的家庭 DNS 服务器)。
或者,我可以连接到 VPN 并直接通过 IP 地址访问我的家庭服务器,但这很不方便,并且会导致基于 Apache 名称的托管出现问题(以及其他问题)。
最终我想要实现的效果如下:
当我连接到 VPN 时,我会自动开始向我的家庭名称服务器发送 *.myhomedomain.com 的 DNS 请求,但任何其他请求仍会继续发送到我之前使用的名称服务器(我通过 DHCP 在公司 LAN 上收到的名称服务器)。
当我断开 VPN 连接时,对 *.myhomedomain.com 的请求会返回到本地 LAN DNS 服务器(例如,现在所有请求都发往那里)。
我正在寻找有关如何实现这一目标的建议。
答案1
域名系统在本地运行将允许您执行各种愚蠢的解析器技巧。请注意,执行愚蠢 DNS 技巧(例如在解析器失败时返回网页)的人会造成干扰。
答案2
我意识到这可能需要在工作时在本地工作站上运行名称服务器,并且可能进行大量测试和摆弄,所以我不知道这是否值得您花时间。
您可以使用转发来实现您想要的效果。您可以让名称服务器将所有查询转发到一个或多个其他名称服务器,也可以让名称服务器使用“转发”类型的区域将一个或多个特定区域的查询转发到另一台名称服务器。
因此,您可能能够在工作工作站上安装一个名称服务器,该服务器通过 options{} 部分中的转发器语句转发到您的常规工作 DNS 服务器,但通过专门为您的家庭域设置转发区域,将对您的家庭域的查询转发到您的家庭 DNS。这留下了一个问题,即在您断开 VPN 连接后,如何让 *.myhomedomain.com 查询返回到您的本地 LAN DNS 服务器。您可以通过在转发区域中列出多个转发器来解决这个问题,让第一个转发器指向您的家庭 DNS,让第二个转发器指向您的本地 LAN DNS 服务器。