我的设置
我的地下室里有一台 Linux 服务器。目前我的路由器正在向该服务器查询 DNS,因此我可以使用命名来伪造一堆域名以指向我本地服务器的本地地址。192.168.0.111
这很有效。
我也在此服务器上运行 Apache 和 PHP,并已将路由器上的端口 80 转发到此机器,因此我的公共 IPxx.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 有一个防火墙,可以阻止来自源 IP 和目的地为同一 IP 的请求xx.xxx.x.xx
(xx.xxx.x.xx
或者这在任何网络上都是不可能的?)
那么我该如何设置我的网络以将内部请求转发到我的公共 IP 到我的地下室服务器的本地 IP?
我想在我设置的本地 DNS 服务器或路由器中执行此操作,这样更改就可以应用于我的网络中的所有设备,而不仅仅是地下室服务器或 Windows 平板电脑/笔记本电脑等。
答案1
这是正常现象。问题不在于 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
现在,从您的 LAN 外部 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 的特定条目,返回“否”。
- 本地 DNS 服务器询问互联网 DNS 服务器 IP 是什么。
- Internet DNS 服务器已收到您的 test.mylocal.net 更新并返回公共 IP。
- 浏览器确实向您的公共 IP 发出请求。
- 浏览器连接到您的路由器。
- 路由器将请求转发到您的 Linux 服务器。
- Linux服务器提供网页服务。
- 浏览器显示网页。
答案2
您好,请尝试编辑您的主机文件并按照步骤操作。
- 转到 -> C:\WINDOWS\System32\drivers\etc\hosts
- 右键单击 hosts 文件,单击“属性”,然后取消勾选“只读”框。
- 然后单击“确定”。
2)现在您可以编辑hosts文件:
您可能需要管理员帐户才能编辑 hosts 文件。 - 打开记事本(Vista/7,以管理员身份运行) - 现在单击“文件”,然后单击“打开”。 - 现在输入文件名(复制/粘贴所有内容):C:\WINDOWS\System32\drivers\etc\hosts 并单击“打开”
- 现在在 hosts 文件末尾附加以下行:
127.0.0.1 您的公共 IP 或 DNS
谢谢..