我在家里的电脑上设置了一些服务。目前我使用一个小脚本来确定我是否在家,如果在家则使用 LAN IP,如果不在家则使用路由器的 WAN IP 来连接这些服务。
我只想简单地使用 DNS 来实现这一点。
这是我的路由器: http://netgear.com.au/home/products/wirelessrouters/work-and-play/DGN2200.aspx
我考虑安装这个:http://sourceforge.net/projects/modfs/ 但它似乎是基于固件的原始版本,我必须更新它才能使 VPN 正常工作。
我是不是该:
- 编辑我所有计算机上的 hosts 文件条目
- 尝试让我的路由器做一些 DNS(也许使用 telnet?)
- 在我的其中一台机器上安装 BIND,并将我的路由器配置为指向这台机器以获取家里的 DNS(试过这个但找不到在哪里配置它)
- 放弃我的路由器,在我的其中一台机器上安装某种路由器软件,然后使用它来做 DNS
- 我还没有考虑过的其他选择
基本上我想要以下内容:
网络外(已经起作用):
- machine1.domain.com -> {广域网 IP}
- machine2.domain.com -> {广域网 IP}
网络内部:
- machine1.domain.com -> 192.168.0.2
- machine2.domain.com -> 192.168.0.6
答案1
从您目前发布的内容来看,您似乎已经配置了端口转发,因此您可以从网络的任一侧(内部/外部)访问您的服务。如果没有,您需要先进行设置。
你可以尝试一些有趣的选项。有些选项比其他选项更复杂。这听起来像是一个有趣的项目,让我们开始吧:
计划 A:我首先想到的是做一些相对简单的事情,与你的脚本配合使用以进行检测。你可以有两个主机文件,并在它们之间切换。在你所有的机器上通过 Dropbox 共享这两个文件,并让脚本在给定的时间将所需版本复制到你的计算机以覆盖现有的主机文件。这样可以让事情保持动态,让你在网络的两侧使用相同的名称,但根据你所在的侧指向不同的 IP。
计划 A2:如果您在某处有一个域或专用服务器,您可以使用一个脚本,该脚本只使用您指定的凭据写入/读取 ftp 目录,如果您不想使用 dropbox 之类的东西。
计划 B:如果您有现有域,您可以让其中一台服务器定期上传路由器的外部 IP。这样,您就有了一个专用地址,您可以随时了解您的外部家庭 IP 是什么。从那里,您可以编写一些脚本,将动态 IP 指向变量,并使用您映射的端口进行端口转发。
计划 C:VPN + 内部 DNS。只要您在外面,就只需使用 VPN 即可。只要您在里面,希望您已经指向了该 DNS。我个人认为,Windows DNS 比 BIND 之类的东西更容易使用。它更图形化,更易于点击。BIND 完全基于文本,对于不熟悉的人来说可能有点吓人。但是,您需要一个专用的 Windows Server(当然可以虚拟化),这通常需要付费 - 但如果您有一个 *.edu 电子邮件地址,您可以使用 DreamSpark 免费获得一份 Windows Server 副本来试用。或者,您可以使用 CentOS 和 BIND 的副本执行相同操作(有很多关于“将 CentOS 设置为 DNS 服务器”的指南)。
答案2
OP 想要在家中设置 DNS,但描述表明真正的目标是让家用机器在家中解析到与家庭网络上不同的 IP。所提出的解决方案接近于分离 DNS 的实现,这在某些方面已不受欢迎。
我敦促 OP 将内部 IP 放在本地计算机的 hosts 文件中。假设计算机配置为使用默认的文件解析顺序,然后是 DNS,则 hosts 文件上的 IP 将排除 DNS 中的任何内容。
答案3
如果你从你的 ISP 获得了静态公共 IP,那么只需使用免费的 DNS 服务器(http://my.dot.tk/等)。但是如果你从你的 ISP 获得了动态公共 IP,那么使用动态 DNS 管理器(http://www.noip.com/ETC)。