我并不是一个完全的网络新手,但同时我从未尝试过做我在这里要做的事情。
我有一个 Ubuntu 服务器(几乎是全新安装)盒,连接到 Linksys E3000 路由器,我家里有 3 台 Win7 机器、2 台 OSX 计算机、2 台 Android 智能手机设备以及一台 PS3、360 等。不用说,我家里有很多不同的设备定期使用互联网,所以我需要谨慎行事。
此 Ubuntu 服务器充当本地 Web 服务器,带有 LAMP 堆栈(可用)和文件服务器,还带有 Samba。它也运行了 BIND9,但我从未让它正常工作。以下是我尝试实现的场景:
我希望能够随时在任何设备上(任何带有 Web 浏览器的设备)访问“mysite.dev”,并且此 URL 将解析为 ubuntu 服务器上 apache 配置中的 vhost,如果无法解析 URL,它将默认返回到正常互联网网关,尝试从互联网传送页面。要设置新的开发站点 (.dev),我只需要修改 apache vhost 并在系统上创建相应的文件夹(我甚至可以满足于每次都必须重新启动 apache,我对此很满意)
注意:我不希望也不需要在远程网络上看到任何这些内容。这纯粹是为了内部开发。
我明白要做到这一点,我需要配置我的路由器,以便通过 IP 将所有连接发送到我的 Ubuntu 盒子,这就是我已经陷入困境的地方,因为我不确定我应该找到并修改哪些设置。
注意:我讨厌 BIND9。如果绝对必须,我会使用它,但我有一个相当昂贵的 Linksys 路由器,它应该能够完成这里需要做的事情。
就在前几天上班时,我们完成了这项工作,我们完全避免使用 BIND9,只是使用具有特殊配置的路由器首先将 URL 解析到我们的 apache,然后解析到互联网,这正是我在这里尝试做的。
这些都设置好了,所以我不需要做
//UbuntuMan/mysite(我现在有的)
我宁愿
为了实现这一目标,我将分头行动。我每天的所有电脑都用来开发网站,而且我有大量订单要处理,我会经常更换电脑,因此,能够在服务器目录上工作并以这种方式交付页面非常重要(这就是 Samba 出现在那里的原因)。
可选问题:如果确实设置了,那么设置起来有多容易,如果 Ubuntu 服务器不存在(即:关闭)那么它将默认正常访问互联网?
答案1
希望您的 Linksys 路由器允许您覆盖它通过 DHCP 分发的默认 DNS 主/辅服务器。如果是这样,请将主服务器设置为您的 Ubuntu 服务器,将辅服务器设置为 Linksys 设备本身(假设它已经提供 DNS 服务,大多数都提供)。
完成此操作后,您可以通过自行安装 dnsmasq 来避免 BIND 9 带来的麻烦(其实并没有那么糟糕!)。我确信它在 Ubuntu 存储库中可用。开箱即用,它将:
- 将传入的 DNS 请求转发到 /etc/resolv.conf 中列出的 DNS 服务器(将这些服务器设置为您的路由器,或者您的 ISP 提供的 DNS 服务器)。
- /etc/hosts 中列出的“影子”结果。
对于第二点,在 /etc/hosts 中添加一个条目,例如:
192.168.1.42 mysite.dev www.mysite.dev
其中 192.168.1.42 是您的 Ubuntu 服务器的 IP。然后,当任何内部主机查找 mysite.dev 时,它们会将请求转发到其主 DNS 服务器(Ubuntu 系统),并返回其本地记录。如果他们发送对 google.com 的请求,它们将被转发到上游。
话虽如此,您可以关闭此 Ubuntu 服务器,DNS 客户端将转而使用辅助 DNS 服务器(您的路由器、ISP,无论您在 Linksys 上的 DHCP 选项中配置了什么)。这并不理想,因为不同的 DNS 客户端实现在故障恢复到辅助 DNS 时可能会非常慢。大多数桌面操作系统都可以很好地进行故障转移,并且在 5 分钟内不会重新尝试连接到主服务器,但我见过不太好的实现,它们在每次请求时都尝试主服务器,超时时间为 5 秒。
希望这可以帮助!
答案2
听起来您需要在路由器或 DNS 服务器上为 mysite.dev 创建 A 记录,以便内部机器能够获取本地服务器的 IP。