我的网络内部有一个本地 DNS 服务器,并且为我的某些内部站点(即 app1.domain.com、app2.domain.com)设置了一些 A Name 记录,并且该 DNS 可以在内部解析并正常加载站点。
现在我也有一个 godaddy 域名,并希望允许外部访问其中几个网站。我在 godaddy 中创建了相同的 A Name 记录,并将它们指向我的单个 WAN IP。之前,我将路由器上所有传入端口 80 的流量直接转发到我的内部 Web 服务器的 IP,这只是一个临时解决方案,效果很好。
现在我有了第二个 Web 服务器,需要将其公开到不同的内部服务器上。因此,当客户端尝试从外部连接时,对于端口 80 流量,我需要将 app1 发送到我的内部 IP 10.1.1.23,将 app2 发送到 10.1.1.24。
因此,我修改了路由器,将外部端口 80 的流量转发到端口 53 上的 10.1.1.11(我的内部 DNS 服务器),用于 tcp/udp。DNS 服务器是 Windows Server 2008 R2 计算机。看起来防火墙例外也设置为允许端口 53 上的传入流量,但每当我尝试从外部客户端访问该站点时,都不会加载任何内容。我知道 godaddy 正在将流量转发到我的 WAN,因为我可以执行 tracert 来解析我的 WAN IP。
我究竟做错了什么?
答案1
我将在我的回答中做出一些假设。如果我错了,请纠正我。
您只有 1 个公共 IP,它是分配给路由器的 WAN 接口的 IP。
您的路由器是 SOHO 型号,只能在其 WAN 接口上分配单个 IP。即,如果您从 ISP 购买了额外的静态 IP,则需要更换路由器来处理此问题。
我的网络内部有一个本地 DNS 服务器,并且为我的某些内部站点(即 app1.domain.com、app2.domain.com)设置了一些 A Name 记录,并且该 DNS 可以在内部解析并正常加载站点。
我假设您的内部 DNS 服务器配置为返回服务器的 RFC1918 私有地址。这使得此服务器上的 DNS 区域对于 LAN 之外的人来说毫无用处。如果他们从 Internet 收到 10.1.1.x 的响应,则会被丢弃。
现在我也有一个 godaddy 域名,并希望允许外部访问其中几个网站。我在 godaddy 中创建了相同的 A Name 记录,并将它们指向我的单个 WAN IP。之前,我将路由器上所有传入端口 80 的流量直接转发到我的内部 Web 服务器的 IP,这只是一个临时解决方案,效果很好。
好的。这可以工作,但正如您所见,它的可扩展性不是很好。
现在我有了第二个 Web 服务器,需要将其公开到不同的内部服务器上。因此,当客户端尝试从外部连接时,对于端口 80 流量,我需要将 app1 发送到我的内部 IP 10.1.1.23,将 app2 发送到 10.1.1.24。
因此,我修改了路由器,将外部端口 80 流量转发到 10.1.1.11(我的内部 DNS 服务器)的端口 53,以用于 tcp/udp。DNS 服务器是 Windows Server 2008 R2 计算机。防火墙例外似乎也设置为允许端口 53 上的传入流量,但每当我尝试从外部客户端访问该站点时,都无法加载任何内容。我知道 godaddy 正在将流量转发到我的 WAN,因为我可以执行 tracert 来解析我的 WAN IP。
这就是你感到奇怪的地方,我的朋友。真的,真的很奇怪。你正在将 HTTP 请求转发到 DNS 服务器,同时转换端口。这就像拿一封用英文写的、寄给美国某人的信,从邮局取出,然后扔进缅甸某人的邮箱,然后想知道为什么你还没有收到回复。
HTTP 和 DNS 是完全不同的协议。HTTP 提供网页服务。DNS 将完全限定名称转换为 IP 地址。它们不可互换。DNS 服务器将查看您转发给它的 HTTP 数据包,然后说“去他的,不知道那是什么意思”,然后将其扔进垃圾桶,就像您在缅甸的新笔友一样。
好的,现在您知道哪里出了问题,您可以做什么呢?
获取额外的公共 IP 并将其分配给您的路由器。这假设您的路由器可以处理此问题。如果不能,您可能需要获取一个新的 IP,或使用选项 2。如果您获得了另一个 IP 和一个可以处理的路由器,您只需将 Go Daddy 设置为使用第二个 IP 作为您的第二台服务器,然后将新 IP 上的端口 80 请求转发到新服务器,就像您对第一个 IP 和第一台服务器所做的那样。这将要求您为添加的每个新服务器都有一个公共 IP。
设置反向代理并将所有内容指向您的一个 IP 地址。您可以使用 apache 的 mod_proxy 或 IIS7 的 ARR 等工具来实现这一点。您可以告诉 Go Daddy 的 DNS 将所有流量发送到全部将您的外部站点的 IP 地址设置为您已有的 IP 地址。在路由器上,您将端口 80 上的请求转发到充当反向代理的新服务器。此服务器将配置为充当入站连接的“代理”。您将配置该服务器,使其根据请求的主机名将所有请求转发到正确的服务器。