整个互联网的通信,可以比作一套精准的点对点快递系统:
你拥有一个唯一的门牌地址(例如 123.123.123.123),而你的朋友也有一个唯一的门牌地址(例如 124.124.124.124)。你们之间的每一次通信,都如同寄送快递——
当你需要传输数据时,就将它们打包进“快递袋”,在收件地址一栏填上朋友的地址(124.124.124.124),这样数据便能准确送达对方手中。同样,对方向你发送信息时,也只需将他的数据装入包裹,写上你的地址(123.123.123.123),你便能顺利接收到。
通过这样简洁而高效的机制,互联网实现了数据在全球范围内的准确传递与交换。
而这套地址系统就是IPv4,它总共能提供大约43亿个全球唯一的“门牌号”。以今日互联网的规模来看,这个数量显然早已无法满足需求。那该怎么办呢?因此,NAT(网络地址转换)技术应运而生。
简单来说,NAT 技术将原来“每台设备一个公网IP”的模式,转变成了“一个家庭共享一个公网IP”。然而,随着联网设备持续爆炸式增长,IPv4 地址资源进一步枯竭。如今,许多情况下已演变为“整个小区共享一个公网IP”,甚至是“一片区域共享一个公网IP”。
虽然 NAT 技术暂时缓解了地址不足的问题,但也带来了新的挑战:我们失去了“被直接寻址”的能力。当外部网络试图访问我们家庭网络中的某一台设备时,请求只能到达整个小区或片区共享的那个公网 IP,却无法进一步定位并连接到我们家庭内部的具体设备。
当然,除了NAT技术,还有更根本的解决方案:那就是全新的IPv6。它提供了近乎无限的地址空间,彻底解决了地址枯竭的难题。
不过,尽管这一方案前景广阔,但其目前任然面临一些现实挑战。首先,IPv6的128位地址长度远超过IPv4,这使其在记忆和管理上的便利性有所降低。更重要的是,当前整个互联网生态向IPv6的过渡尚未完成,仍有大量网络、设备和服务未能完全接入或支持IPv6,这在一定程度上延缓了其全面普及的进程。
说了这么多,那么如何在外部网络直接访问家中的设备呢?
这背后的关键,就是内网穿透。目前,主流的实现方式可以归纳为以下四种:
1.服务器转发:通过一台具有公网IP的服务器进行“中转”,稳定可靠,是技术玩家的首选,但部署需要一定成本,且速度受限于云服务器的带宽。
2.IPv6直连:如果运营商和设备都支持IPv6,相当于每个设备都有了“公网门牌号”,可以实现点对点直连,速度最快,但IPV6直接暴露在公网上,有一定风险。
3.P2P组网:使用软件创建一个虚拟局域网,让所有设备仿佛在同一内网,但是受限于你的NAT网络,稳定性不是很好,想要稳定还是要交出钞票。
4.厂商服务:使用一些厂商等提供的软硬件一体化服务,操作最简单,适合不想深入配置的用户,但免费版限制严格,体验不佳。
所以我选择的方案就是服务器转发和IPV6直连。
选择服务器转发的理由:既然决定投入,不如直接部署自己的云服务器。资源完全自主可控,所有配置尽在掌握——对技术玩家而言,这种纯粹的掌控感,本身就是一种乐趣。
选择IPV6直连的理由:要的就是最低成本和最高效率。直接启用IPv6直连,让数据点对点传输,不仅能最大程度利用网络带宽,还能获得接近本地访问的稳定性,省去一切中间环节。
为了实现内网穿透,我们需要准备以下工具及服务:
服务器转发方案:
1.云服务器,我们这里使用雨云的海外服务器。国内服务器通常带宽成本较高且需要备案,因此选择香港地区的云服务器可在保障访问速度的同时,避免不必要的流程负担。
2.Frp,它是免费开源内网穿透工具,设置简单,易于上手。
3. istoreOS软路由,通过 istoreOS,来安装并运行 frp 客户端。
4. XTerminal,对云服务器的 SSH 连接与管理。
IPV6 直连方案:
1.iKuai软路由,用来设置动态域名解析。
2.一个域名,通过域名访问代替IPv6 地址,提升可用性。
3.Cloudflare账号,用来配合iKuai系统解析IPv6地址。
服务器转发内网穿透方案:
第一步:购买云服务器
打开雨云官网https://www.rainyun.com/OTA5MDE3_
这个链接包含我的优惠码,首月可以获得5折优惠券
注册一个账号
选择云产品-找到云服务器-点击立即购买
系统就选择ububtu 22.04
购买完成之后进入到服务器管理页面,可以看到服务器的管理信息
将信息复制到SSH管理工具
连接到服务器第一步我们就完成了
第二步:部署Frp
复制一件安装脚本:
wget https://raw.githubusercontent.com/mvscode/frps-onekey/master/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install
因为上面是一次新复制了三条命令来执行,所以看到以下画面时,需要继续点击回车执行
代码拉取完成后,会出现提示询问你是否安装,输入y回车执行
出现frps download这里需要选择2(红框中),please input your server srtting以下的信息除了账号密码自己设置一下(绿框中)其他的一律全部回车默认就可以了
一路回车默认下来会得到这样一个画面(出现红框中的字样),这里继续回车就可以
这里把配置信息全部复制到记事本保存起来
第三步:设置Frp客户端
打开istoreos页面并点击istore商店,安装Frpc客户端
来到Frp客户端设置IP地址、端口、令牌(token就是令牌)
输入令牌
保存设置(我不知道为什么我点页面最下面的保存不管用,要点页面上放右侧的未保存的设置,才能正常的保存设置)
添加新的代理
输入相关代理的信息(本地IP就是这个服务在我们本地的IP、本地端口就是这个服务在我们本地的端口,比如istoreos用网页打开是http协议那么就是80端口、远程端口就是你想映射到服务公网IP的那一个端口上,访问地址就是公网IP:2520)
依旧页面右上角保存
服务端验证是否在线,这里已经显示online在线,说明连接已经成功
检查是否可以用公网IP打开istoreos
以上添加新代理全过程已经讲明白了,如果你还需要部署其他内网服务上公网,那么就按照添加新代理这个步骤添加相应的服务
第四步:测试连接速度
打开fnos下载一个文件试一下,30Mbps的带宽也是可以跑满的,速度方面还是非常不错的
到这里关于Frp内网穿透的全部内容就结束了,如果你选择了这种方式,那么就没有必要接着往下看了。如果你对这种方式不满意,那么就接着向下浏览。
IPV6直连内网穿透方案:
第一步:注册域名
打开dynadot官网:https://www.dynadot.com/domain/search?rscreg=onianbai
注册一个账号,搜索一下你想注册的域名。这个服务商对国内用户是非常友好的,页面是可以直接选择全中文化的,也支持支付宝付款,有在线的中文人工客服,响应也非常迅速。我买的com域名,我对比了一下也是最便宜的。关于为什么不用国内注册商,第一时价钱比这贵一点。第二是国内注册商注册域名又是实名认证,又是域名审核啥的,非常麻烦,海外注册商直接用的方式我是更加喜欢的。
这里可以选择最便宜的的域名然后不续费,每年换一个,这样每年就只需要几块钱,当然想长期使用不单单作为穿透域名使用的朋友就可以选择com、org、net后缀的这些域名,这里的续费对比一下还是便宜一点的
第二步:将DNS解析服务器配置到Cloudflare
首先你需要有一个cloudflare账号,打开cloudflare官网https://www.cloudflare.com/国内用户也可以使用这个链接https://www.cloudflare-cn.com/
注册好账号之后,将刚才注册的域名加入到cloudflare
输入我们的域名,就可以进行下一步了
选择Free免费计划就可以了,因为我们只是需要用到cloudflare的DNS服务
这里就点击继续前往激活就可以了(因为nianbai.com我已经加入cloudflare了,所以CN域名是做演示的)
这里会给你相应的DNS服务器地址,这个页面先不要关掉
回到dynadot,点击设置域名的DNS服务
将现有的DNS服务器地址替换成cloudflare提供的DNS服务器地址,保存域名服务器即可。
接着回到cloudflare查看域名是否变为活动状态了,如果是活动状态代表该域名已经接入cloudflare了,有些时候更换域名服务器的过程可能要多等一会,如果比较慢的话就先去做点别的事情。
第三步:iKuai系统配置IPV6
打开iKuai管理后台-网络设置-IPV6-IPV6设置,将外网接口的配置启用
配置内网接口-点击内网接口的添加-选择外网线路-保存
刷新网页此时iKuai已经获取到IPV6了
点击DHCP v6终端查看到网络中的设备也获取到IPv6了,如果你的设备没有被正常获取到IPv6,重启你的设备。(比如你的电脑没有获取到,那么就重启一下你的电脑)
第四步:配置动态域名解析
第五步:IPV6直连测试