路由器
Running DD-WRT v24
DNSMasq is enabled
DynDNS is enabled, routing TLD domain devita.co to my Dynamic IP
Port Fowarding rules enabled for 192.168.1.161, WAN 2152 -> LAN 80
外部可访问服务
- Remote Web Server running @:192.168.1.161 on port 80
which runs a web interface for my raspberry pi
问题
如果我的手机没有连接无线网络,我可以访问http://devita.co:2152很好。但是,如果我在本地无线或有线网络上。我必须使用http://<localhostname>:<port>
例如;http://garagedoor
才能访问相应的设备。
问题
如何通过同一个 TLD 域名(devita.co)在本地和外部访问我的远程服务?
答案1
有两种方法可以解决这个问题:
1)(最简单) - 查看您的路由器是否支持“NAT 环回”(不同品牌的路由器可能有不同的名称),如果不支持 - 升级到支持该功能的路由器。这将立即使您的服务正常运行。
2)(最难) - 这实际上只是路由器不支持 nat 环回时的一种解决方法。您需要执行所谓的“分脑 DNS”。在这种情况下,您的路由器会将查询转发到不同的 DNS 服务器,而不是主互联网/ISP DNS 服务器。
例如,如果你在树莓派上安装了 DNS 服务器(bind 在基本配置中使用起来非常简单),那么你可以将其设置为将所有查询转发到你选择的 DNS 服务器,但是,你可以使用本地 IP 为 devita.co 域托管文件。
这基本上意味着您网络上的设备将引用此 DNS 服务器并获取内部 IP,而网络外的机器将获取常规 DNS 和外部 IP。
这是一些大型网络的官方做法,但是,我个人不喜欢它!
... 两者都有充分的理由,即使路由器确实支持 NAT 环回,使用 Split Brain DNS 也有真正的理由。
例如,如果您有本地 IP,您将建立直接连接 - 如果您有外部 IP 并使用 natloopback,它将通过路由器,正如其名称所示,通过网络回送和复制数据。因此,在大型网络中,即使您的路由器支持 NAT 回送,也有真正的理由使用它……但是,NAT 回送要容易得多!