2011-03-19 22:41:21 +0000 2011-03-19 22:41:21 +0000
38
38
Advertisement

使用公共IP访问内部IP

Advertisement

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

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

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

我需要在调制解调器中更改哪些设置来设置这个重定向?

Advertisement

答案 (8)

20
20
20
2011-03-19 23:02:55 +0000

问题是,数据包的重写一般只能在穿越防火墙时进行。一般来说,当请求从同一网络到达时,路由器不能进行必要的重写。通常解决这个问题的方法是在网络外放置一个网络代理,通过防火墙将请求循环回来。

我怀疑你的具体问题是,你想通过它的DNS主机名访问该网站。您可以通过使用 “分裂地平线 "DNS来处理这个问题,这样它就会关注请求来自哪里,并做出适当的回答。如果请求来自你的网络内部,它就会把192.168.0.50分发给来自你的网络的请求,而把公共IP分发给其他人。

这些建议中的任何一个都可以在你网络之外的任何主机上实现,比如一个(免费的)亚马逊EC2微实例。

14
14
14
2011-03-20 00:32:24 +0000

当@Insyte说问题是DNS解析的问题时,我想说他/她是对的……这就意味着问题是数据包重写(再读@Insyte的帖子来解释)。

假设你有以下设置。

1.公网IP:201.206.x.y 2. 私有IP:192.168.0.50 3. IP 201.206.x.y192.168.0.50

然后,当你在内部网络中时,在浏览器中输入以下内容。

http://www.yourwebsite.com

然后就会出现错误。所以,解决方法:黑掉你的hosts文件。

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

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

将此文件添加到你的hosts文件中。

192.168.0.50 www.yourwebsite.com

然后重新启动浏览器,输入网址,然后就可以了!它的工作。所以这意味着,你的浏览器并不依赖你的DNS来解析你的域名到IP。相反,我们覆盖了这一点,并说。Browser, just go to my internal IP for that domain name, instead of asking DNS for the IP address. Browser, just go to my internal IP for that domain name, instead of asking DNS for the IP address.

如果你是在办公室,那么你可以让所有需要访问这个内部网站的人,黑掉他们的hosts文件,或者如果你有一个内部的DNS,那么你可以在里面添加一个条目。

另一个想法是有一个内部的代理服务器(用于所有的网上冲浪等),然后黑掉代理服务器上的hosts文件。这意味着你的浏览器会说:代理,请你给我资源http://www.mywebsite.com,代理说:当然可以,因为我被告知忽略该域名的DNS,所以我只给我的hosts文件中已经硬编码的IP

9
Advertisement
9
9
2011-03-20 01:27:58 +0000

这是一些路由器处理来自内部地址的公有地址流量的常见问题–它们不遵循与来自网络外部请求相同的端口转发规则。你需要在路由器中寻找的是NAT反射。这将允许路由器处理内部请求的公网IP使用相同的端口转发规则,就像请求来自网络外部一样。

2
2
2
2011-03-19 23:00:42 +0000

如果你能给我你的调制解调器品牌和型号,我可以更好地帮助你… …

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

但这里似乎发生的情况是,它识别到传入的请求(201.206.x.x)来自内部,因此决定给你配置页面,而不是正常的网络服务器路径……

如果你使用的是消费者级别的调制解调器,你可能无法改变这一点(抱歉)

但也许你可以。试着看看你的管理配置页面是否有 “监听 "设置

在那里,你可以尝试将你的管理页面改为另一个端口,或者限制其监听的地址。

2
Advertisement
2
2
2011-03-19 23:08:12 +0000

也许问题是允许远程管理。

2
2
2
2015-03-12 03:14:55 +0000

你可以添加一个路由,通过本地IP直接访问服务器的公共IP。在Windows上,命令如下:

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

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

然后每次访问公网IP时,电脑会通过服务器的本地IP作为网关。因为服务器知道自己的公网IP,所以会自己处理包裹,而不是转发到本地网络。

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

0
Advertisement
0
0
2015-12-05 05:31:19 +0000

有这个同样的问题。我能够通过将DNS主机名称添加到我的路由器的DNS主机映射列表来解决这个问题。我发现这些设置列在我的路由器的高级选项列表中。

0
0
0
2016-04-09 16:37:43 +0000

在我的路由器上,我不得不关闭 “NAT加速"(Cut Through Forwarding),因为这打破了NAT环回……

Advertisement
Advertisement