DNS主机位于同一IP后面

时间:2011-06-10 13:47:19

标签: networking dns nat hosts

最近,我在www.active-domain.com上购买了一个域名 我将它用于我的家庭网络,所以我们谈论的是NAT和动态IP。 由于我的IP是动态的,我无法创建使用自己的DNS服务器的委派。 active-domain充当DNS服务器,因此我只能创建:A,CNAME,URL重定向,URL帧和TXT记录。

那就是说,这是我的问题:因为我支持NAT,是否有可能在同一个IP后面创建多个主机?

示例:
我希望srv1.mydomain.com指向我网络中的192.168.0.101。
我希望srv2.mydomain.com在我的网络中指向192.168.0.102 但是从外部来看,都指向(例子)74.0.0.1

简而言之:
srv1.mydomain.com - > 74.0.0.1 - > 192.168.0.101
srv2.mydomain.com - > 74.0.0.1 - > 192.168.0.102

感谢。

1 个答案:

答案 0 :(得分:0)

在任何情况下,yourhost.example.comanotherhost.example.net的外部DNS都会指向防火墙的外部地址(此处为IN A 74.0.0.1),或指向防火墙的主机名(例如IN CNAME yourfirewall.example.org.

但请注意,DNS(域名到IP地址解析)与连接处理和路由分开进行。这意味着什么:

  • 客户端计算机在面对DNS主机名时,会尝试查找它 - 例如询问其本地DNS服务器,“谁是yourhost.example.com”; DNS服务器回复“74.0.0.1”。
  • 就IP堆栈而言,这是最后一次使用主机名;从现在开始,客户只使用地址进行操作。
  • 客户端打开与地址和端口的连接;但是,传入的数据包仅标记为“用于地址为74.0.0.1的计算机”,没有任何“用于获取该地址的DNS名称,如果有的话”的说明。

某些协议(例如HTTP)可能使用数据包的数据部分中的主机名(使用HTTP,它是Host:标头),但不是每个协议都这样做。这些是可能性:

  • 如果您有两台服务器将在不同的端口上运行 ,这不是一个真正的问题:我引荐您转到Q&A on port forwarding on SuperUser

  • 如果您需要在同一端口上运行两台服务器 ,这将变得很困难,即使不是不可能:也可能反向代理流量(并将数据分开一个)来自另一个数据的服务器);如果有问题的协议没有这样做(例如SMTP或SSH),那么你就是SOL。

    • 具体来说,如果您的目的是将流量定向到两个不同的HTTP服务器(均在端口80上),则需要在防火墙(74.0.0.1)上运行某种反向代理。使用Apache,最简单的配置可能看起来像这样:

<VirtualHost *:80>
ServerName yourhost.example.com
ProxyPass / http://192.168.0.101/
ProxyPassReverse / http://192.168.0.101/
</VirtualHost>
<VirtualHost *:80>
ServerName anotherhost.example.net
ProxyPass / http://192.168.0.102/
ProxyPassReverse / http://192.168.0.102/
</VirtualHost>