前言
前一段时间在水群的时候发现有位群友,分享了一个IPV6的应用。我觉得非常有趣,特此借助这个机会来分享给大家。本文章的主要目的是给大家提供一种远程访问的思路使其可以拓展到自己的产品或者应用上。
IPV6和IPV4简介
IPv4(Internet Protocol version 4)是一种 32 位的 IP 地址协议,通常由 4 组 0~255 的十进制数字组成,例如 192.168.1.100,地址总量约 43 亿,其中常见的私有地址范围有 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16,用于局域网通信;IPv6 是 IPv4 的升级版本,采用 128 位地址,由 8 组十六进制数表示,例如 2001:db8:1234::1,地址数量约为 3.4×10³⁸,常见的公网地址范围是 2000::/3,链路本地地址为 fe80::/10,本地私有地址为 fc00::/7,本机地址为 ::1。相比 IPv4,IPv6 地址空间更加充足,通常不需要依赖 NAT。 (上面这段话来自Chatgpt的回复)我本科的时候学习过网络管理,路由和交换。简单点来说如果你想让在互联网或者局域网上访问你的设备的话,你的设备需要一个唯一的门牌号。这也就是IP地址。通常IPV4是32位,也就是可以组成255.255.255.255 除了一些特殊的保留地址的话,其他的地址可以被用于描述设备。但是它通常有限。很多年前都一直有说IP地址要用完了。值得就是IPV4. 而对于IPV6它则是有128位。所以基本上地球上每一个沙子都能被分配一个唯一的地址。在本文章中我们主要探讨IPV6技术。
在Windows电脑中我们可以使用Ipconfig的命令从CMD中查询本机的IP信息
C:\Users\23391>ipconfig Windows IP 配置 以太网适配器 以太网: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 11: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 12: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 WLAN: 连接特定的 DNS 后缀 . . . . . . . : lan IPv6 地址 . . . . . . . . . . . . : 2001:e68:545a:6e7d:3757:225b:3b80:5cfe IPv6 地址 . . . . . . . . . . . . : fd9d:bb76:ac5c:0:b575:3d48:9dee:7eaa 临时 IPv6 地址. . . . . . . . . . : 2001:e68:545a:6e7d:5cdf:b4e4:a864:c358 临时 IPv6 地址. . . . . . . . . . : fd9d:bb76:ac5c:0:5cdf:b4e4:a864:c358 本地链接 IPv6 地址. . . . . . . . : fe80::cd79:b00:1db7:2ff%12 IPv4 地址 . . . . . . . . . . . . : 192.168.1.163 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : fe80::5233:f0ff:feee:bba8%12 192.168.1.1 以太网适配器 蓝牙网络连接: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : C:\Users\23391>
可以看到、上述我的IPV6的地址是
IPv6 地址 . . . . . . . . . . . . : 2001:e68:545a:6e7d:3757:225b:3b80:5cfe
按道理而言,我们可以来尝试访问这个地址从而来访问我本机部署的服务。为了让实验更加直观。我将在本地启动一个最简单的PY服务来使其可以访问我本机的文件夹。

此时我们可以通过127.0.0.1:8000来访问我的本地文件夹,如下所示

但是如果我们想通过IPV6访问的话该怎么办呢?我们可以使用以下的地址
http://[2001:e68:545a:6e7d:3757:225b:3b80:5cfe]:8000
注意:使用IPV6的时候地址需要使用方括号括起来
此时我们可以发现我们访问了同样的文件。接下来我们尝试用手机(连接到和电脑相同的WIFI)来访问我们的文件

可以从上图中看到,我们也是成功的访问了。但是这样的访问有一个前提是即:你的设备必须和你的宿主机处于相同的lan内。那这不就是和LAN一样了吗? 我们不是可以直接使用局域网的IP访问不是更方便吗? 有没有什么办法可以使其手机使用移动网络也可以访问呢?有的!
下图为使用手机移动网络尝试访问
我们可以看到,上述我们其实已经访问成功了、宿主机已经有回应了。但是宿主机的回应是拒绝了我们的请求。那怎么办呢?这时候我们就需要打开我们的路由器设置,来在对应的网络规则中配置IPV6转发。

我这里的路由器刷的是ImmortalWrt,其他的路由器也是大同小异。这里拿ImmortalWrt举例,在网络防火墙中配置通信规则。

其主要目的是添加一个从Wan到Lan的转发,目标地址为我们的宿主机的IPV6地址,和我们开放的端口。

然后便保存当前的应用配置,并且等待生效。这时我们可以使用手机刷新一下刚才我们访问的IPV6的地址。

这样即可打开了IPV6的访问,可以从手机上方的图标中看到当前并没有使用WIFI连接。所以也就意味着你现在可以在全球各地来访问你的宿主机。 我们可以拓展一下IDEA,如果我们在宿主机启动了一个服务然后使其可以直接通过某种协议来控制你的IOT设备的话是不是很NICE?
总结
通过这次实验可以看到,IPv6 可以让设备直接拥有公网地址,从而实现远程访问。我们先通过 Python 启动一个简单的文件服务,再利用公网 IPv6 进行访问,最后通过路由器配置防火墙规则,让手机使用移动网络也能够访问电脑上的服务。
这个方法其实还有很多拓展空间,比如远程访问 NAS、部署 Web 服务,甚至控制 IoT 设备。不过在实际使用时,也需要注意防火墙和访问权限,避免把不必要的服务直接暴露到公网。
注意:IPV6地址并非永久不变,在B站上有博主测试过,基本上如果不重启光猫设备的IPV6地址并不会发生变化。如果需要动态解析的话则是需要DDNS技术
我要赚赏金
