networking - 端口 80 的端口转发不适用于来自 LAN 内部的请求(适用于 WAN)
问题描述
简而言之
- 当我在浏览器中输入mydom.com时:
- 从 WAN,我从我的 HTTP 服务器(从 192.168.14.65:80)获取页面。
- 从 LAN 我得到我的路由器配置页面(来自 192.168.14.1:80)。(我希望它将请求转发到我的服务器,就像它对 WAN 所做的那样)
- 当我在浏览器中输入mydom.com:2134
- 我从 LAN 和 WAN 都得到服务器的页面(来自 192.168.14.65:80)。
更长
- 我有一个路由器,在那里我配置了端口转发 80 到 192.168.14.65:80。
- 我在 LAN 中有一台计算机,上面有 HTTP 服务器。内部地址:192.168.14.65
- 我有一个指向我的 IP 的域,比如说 mydom.com。
- 当我从局域网外部输入浏览器mydom.com时,我从我的服务器获取页面(来自 192.168.14.65:80)
- 当我从局域网内的计算机上的浏览器中键入mydom.com时,我得到了路由器的配置页面(来自 192.168.14.1:80)
- 此外,如果我配置为将 80 以外的任何端口(比如说端口 2134)转发到我的服务器的 80 端口(所以 - 端口 2134 到 192.168.14.65:80)它可以工作,这意味着当我是mydom.com:2134时它可以工作在局域网和广域网。
硬件/软件规格
- 我路由器上的名字:NB403 - VDSL2 GATEWAY Vtech
- 服务器(192.168.14.65)是带有 nginx/1.14.0 的 Ubuntu-server 18.04
解决方案
这不是一个问题,而是向您的路由器供应商报告的错误。
棘手的部分实际上是 IPv4 或它的 PAT/NAT 反射部分。您的 DNS 名称指向您路由器的官方 IPv4。因此,当您的“外部”路由器仅进行端口转发时。但是,当您在“内部”时,您的路由器需要为同一连接执行两种类型的 PAT/NAT。:
- 隐藏您的私有 IP 以访问公共 IP(需要访问公共 IP 空间/互联网中的任何内容)(源 NAT)
- 将您的请求转发到内部服务器 IP(目标 NAT)
这让很多消费者 NAT 设备感到困惑。
有三种解决方案。
使用 IPv6。使用 IPv6,不需要 NAT/PAT,它可以毫无问题地工作。
使用可以进行 NAT 反射的路由器。
使用“拆分 DNS”。这意味着当询问 mydom.com 时,您的内部 DNS 服务器会使用您的内部服务器 IP 来回答。这种方式在内部时直接连接到服务器的私有 IP。不涉及 NAT。
问候,迈克尔
推荐阅读
- javascript - Openlayers .getGeometry 未定义(多线串对象)
- delphi - 我无法在我自己的 TDBGrid 衍生产品上设置文本格式
- tensorflow - 将自定义函数嵌入 NN
- asp.net - 是否有自动为多页应用程序生成许多资源文件(.resx)的工具?
- kubernetes - 使用 fluentd 过滤 kubernetes 审计日志并转发到 Splunk
- javascript - 按名称将特定值更新为多维中的特定索引
- cypress - 鼠标悬停在柏树中
- c# - 如何定义单元测试的不同顺序?
- ocaml - 如何更新记录的某些(但不是全部)字段?
- openid-connect - Onelogin - 成功登录 PKCE 后如何获取用户 ID 或电子邮件地址?