没有互联网的情况下可以使用全球 IP 地址吗?
显然,私有 IP 地址应该在没有互联网访问的情况下使用。但我很好奇我们是否可以将任何 IP 地址用作私有 IP。可以这样做吗?
例如,我们可以在私有网络中使用 8.8.8.8 作为私有 IP 地址吗(该网络永远无法访问互联网,因此网络中的任何人都不知道 8.8.8.8 被用作 Google DNS)?
答案1
这绝对是可能的——IPV4 空间并没有什么神奇之处,一切都以相同的方式运作。当这个网络融入互联网后,麻烦就会随之而来。
答案2
是的,这是可能的,但不推荐。
相反,您应该使用 RFC1918 分配的块,并尽可能使用较小的网络。避免将 10.0.0.0/8 用于包含少量设备的家庭网络。
更多详情请访问https://www.rfc-editor.org/rfc/rfc1918及其替代https://www.rfc-editor.org/rfc/rfc6761
一个好的经验法则是使用网络大小为该网络可运行的最大设备数量的 4 倍,或 /24(254 台主机),以较大者为准。/24 还可以简化子网划分。
因此使用 10.yourstreetnumber.yourbirthyear.0 或 192.168.yourheightincm.0 发挥创意!
如果您要创建站点到站点的 VPN,请考虑将 172.16 至 31.0.0 范围作为候选 - 因为它有点混乱,因此较少使用。
不使用现有公共范围的另一个原因是 DNS 缓存可能会扰乱更改网络的设备。例如,笔记本电脑、手机和平板电脑可以将“dns.google.com”缓存为 8.8.8.8,并在连接到您的 LAN 后继续使用该记录。或者有人回家了,您的主机名“fileserver.local”解析为 8.8.8.8 可能会被缓存到记录的 TTL 为止。
愚蠢的 IP 重用示例 - 在使用 vmware 工作站的时代,我尝试使用 127.99.99.0/24 作为 IP 网络,因为它比应用于环回接口的 127.0.0.0/8 更具体。
这对于 vmware 和 linux VM 来说非常完美。但是,只要您在 IP 地址的第一个八位字节中输入 127,Windows(xp?)就会说“停止,不行”。我当时从未尝试过通过 DHCP 分配 IP。
出现意想不到的后果的可能性是巨大的。
有时(很少见),有类网络会让您陷入混乱。我曾经运行过一个 192.168.0.0/16 的网络,它让许多东西愉快地共存,包括 Windows 95、XP、NT4、Linux、Mac、打印机等。
然后我们得到了一堆 Linksys WRT54GL AP,当与 192.168 一起使用时,它们不会接受大于 /24 的网络掩码。这是因为 192.168.0.0 最初被定义为
256 个连续的 C 类网络
因此网络必须为 256 个主机或更小。这只出现在一些 linksys 套件中,而 OpenWRT 的闪存很乐意使用完整的 /16 网络。
结果是 /24 对大多数用户来说已经足够了。/8 或 /16 则太大了。
答案3
是的,可以这样做。不,你不想这样做。与我看到的其他一些答案不同,我即将深入探讨更多原因(尤其是我的第二句话)。
假设你控制一台计算机,你可以设置它的 IP 地址。因此你输入 IP 地址 8.8.8.8。你能做到吗?可以。
现在,“路由”可能是一个问题(我将在本回答的后面部分详细说明)。但是,可能有办法解决这个问题。假设远程端联系了您的 ICMP 服务器并运行了“ping 8.8.8.8”。您的 ICMP 服务器(通常内置于“TCP/IP 堆栈”软件组件中)会响应吗?是的。没问题。
假设您在这台计算机上启动了一台服务器,例如 DNS 服务器。如果您的计算机正在运行 DNS 服务器并收到响应,它能否响应并且一切正常?是的。没问题。
假设你启动了一个 HTTP 服务器。如果另一台计算机打开了 Web 浏览器并最终使用 IP 地址与你的计算机通信,那么你的计算机能否响应并且一切正常?嗯……好吧……以前的答案是“是”。但是,现在,由于 HPKP,事情变得有点复杂。有关更多详细信息,你可以查看维基百科关于 HTTP 公钥固定的网页]。因此,这可能不太有效。总结一下:流行的网络浏览器认为这是一种攻击方式,并附带了一些有关某些世界顶级网站的正确 HTTPS 证书/连接的详细信息。另一种相关技术可能是“HSTS 预加载”,它与 HSTS(“HTTP 严格传输安全”)相关。因此,当人们安装现代版本的网络浏览器时,这些浏览器可能会附带一些有关某些网站的详细信息。如果您的假“Google”网站不符合预期,浏览器可能会进行干预(并可能让最终用户知道问题)。
而且,正如您所说,如果您执行此类操作,则无法通过此 IP 地址联系合法网站。
现在,为什么我说你不想这样做?
首先,有一个更好的解决方案。让设备依赖 DHCP。然后,在您的本地网络上,使用 DHCP 服务器将使用本地 DNS 服务器的位置指向合理的地址(例如,FEC0:0:0:ffff::/126 或以 fd 或 fec0: 开头的 IPv6 地址,或使用 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 与前三个八位字节不匹配,因此计算机将尝试将流量发送到网关设备,最常见的是将信息发送到互联网的“默认网关”。 (此“网关”设备需要位于本地网络上。 使用更专业的术语,网关需要位于同一子网中。)
因此,有三种方法可以让您的计算机与 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 地址都是您本地网络的一部分。因此,这种非法方法现在已经让受影响的计算机相信整个互联网都应像在您的本地网络上一样对待。现在,您不仅没有切断与 8.8.8.8 合法 Google 网站的通信,反而有效地切断了与互联网上所有合法 IP 地址的通信。哎哟。糟糕。
- 您可以在“默认网关”设备上设置一些自定义路由,这样发送到 8.8.8.8 的信息就会重定向到您想要的本地 IP 地址,而不是传递到您的 Internet 服务提供商。
虽然从理论上讲,第三种方法可以行之有效,不会出现太多问题或不良副作用,但最大的缺点是它要求你对流量路由进行一些调整。如果你要进行一些调整,我建议你首先要充分理解它。
作为一个了解流量路由的人,我建议你可能需要一定的专业知识才能成功断开你想要的合法连接(到真正的 8.8.8.8),同时又不断开你不想断开的合法连接。如果你有那么多专业知识来实现这一点,那么你可能也有一些专业知识可以在已建立的私有地址上运行 DNS 服务器。那么,为什么不以标准化的方式做事呢?这种方式不太可能导致难以预见和排除的奇怪罕见副作用?
回答您的问题和提问方式,是的,从技术上讲,这种情况是可能发生的。但请记住,如果通信没有到达应到达的地方,那么这通常被称为“中间人”(“MITM”)攻击。Web 浏览器连接已经发展到支持 HKPK 来击败此类恶作剧。一个鲜为人知的事实是,DNS 已被 EDNS(使用“DNS 扩展机制”)取代,而一个更广为人知的事实是,DNS 安全性有一些较新的增强功能,称为 DNSSec。如果您不知道这些,那么请意识到,当前流行的基于 Internet 的软件代码的维护者可能已经远远领先于您,因此在尝试将“MITM 攻击”作为您所监督的任何网络的某种新奇设计的关键部分之前,您可能需要记住这一点。
因此,总结一下,我认为您不想在真实网络(而不是您正在探索可能性的测试实验室)中这样做的主要原因很简单,那就是,为了实现有用的合法目标,有更好的方法。也就是说,当您尝试设计网络的行为方式时,请以正确的方式行事。总体而言,您可能会经历更少的痛苦。
为了避免忘记这一点,我再次澄清一下,我指的“正确方法”是只在私有地址上运行本地 DNS 服务器,不欺骗任何人,并鼓励计算机使用本地私有地址或依赖 DHCP,并让本地 DHCP 服务器告诉设备依赖本地 DNS 服务器。这是一种更诚实的设计风格,不会破坏与公共站点通信的能力,并且受到广泛支持,因此互联网标准的维护者不太可能在世界各地使用的许多本地网络上做出破坏这种合法设计的事情。
答案4
从理论上来说,这样应该没问题。
在实践中:
可能会打破第三方的假设。
您可能会使用假设某些众所周知的 IP 约定会成立的软件/硬件,而当您打破这些假设时就会导致意外行为。可能会触发隐藏的错误。
一些有缺陷的软件在大多数情况下都能正常工作,但奇怪的细节可能会触发它们。这些错误可以在发现时得到修复,但如果您使用非标准配置,遇到其他人以前没有机会遇到的错误的可能性可能会增加。可能会使与您的网络合作的其他人感到困惑。
即使您能记住这8.8.8.8
在内部网络中意味着其他东西,这也可能会让其他人感到困惑。同事、技术支持、阅读您可能在帮助论坛上分享的日志的人员等可能会对此感到困惑。可能会在缓存中产生矛盾。
如果您网络上的任何设备以前都连接到全球互联网,则它们的设置、防火墙规则等中可能存储了 IPv4 地址,这可能会导致它们加入本地网络时发生不必要的冲突。
理论上,第三方设计不佳和漏洞可能不是你的错。但实际上,你可能会开始相信鬼魂的存在。