请考虑以下简单场景:
我有一个办公网络,其中有一台服务器提供某些服务,例如通过 HTTPS。我希望能够使用名称访问此服务器service.example.com
,并且我希望它既可以在办公网络内部工作,也可以通过互联网工作。
为此,我在 Internet 端有一个具有静态 IP 的路由器,并且我将其设置为将 TCP 端口 443 重定向到内部服务器。
我希望以某种方式配置 DNS,以便查询service.example.com
返回:
10.0.0.2
(内部 IP)从办公室网络内部查询时123.45.67.89
(外部 IP)从办公室网络外部查询时
我已经使用 Amazon Route 53 满足我的所有 DNS 需求,并且我发现了一项新功能基于 IP 的路由,这样我就可以创建多个 DNS 记录,这些记录会根据查询 IP 动态返回。因此,原则上,我应该按如下方式设置 DNS 记录:
service.example.com
10.0.0.2
当查询时返回123.45.67.89
service.example.com
123.45.67.89
从其他地方查询时返回
但是,Route 53 不允许我设置单独的 IP 地址。相反,我必须注册 CIDR 块,而 CIDR 块的掩码最多为/24
。因此,我无法设置单独的 IP 地址(带/32
掩码)。
这有什么原因吗?我是不是看错了?我想到的一些替代解决方案是:
- 记下所有内部 PC 的手动路由
/etc/hosts
。但是,我希望这可以在有时在内部网络上,有时在外部网络上的笔记本电脑上工作。我认为要求用户/etc/hosts
每次将笔记本电脑带回家时都更改路由是不合理的。 - 为此,在我的网络内设置一个 DNS 服务器。我认为这对于这个用例来说是一个非常繁重的操作——我不想在办公室网络内设置一个服务器来处理每个 DNS 查询,因为到这个内部服务器的流量很少。
- 停止使用 NAT,并获取一整块
/24
静态 IP。我认为这对我的需求来说有点过分了。 - 使用 IPv6,因为 IPv6 在任何地方都可访问,所以不存在这个问题。我现在就是这么做的,但很多人的家庭网络仍然没有 IPv6,所以没有 IPv6 的人根本无法使用该服务。
设置它的正确方法是什么?