是否可以在没有互联网的情况下使用全球 IP 地址?

use*_*424 22 ip

是否可以在没有互联网的情况下使用全球 IP 地址?

显然,私有 IP 地址应该在没有互联网访问的情况下使用。但我很好奇我们是否可以使用任何 IP 地址作为私有 IP。有可能这样做吗?

例如,我们可以使用 8.8.8.8 作为私有网络中的私有 IP 地址(它永远无法访问互联网,因此网络中没有人知道 8.8.8.8 被用作 Google DNS)?

dav*_*dgo 66

这绝对是可能的 - IPV4 空间没有什么神奇之处,而且它的工作方式都是一样的。当这个网络集成到 Internet 中时,许多年来头疼的问题就来了。

  • 早在 cloudflare 得到 1.1.1.1 之前,它就被认为是一个被广泛滥用的 IP。事实上,据我所知,这是 APNIC 准备将其提供给 cloudflare 的部分原因,如果没有能够吸收大量垃圾的庞大全球网络,没有人可以合理地在互联网上使用它。 (40认同)
  • 别忘了当 Hamachi 将“未使用”的 5.0.0.0/8 用于其 VPN 服务,然后 ISP 开始真正使用它时……或者当 Cloudflare 收到 1.1.1.1 并发现“借用”了多少网络时它供内部使用。 (18认同)
  • 或者当您需要与另一个在内部执行相同操作的专用网络接口时。如果它们碰巧使用重叠范围,这甚至适用于 2 个专用范围网络。我必须在内部使用 10.0.0.0/8 的 2 家公司之间设置路由器。不得不在两个方向上使用 NAT 变得非常混乱。 (14认同)

Cri*_*gie 18

是的,它可能,但不推荐。

相反,您应该使用 RFC1918 分配的块,以及尽可能小的网络。避免将 10.0.0.0/8 用于具有少量设备的家庭网络。

更多详细信息,访问https://tools.ietf.org/html/rfc1918及其替代https://tools.ietf.org/html/rfc6761

一个好的经验法则是使用 4 倍于您可以在该网络上运行的最大设备数量的网络大小,或者使用 /24(254 台主机),以较大者为准。A /24 也简化了子网划分。

所以使用 10.yourstreetnumber.yourbirthyear.0 或 192.168.yourheightincm.0 要有创意!

如果您可能创建站点到站点 VPN,请考虑将 172.16 到 31.0.0 范围作为候选范围 - 因为它有点混乱,因此较少使用。

不使用现有公共范围的另一个原因是 dns 缓存可能会弄乱更改网络的设备。IE 笔记本电脑、手机和平板电脑可以将“dns.google.com”缓存为 8.8.8.8,并在它们连接到您的 LAN 后继续使用该记录。或者有人回家,您解析为 8.8.8.8 的“fileserver.local”主机名可以缓存至记录的 TTL。


愚蠢的 IP 重用示例 - 在 vmware 工作站时代,我尝试使用 127.99.99.0/24 作为 IP 网络,因为它比应用于环回接口的 127.0.0.0/8 更具体。

这对 vmware 和 linux VM 非常有效。但是一旦您将 127 输入 IP 地址的第一个八位字节,Windows(xp?)就会说“停止,不”。当时我从未尝试过通过 DHCP 分配 IP。

意外后果的可能性是巨大的。


有时,很少有类别的网络让您感到困惑。我曾经运行一个192.168.0.0/16的网络,它有很多东西愉快地共存,windows 95,XP,NT4,linux,macs,打印机等。

然后我们得到了一堆 Linksys WRT54GL AP,当与 192.168 一起使用时,它们不会接受大于 /24 的网络掩码。这是因为最初 192.168.0.0 被定义为

256 个连续的 C 类网络

所以网络必须是 256 台主机或更小。这只会出现在一些 linksys 套件中,并且使用 OpenWRT 的 flash 很高兴使用完整的 /16 网络。

结果是 /24 对大多数用户来说已经足够了。A /8 或 /16 是愚蠢的过大。

  • 好吧,整个 127./8 被_官方保留_用于“环回”使用,所以 Windows 被硬编码以兑现这一点,甚至 Linux 也需要一些 sysctl 调整。240./4(又名“E 类”)也是如此,Windows 会拒绝它,因为它从未分配给单播使用(但 Linux 会很好地路由它)。这可能是 IPv6 规范明确指出“*所有*地址空间是单播的,除非另有说明”的原因之一…… (5认同)
  • 有趣的例子,但很多街道号码 > 255 ......即使在我自己的小城市,我自己的街道号码也几乎是它的 3 倍,并且有 [加利福尼亚州托帕兹的一条街道超过 120000](https://www.google.cn)。 com/maps/place/120396+US-395,+Topaz,+CA+96133/@38.6864014,-119.5503689,863m/) (3认同)
  • 我喜欢这样,尽管写“192.168.$((yourstreetnumber % 255)).0””有点难懂,而且更难理解,尤其是对于那些网络/编程背景较少的人。 (3认同)

TOO*_*GAM 8

是的,这是可以做到的。不,你不想。与我看到的其他一些答案不同,我将深​​入研究原因的更多细节(特别是我的第二句话)。

假设您控制一台计算机,您可以设置它的 IP 地址。所以你输入了一个 8.8.8.8 的 IP 地址。你能做到吗?是的。

现在,“路由”可能是一个问题(因为我将在本答案的后面部分详细说明)。但是,可能有办法解决这个问题。因此,假设远程端联系了您的 ICMP 服务器并运行了“ping 8.8.8.8”。您的 ICMP 服务器(通常内置于“TCP/IP 堆栈”软件组件中)会响应吗?是的。没问题。

假设您在这台计算机上启动了一个服务器,例如 DNS 服务器。如果您的计算机正在运行 DNS 服务器并收到响应,它是否可以响应并且一切正常?是的。没问题。

假设您启动了一个 HTTP 服务器。如果另一台计算机打开 Web 浏览器并最终使用 IP 地址与您的计算机通信,那么您的计算机是否可以响应并且一切正常?嗯……嗯……过去的答案是“是”。但是,现在,由于 HPKP,事情变得有点复杂。有关更多详细信息,您可以查看维基百科关于 HTTP Public Key Pinning 的网页]。所以,这可能不太好。总而言之:流行的 Web 浏览器认为这是一种攻击方式,并附带了一些有关某些世界顶级站点的正确 HTTPS 证书/连接的详细信息。另一种相关技术可能是“HSTS预加载”,它与HSTS(“HTTP Strict Transport Security”)有关。因此,当人们安装现代版本的 Web 浏览器时,这些浏览器可能会附带有关某些网站的一些详细信息。如果您的虚假“Google”站点与预期不符,浏览器可能会进行干预(并可能让最终用户知道存在问题)。

而且,正如您所建议的,如果您执行此类操作,将无法通过此 IP 地址联系到合法站点。

现在,我为什么说你不想这样做?

首先,有一个更好的解决方案。让设备依赖 DHCP。然后,在您的本地网络上,在一个合理的地址(例如,FEC0:0:0:ffff::/126 或以 fd 或 fec0 开头的 IPv6 地址)的 DHCP 服务器指向使用本地 DNS 服务器的位置: ,或使用 IETF BCP 5(“RFC 1918”)中的地址范围的 IPv4)。如果您对客户端机器进行标准化,那么移动系统可能会根据需要在远程和本地网络上工作。

按预期做事的最大挑战是路由。如果您在 192.168.55.3/24 设置地址,而另一台位于 192.168.55.105/24 的计算机尝试与您通信,则计算机将识别 /24(也称为 255.255.255.0 的子网掩码)并找出任何匹配前三个八位字节(以“192.168.55.”开头)在本地网络上,将尝试直接通信。

如果 DNS 客户端在 192.168.55.105/24 并尝试与 8.8.8.8 通信,则计算机将识别 8.8.8.8 与前三个八位字节不匹配,因此计算机将尝试将流量发送到网关设备,最常见的是将信息发送到 Internet 的“默认网关”。(这个“网关”设备需要在本地网络上。使用更多的技术术语,网关需要在同一个子网中。)

因此,可以通过三种方法使您的计算机与 8.8.8.8 通信

  • 您可以让您的客户端系统非法使用 8.8.8.0/24 范围。那么 8.8.8.8 似乎很接近。请注意,这会中断与 8.8.8.8 的有效通信,并且您不能同时使用此策略使本地计算机与不同地址位于相同的近距离 IP 范围内。
  • 您可以让您的本地系统使用 192.168.55.105/0 而不是 192.168.55.105/24。这意味着您正在使用 0.0.0.0 的子网掩码,所以现在您已经有效地让您的计算机相信 8.8.8.8 是一个本地地址。因此,通信不会到达您的“默认网关”,而是会尝试直接在您的本地网络上到达 8.8.8.8。如果客户端和服务器都这样做,那可能会奏效。
    • 但是,使用此处显示的极端示例,您所做的有效工作是让您的计算机相信所有 IP 地址都是您本地网络的一部分。因此,这种非法方法现在使受影响的计算机相信整个 Internet 都将像在您的本地网络上一样对待。现在,您不仅没有中断与 8.8.8.8 上的合法 Google 站点的通信,还有效地中断了与 Internet 上所有合法 IP 地址的通信。哎哟。坏的。
  • 您可以在“默认网关”设备上设置一些自定义路由,以便将发送到 8.8.8.8 的信息重定向到您想要的本地 IP 地址,而不是传递到您的 Internet 服务提供商。

虽然理论上第三种方法可以在没有太多问题或不必要的副作用的情况下工作,但最大的缺点是它需要您处理流量路由。如果你要搞砸一些东西,我建议你先理解它。

作为了解流量路由的人,我建议您可能需要一些专业知识才能成功断开您想要的合法连接(到真正的 8.8.8.8),同时又不断开您不想断开的合法连接。如果您有足够的专业知识来实现​​这一点,那么您可能也有一些专业知识可以在已建立的私有地址上简单地运行 DNS 服务器。那么,为什么不以标准化的方式做事,这样不太可能导致难以预见和排除故障的奇怪的罕见副作用?

为了回答您提出的问题以及您提出的问题,是的,从技术上讲,这样的事情是可能的。但也请记住,如果通信没有进行到它应该去的地方,那么这通常被描述为“中间人”(“MITM”)攻击。Web 浏览器连接已经发展到支持 HKPK 以击败此类恶作剧。一个鲜为人知的事实是,DNS 在很大程度上已被使用 EDNS(使用“DNS 扩展机制”)所取代,而一个更广为人知的事实是 DNS 安全性有一些更新的增强功能,称为 DNSSec。如果您对此一无所知,那么请意识到当前流行的基于 Internet 的软件代码的维护者可能已经领先于您,因此您可能需要在尝试包含“中间人攻击”之前牢记这一点

所以,总而言之,我认为您不想在真实网络(而不是您正在探索可能性的测试实验室)上这样做的主要原因很简单,为了实现有用的合法目标,有一个更好的方法. 也就是说,当您尝试设计网络的行为方式时,请以正确的方式做事。总体而言,您可能会减少疼痛。

重新澄清一下,以防忘记,我所指的“正确方法”是在私有地址上运行本地 DNS 服务器,不要愚弄任何人,并鼓励计算机使用本地私有地址或依赖 DHCP,并让您的本地 DHCP 服务器告诉设备依赖您的本地 DNS 服务器。这是一种更诚实的设计风格,不会破坏与公共站点通信的能力,并得到广泛支持,因此互联网标准的维护者不太可能在整个使用的许多本地网络上做一些破坏这种合法设计的事情。世界。