普通计算机的静态和公共IP地址

问题描述 投票:-2回答:1

我想使用WebRTC在浏览器上做一个消息传递应用程序,但是我想摆脱所有第三方,例如STUN和TURN服务器(我也想摆脱信令服务器,但首先要考虑的事情)。我希望用户以键值方式将他们的联系人保留在浏览器localStorage中:人的名字=> IP地址。

我并不在乎如何用户找到自己的公共IP地址(他们可以执行ipconfig,因为没有Web API可以检索它),也如何分发(他们可以使用Messenger等集中服务将其公共IP地址提供给朋友,也可以使用名片上的QR码。]

但是我主要的问题是我希望这些公共IP地址是静态的,因为我不想每次网关更改我的公共IP地址时都通知所有朋友更新他们的联系文件。

在IPv4中,可用地址太少(只有40亿个),因此公共静态地址全部保留给网站和住宅网关。每当我想访问Internet时,我的网关都会为我的计算机打开一个特定的端口。例如,如果我的网关具有公用地址1.2.3.4,则我的计算机的“公用地址”将临时为1.2.3.4:3000。此过程称为NAT。要找到一个人的“公共地址”,必须向STUN服务器发送一个请求,该服务器将以什么IPv4地址和它看到的端口作为响应。但是网关有时会关闭端口的连接,因此这不是我想要的公共静态地址。

但是在IPv6中,情况有所不同,可能的地址数量非常高(2 ^ 128),因此从理论上讲,我们可以为世界上的每台计算机提供一个静态的公共地址。 NAT基本上是没有用的(我在这里不是在谈论防火墙)。但是同样存在一个问题,在IPv6中,您有一个静态但非公共的地址,而您有一个或多个公共但非静态的地址。因此,IPv4并没有真正改变,仍然无法解决我的问题。

我有2个问题:

  • 如何为普通计算机提供公共和静态地址?我不希望我的用户介入他们的路由器/ ISP或在他们的计算机上安装任何东西。
  • 为什么我们所有人都没有静态和公共IPv6地址?这背后有设计选择吗?

谢谢您的帮助。

webrtc ipv6 p2p nat ipv4
1个回答
4
投票

您的问题实际上不是编程问题,所以我假设您需要知道这一点,因为您正在开发使用IPv6的软件。从应用程序的角度来看它:

  1. 您不需要TURN即可发现您自己的公共地址。如果没有NAT,则您的地址不会被网络更改,您的本地地址就是您的公共地址。您只需要让您的软件询问操作系统当前配置的地址是什么即可。

  2. 使用IPv6,通常不是网关向连接的设备提供地址。网关仅将网络前缀(/ 64)传送到网络,并且所有设备都选择自己的地址(每个设备通常有多个地址)。

DHCPv6确实存在,但是通常不用于在设备上配置IPv6地址。它可以在无状态模式下用于配置域名,DNS解析器等,但这与分配地址无关。

因此,设备在网关传达的前缀内选择自己的地址。如何选择?

最初,设备使用其接口MAC地址作为后缀(使用改良的EUI-64算法)。这样的问题是,例如,如果有一圈,您连接到的在线服务可能会跟踪您的设备。因为无论您连接到哪个网络,地址的后64位都将包含您的唯一MAC地址。这样就可以跟踪您的设备,从工作场所到家,到您喜欢的咖啡厅等。

这些天,操作系统使用隐私扩展来使您的IPv6地址不可追踪。通常,有一个稳定的地址链接到网络前缀,因此,每次连接到同一网络时,您都会获得相同的地址。该地址对于点对点通信很有用。

但是他们走得更远。通常还存在一组(半)随时间随机更改的隐私地址。您的设备可能每天甚至可能每小时生成一个新地址。这使得在线服务更加难以确定是否有一个设备更改了其隐私地址,或者是否有多个设备。由于此地址会随着时间而变化,因此对于短时间的出站连接很有用,但接受入站连接的用处不大。为此,请使用我在上一段中提到的稳定地址。

可能最困难的一点是如何向操作系统询问可用地址。看我自己的macOS盒子,我看到:

en2: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether c8:e0:eb:5c:af:61
    inet6 fe80::1074:8568:e447:d9e3%en2 prefixlen 64 secured scopeid 0x12
    inet6 2a02:xxxx:xxxx:xxxx:3e:873f:837:1417 prefixlen 64 autoconf secured
    inet6 2a02:xxxx:xxxx:xxxx:b19c:71c5:1de8:8fde prefixlen 64 autoconf temporary

您可以同时看到长期secured地址和短期temporary地址。

在不知道您要开发哪种操作系统以及使用哪种编程语言的情况下,我无法为您提供进一步的帮助。请调整您的问题以包含该信息。

© www.soinside.com 2019 - 2024. All rights reserved.