首页 > 解决方案 > 来自 ISP 的 DDNS,可从外部访问,但不能从内部访问

问题描述

所以,我最近发现我的 ISP 有这个免费功能,所以我决定在家里建一个小型服务器,运行一些东西,如 FTP、HTTP、SSH,一些数据库,你明白了。

也许我应该先简要描述一下我的本地网络。我有一台路由器和一台主 PC,PC 将运行所有服务器。我将 DHCP 配置为保留192.168.0.2主 PC 的 MAC 地址,并创建了一个虚拟服务器(转发 -> 虚拟服务器 -> 添加新),将端口 80 映射到192.168.0.2TCP 和 UDP 上的 80。我还在 ubuntu 16.04 上运行 apache2,显然可以访问 localhost 并查看 apache 主页(在主 PC 上)。

经过多次不必要的重新启动(我认为它会起作用!)我发现我的笔记本电脑连接到同一个路由器(可以说192.168.0.3)我无法通过输入外部 ip 或 sudomain 连接到我的主 PC,只能通过内部 IP 地址192.168.0.2. 如果我用我的笔记本电脑(热点)连接到另一个网络并尝试访问子域,它就可以工作。

我希望能够从本地网络内部访问我的子域,但显然我不能,只能从外部访问。

现在我认为它肯定来自我的路由器配置,也许我应该设置某种默认网关,以停止搜索子域,因为它就在这里托管。任何人都知道我应该做什么?

标签: networkingdnsroutingsubdomaindhcp

解决方案


这完全取决于路由器的配置方式(NAT 组件)。

基本上,路由器有两个(或更多)IP 地址:WAN128.66.1.1端口上的公共 IP 地址(假设为 )和LAN端口上的私有地址(在这种情况下,假设为 ) 。假设传输到端口 80 (HTTP) 和正确的端口转发配置,两种情况是可能的:192.168.0.1

  • 您在网络之外(例如在咖啡馆):任何传输(数据包)都将使用外部 IP 地址路由到您的家庭路由器128.66.1.1。然后,当数据包到达路由器的WAN端口时,端口转发(或DMZ)设置会将数据包重新路由到192.168.0.2. 一切都很好。
  • 您在网络内:如果您使用外部 IP 地址128.66.1.1(直接使用或使用任何 DNS 名称),数据包将(由您的 PC)发送到路由器LAN端口,以便路由到互联网(您的 PC 不知道那192.168.0.2是最终目的地)。如果路由器被配置为区分发送到的数据包128.66.1.1和发送到的数据包192.168.0.1,那么它将检测到该数据包是要路由到分配给WAN的外部 IP 地址,然后它将使用相同的端口转发设置,就好像数据包从广域网进入港口。如果它无法区分这两种情况,那么您最终将成为您所描述的场景(换句话说,路由器将使用自己的资源进行响应,就好像您联系了它的内部 IP)。

有些路由器可以从 UI 配置,有些则需要固件修改(最终用户无法完成)。

iptables基于 - 的防火墙,此设置通过在规则和链(表)中使用标志PREROUTINGPOSTROUTING控制nat。此外,您需要为来自内部网络的数据包配置 NAT 规则(SNAT或),目标是外部 IP。MASQUERADE


推荐阅读