如何将请求转发到我自己的IP地址到我的网络中的本地IP地址(可能使用命名)?


1

我的设置

我在地下室运行了一个linux服务器。我目前有我的路由器寻找该服务器进行DNS查找,所以我可以使用命名欺骗一堆域名指向我本地服务器的本地地址,192.168.0.111。这非常有效。

我也在这台服务器上运行Apache和PHP,并将我的路由器上的端口80转发到这台机器,因此我的公共IP xx.xxx.x.xx被发送到地下室服务器。

这对我来说是一个很好的开发,因为我可以在我的本地网络中开发网站,并在具有*.mylocal.net地址的众多设备上提取它们。我还可以快速与我网络之外的其他人共享我的公共IP网站。

我有一个静态IP,这使得这更容易。

问题

某些应用程序需要具有绝对URL。我的欺骗DNS在我的网络外部不起作用,我的内部IP地址也不起作用。

我需要能够以公开访问的相同IP访问站点,这是我的公共IP: xx.xxx.x.xx


出于某种原因,我无法从自己的网络中访问自己的公共IP地址。

我的路由器的公共IP是xx.xxx.x.xx,当我xx.xxx.x.xx从我的网络外部点击时,我看到了我想要的 - 我的开发网站。但是,当我xx.xxx.x.xx从网络内部命中时,连接超时。


我想我的ISP有一个防火墙阻止从请求xx.xxx.x.xxxx.xxx.x.xx其中起点和目的地是相同的IP(或也许这是不可能的任何网络上的?)

那么如何设置我的网络以将内部请求转发到我的公共IP到我的地下室服务器的本地IP?

我想在我设置的本地DNS服务器或我的路由器中执行此操作,因此更改可以应用于我的网络中的所有设备,而不仅仅是地下室服务器或Windows平板电脑/笔记本电脑等。


1
您需要一个支持“发夹”路由的路由器。请看:serverfault.com/questions/55611 / ...
Ƭᴇcʜιᴇ0072014年

1
@ techie007不,他没有。它是一种方式,但鉴于他有一个本地DNS服务器,他可以在本地重定向内部流量而不会损害外部流量。(就像通常设置一样)
LPChip 2014年

@LPChip我读它的方式OP询问是通过外部IP地址专门访问它,而不是通过主机名访问它。如果他曾询问过使用外部主机/域名访问本地服务器,我会向他指出其他20个问题。;)
Ƭᴇcʜιᴇ00714年

Answers:


2

这是正常现象。问题不是ISP级别的防火墙,而只是您的路由器。当您指向LAN内部的地址到LAN内的公共IP时,会发生以下情况:

Your PC- > Your Router- > Internet- > Your Router- > Your other PC

问题是,当连接到互联网然后重定向回路由器时,路由器会因为连接已经来自您的路由器而感到困惑,因此它无法正常工作。实现这一目标的唯一方法是将公共地址指向您网络中的本地inside网络,这样它就永远不会离开您的LAN。

鉴于您已经在Linux服务器上安装了DNS服务器,请在那里添加您的mylocal.net域和所有子域,并使其指向您的本地IP地址192.168.0.111,并确保实际的mylocal.net帐户真实存在外部世界的DNS。

以下是将要发生的事情的示例:

让我们假设您已将test.mylocal.net配置为指向名为12.34.56.78的公共IP

现在,从局域网外部ping,test.mylocal.net将回复12.34.56.78。

在Linux DNS服务器上,添加test.mylocal.net并将其指向192.168.0.111。

当您进入网络,并在浏览器中输入test.mylocal.net时,会发生以下情况:

  • 浏览器:是否使用test.mylocal.net设置了本地主机?没有。
  • 浏览器,转发请求到本地DNS服务器。
  • 本地DNS服务器是你的linux DNS服务器:test.mylocal.net是否已设置?是的,返回192.168.0.111
  • 浏览器现在连接到您的网络服务器并显示该页面。

来自网络外部:

  • 浏览器:是否使用test.mylocal.net设置了本地主机?没有。
  • 浏览器,转发请求到本地DNS服务器。
  • 本地DNS服务器是某人的路由器或DNS服务器。
  • 本地DNS服务器没有test.mylocal.net的特定条目,返回No.
  • 本地DNS服务器向Internet DNS服务器询问IP是什么。
  • Internet DNS服务器已收到您的test.mylocal.net更新并返回公共IP。
  • 浏览器确实向您的公共IP请求。
  • 浏览器连接到您的路由器。
  • 路由器将请求转发给您的Linux服务器。
  • Linux服务器为网页提供服务。
  • 浏览器显示网页。

这肯定会奏效,但我希望在没有公共DNS记录的情况下实现这一目标。我真的不想将任何实际的公共DNS注册到我的IP。是否可以使用我的路由器或我的Linux DNS服务器将我的公共IP请求从我的网络转发到本地IP?
tmsimont 2014年

您可以编辑本地主机文件以指向LAN IP以获取任何* .mylocal.net。这将确保您可以通过DNS而不是IP地址查看您的公共网站。
LPChip 2014年

这也可行,但我的问题是我试图只与网络之外的人共享我的公共IP(没有域名)。然后我想在内部使用相同的公共IP ...我希望我可以使用DNS服务器来转发实际的IP请求,但这没有多大意义,因为它可能甚至没有进入如果请求是针对IP而不是域名,那么等式,对吧?
tmsimont 2014年

1
是的,只有当您的路由器支持techie007建议的发夹路由时,这才有效。请注意,这不是现实生活中的事情,如果你想从中学习,最好以正确的方式学习。如果只有一个人想要与之共享相同的IP,我建议使用VPN并使用internal IP相反的。
LPChip 2014年

好的,谢谢 - 你知道这是bassackwards,但我只是不想在这里建立一个公共服务器。我只是希望能够与另一个州的一些人分享开发网站的预览。对vpn的好评。我将看看那个发夹路由的东西
tmsimont 2014年

-1

嗨请尝试编辑您的主机文件并按照步骤操作。

  • 转到 - > C:\ WINDOWS \ System32 \ drivers \ etc \ hosts
  • 右键单击hosts文件,单击Properties并取消选中Read-Only框。
  • 然后单击确定。

2)现在您可以编辑hosts文件:

您可能需要管理员帐户才能编辑hosts文件。 - 打开记事本(Vista / 7,以管理员身份运行) - 现在单击“文件”,然后单击“打开”。 - 现在输入文件名(复制/粘贴所有这些):C:\ WINDOWS \ System32 \ drivers \ etc \ hosts并单击“打开”

  • 现在将这些行附加到hosts文件的末尾:

127.0.0.1您的公共IP或DNS

谢谢..


这不起作用。hosts文件只控制DNS解析; 它不控制路由,因此对发送到IP地址的数据包的位置没有影响(一旦从域名转到IP地址,则hosts文件无关紧要)。
2015年
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.