引言
在日常开发和生活中,往往会遇到人在外面访问不了家里面设备的情况,毕竟不是人人都有公网ip的,那遇到这种情况应该怎么办呢?这篇文章我将会详细说明"组网”这个技术以及拓展玩法。
准备工作
首先,组网过程简述为就是将不同网络环境的设备通过打洞组成一个新的局域网,并为每个设备分配局域网ip。听起来不是很复杂,实际上整个过程也不复杂。在准备工作开始之前,你需要准备一台带有公网ip的vps,以及由于组网的工具,这里我们使用一个叫做easytier的工具,可前往github进行下载,https://github.com/EasyTier/Easytier 这个工具我实际用下来非常的稳定,而且多端支持,无论windows电脑,linux,Macos,Anroid,iPhone甚至鸿蒙系统,都能下载并使用,配置简单稳定,用着不烧心。
正文
首先回答一个问题,就是为什么需要一个带有公网ip的服务器?原因很简单,我们自己的设备如果异地的话,都是处于不同网络环境,这就面临一个问题,每个设备都只能主动访问其他ip,却不能被其他设备主动访问。那还怎么让两个设备通过打洞相连?在这里云服务器就作为牵线搭桥的作用了,让不同网络环境下的设备都找到彼此的位置从而实现连接。在连接完成之后服务器也就闲置了。一种情况除外,那就是打洞失败,这种流量就是走服务器中转了,如果服务器在境外,那体验效果就没那么好。
接下来开始详细教程,首先配置服务端的。
服务端配置:
这里用docker来进行配置,先拉取此程序最新镜像然后启动容器。进入/easytier/data文件夹下找到config.toml文件,然后填写如下配置。
instance_name = "relay"
hostname = "vps-relay"
# 共享节点不需要虚拟 IP,这两行都不要写 ipv4
dhcp = false
rpc_portal = "127.0.0.1:15888"
listeners = [
"tcp://0.0.0.0:11010",
"udp://0.0.0.0:11010",
]
[network_identity]
network_name = "占位符"#<--这里填写网络名称
network_secret = "占位符"#<--这里填写复杂的密码
[flags]
private_mode = true
relay_all_peer_rpc = true记得把安全组或者防火墙里面相应的端口方向,不然是连不上的。改完之后保存重建容器,至此服务端就配置完成了。
客户端配置:
这里同样以Linux系统举例子(其他系统的都有可视化界面,照着填就行,不是很难,不多赘述),同服务端的安装过程,然后找到config.toml,填写以下配置:
instance_name = "default"
hostname = "nas"#<--记得换个新名字作为区分
dhcp = false
ipv4 = "10.126.126.10"#<--这里填写虚拟ipv4,换成你自己的,但注意不要和已有的局域网ip重复,不然会排斥
rpc_portal = "127.0.0.1:15888"
listeners = [
"tcp://0.0.0.0:11010",
"udp://0.0.0.0:11010",
]
[network_identity]
network_name = "占位符"#和服务端名字保持一致
network_secret = "占位符"#同上
[[peer]]
uri = "tcp://服务器ip:11010"
[[peer]]
uri = "udp://服务器ip:11010"改完之后保存重建容器,至此客户端就配置完成了。现在你只要打开这个工具,再ping这个局域网ip就能通了。从而实现异地访问家里面的设备。
更多玩法:
想建站但是云服务器价格太贵不划算怎么办?这时候就可以通过组网来实现所有业务逻辑跑在家里面nas上,仅把访问入口放到云服务器上。具体流程就是,先完成组网,然后在云服务器上配置好nginx,域名证书等建站所需材料。然后使用nginx反向代理,代理地址不要填127.0.0.1:端口号,而是填nas的虚拟局域网ip:端口号。这样即使云服务器只有1G内存也能流畅的实现建站。使用过程中需确保家里面的网络通畅,设备稳定。
总结:
熟练的通过工具组网可使开发过程和生活更加方便。