使用公共IP访问内部IP


38

我有一个带有公共IP地址的DSL调制解调器(201.206.x.x),而我的内部网络中有一个Web服务器(192.168.0.50)。

我将调制解调器设置为将请求转发到端口80到我的Web服务器,因此,如果我201.206.x.x从网络外部访问,它将显示我的网页,如果192.168.0.50从网络内部的计算机进行访问,也会发生同样的情况。

现在,问题是当我尝试201.206.x.x从内部网络访问时,浏览器尝试连接到DSL调制解调器配置,而不是将请求重定向到Web服务器。

我必须在调制解调器中更改哪些设置才能设置此重定向?


该问题的一个变体,我有多个(2)托管服务器,并且我为内部请求配置了DNS(BIND9)。如何基于主机名映射(到不同的Hosting Server)外部请求(到公共IP)?
Kunal B.17年

Answers:


20

问题在于,数据包重写通常只能在穿越防火墙时进行。一般而言,当请求来自要重写请求的同一网络时,路由器无法执行必要的重写。解决此问题的常见方法是将Web代理放置在网络外部,该请求使请求通过防火墙循环回去。

我怀疑您的特定问题是您想通过其DNS主机名访问该网站。您可以使用“水平分割” DNS进行处理,因此它会注意请求的来源并做出适当的回答:如果请求来自网络内部,它将192.168.0.50分发给来自您的请求网络和其他所有人的公共IP。

这些建议中的任何一个都可以在网络外部的任何主机上实施,例如(免费)Amazon EC2微型实例。


谢谢,尽管我认为我会坚持使用HOSTS文件编辑,因为它基本上是一个个人网站,可用于我正在测试的网站的测试。PC甚至不全天候24/7。

3
我在自己的家庭网络上解决了此问题,方法是在自己的DNS服务器上(也运行在我的家庭网络上)添加一个与我的外部dyndns名称相同的A记录。A记录和反向PTR记录一样指向我的家庭网络中的正确位置。但是当然,并不是每个人都在运行自己的家庭DNS ...
LawrenceC

14

我要说的是@Insyte,当他/她谈论该问题是DNS解析问题..这意味着问题是数据包重写(有关该解释,请再次阅读@Insyte帖子)。

假设您具有以下设置:

  1. 公用IP: 201.206.x.y
  2. 专用IP: 192.168.0.50
  3. IP上所有80个端口(如果使用SSL则为443)的端口转发201.206.x.y192.168.0.50

当您处于内部网络中时,然后在浏览器中键入以下内容:

http://www.yourwebsite.com

并且发生错误。因此,解决方案:入侵您的主机文件。

在Windows上,转到C:\windows\system32\drivers\etc\hosts (注意,该文件没有扩展名)。在Linux上,该文件位于中/etc/hosts

如果在记事本中打开该文件,则可以看到用于覆盖DNS的所有条目。如果要更新该文件,则需要以管理员权限打开记事本(或用于编辑文件的任何程序),否则无法保存该文件。

将此添加到您的主机文件:

192.168.0.50 www.yourwebsite.com

然后重新启动您的浏览器,输入URL和提示!工作正常 因此,这意味着您的浏览器无需依赖DNS即可将您的域解析为IP。取而代之的是,我们重写了这个说法:浏览器,只需转到我的内部IP地址获取该域名,而不是向DNS询问IP地址

如果您在办公室里,则可以让所有需要访问此内部网站,黑客入侵其主机文件的人,或者,如果您具有内部DNS,则可以在其中添加一个条目。

另一个想法是拥有一个内部代理服务器(用于所有Web冲浪等),然后入侵代理服务器上的主机文件。这意味着您的浏览器会说“ 代理”,能否请您获取资源http://www.mywebsite.com,并且代理说“可以” ,并且因为有人告诉我忽略该域的DNS,所以我只提供经过硬编码的IP我的主机文件


是的,我实际上在发布之前就已经有了这个,我只是想能够通过实际IP访问它,但是我认为我可以接受,因为我的调制解调器没有NAT反射(如@MaQleod所建议)。

3
经常通过内部外部网络访问同一站点的笔记本电脑或智能手机怎么办?
TREE

@TREE您可以详细说明吗。我不太明白你的问题。
Pure.Krome

除了使用域名外,我的设置非常相似。因此,从网络外部,我的域解析为我的外部IP,而从内部,它解析为内部IP。我的笔记本电脑和智能手机经常从内部和外部访问,因此无法破解主机文件。我所做的基本上就是您的(Pure.Krome)其他答案所建议的内容,只是不使用外部服务器,而是告诉路由器上的DHCP服务器添加内部DNS服务器。它通常可以正常工作,但是在开始解决问题之前切换网络存在烦人的延迟。
TREE

9

这是某些路由器处理来自内部地址的用于其公共地址的流量的常见问题-它们没有遵循与来自网络外部的请求相同的端口转发规则。您需要在路由器中寻找的是NAT反射。这将允许路由器处理对公共IP的内部请求,以使用与来自网络外部的请求相同的端口转发规则。


1
NAT反射。我想这就是我想要的。不幸的是我的调制解调器没有那个。谢谢!

调制解调器不支持NAT环回时该怎么办?
PrimitiveNom

2

如果您能给我您的调制解调器的型号和型号,我会更好地帮助您。

但是这里发生的是,通常路由器或调制解调器的配置页面仅应在访问其内部IP(192.168.0.1)时出现

但是这里似乎正在发生的事情是它标识传入的请求(201.206.xx)由于来自内部,因此决定为您提供配置页,而不是通向Web服务器的常规路由...

现在,如果您使用的是消费者级别的调制解调器,则可能无法更改此设置(对不起)

但也许您可以:尝试查看管理配置页面中是否有“监听”设置

您可以在此处尝试将管理页面更改为另一个端口,或限制其监听的地址



2

您可以添加一条路由,以直接通过服务器的本地IP访问服务器的公共IP。在Windows上,命令类似于

route add [public IP] mask 255.255.255.255 [the server's local IP]

要添加持久路由,请-p在上述命令中添加参数。

然后,每次您访问公共IP时,计算机将通过服务器的本地IP作为网关。因为服务器知道自己的公共IP,所以它将从自身处理该程序包,而不是将其转发到本地网络。

您必须确保服务器的本地IP静态。


服务器为什么知道自己的公用IP地址?
G-Man说'恢复莫妮卡'

服务器当然知道它们的IP。静态或动态IP。我不确定路由的工作方式。我的猜测是每台机器都有一个路线图。当收到包裹时,它决定是否应处理包裹。
qevan 2015年

0

有同样的问题。通过将DNS主机名添加到路由器的DNS主机映射列表中,我可以解决此问题。我在路由器的高级选项列表中找到了这些设置。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.