基于个人服务器的P2P内网穿透

这篇具有很好参考价值的文章主要介绍了基于个人服务器的P2P内网穿透。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

作为一个重度桌游爱好者,最近和小伙伴沉迷TTS(桌游模拟器),但是TTS是基于P2P进行连接的,如果小伙伴都不在一个网络节点上就会非常卡顿,为了更好的玩游戏,最后使用了基于zerotier的内网穿透方案

基于个人服务器的P2P内网穿透

用上了内网穿透之后,再也不会掉线了,桌游体验极其完美

  1. 原理
  2. 购买服务器
  3. zerotier虚拟节点搭建
  4. 服务器运维
  5. 客户端配置

原理

我只是前端,具体的运维技术我不是太了解,但是大致原理可以理解为:

1.P2P

P2P是用户与用户直连,某一个玩家作为主机,其他人去连接他的节点

但是我们都知道,这很取决于主机玩家的网络状况,而且因为是直连,延迟非常感人

基于个人服务器的P2P内网穿透

只要主机玩家网络一波动,大家就都掉线了

 2.内网穿透

内网穿透就是我们所有客户端去连接一个节点,然后通过这个节点分发数据,进行直连

这个节点就是zerotier

但是zerotier服务器在国外,直连的话网速感人,我们就需要我们的个人服务器作为一个中转站,所有客户端连我们的国内服务器,服务器加速客户端之间的互相访问(因为服务器是公网ip,直连延迟就非常低)

购买服务器

本人用的阿里云个人服务器,基于linux和node搭建的后端,带宽不需要很高即可

购买服务器的可以参考我写的 

个人网站搭建保姆级教程(1)-服务器购买与环境搭建_皮宁澜的博客-CSDN博客

zerotier虚拟节点搭建

zerotier可以理解为一个简单的内网穿透管理器,方便我可爱的小伙伴们快速连接到我的服务器,实际传输其实是靠我们的服务器的

1.zerotier注册

ZeroTier Central

基于个人服务器的P2P内网穿透

zerotier的官网非常简洁轻快

之后点击 Create A Network,选择private(个人服务器)

基于个人服务器的P2P内网穿透 根据不同需求,zerotier支持创建很多个NETWORK

这样你就相当于有了一个内网穿透的账户,而且会生成一个NETWORK ID,将ID复制下来

2.服务器连接

之后在服务器配置zerotier,对于一般的linux系统,只需要一串命令就好

curl -s https://install.zerotier.com | sudo bash

以管理员身份在服务器上安装zerotier

其他操作系统可以访问

Download – ZeroTier

下载好后,我们就可以进行登陆了,linux输入

zerotier-cli join XXXXXXXX  #刚刚在zerotier官网上创建生成的NETWORK ID

最后,我们还要去zerotier官网上将我们刚刚join的操作进行一个通过 

基于个人服务器的P2P内网穿透

第一个设备为我的个人电脑测试用,第二个设备为我的服务器,一直保持运行状态,实际运用只需要服务器保持连接就好

服务器运维

现在服务器已经连接到zerotier了,但是还需要配置一下客户端文件

打开服务器的zerotier目录(如果是linux系统,在/var/lib/zerotier-one)输入

zerotier-idtool initmoon identity.public >>moon.json

 这样会生成一个卫星服务器(moon)的配置文件moon.json

我们通过记事本打开moon.json,将其中的

 "stableEndpoints": [  ]

改为

 "stableEndpoints": [ XXX.XX.XX ]  //你的服务器的公网IP

改好后新JSON文件覆盖原来的JSON文件

覆盖好后执行命令

sudo zerotier-idtool genmoon moon.json

这样,zerotier会读取我们刚刚的moon.json并生成一个.moon文件,我的是00000039c1ef6855.moon(每一个机器生成的moon文件不一样)

我们需要将这个.moon文件保存一下,等一下客户端会用到

最后,我们只需要重启一下我们的崭新出厂的卫星服务器就好了

在我们刚刚的 /var/lib/zerotier-one 文件夹下面,手动创建一个新文件夹moons.d,将刚刚生成的 .moon文件放进去

基于个人服务器的P2P内网穿透

其他操作系统在对应的zerotier文件夹里面

然后重新启动我们的zerotier服务即可

service zerotier-one restart 

 

客户端配置

客户端的配置就很简单了,而且是一次配置,终身享用,开机即启,无感直连。

1.下载zerotier并安装

Windows系统:

官网下载Download – ZeroTier

linux系统:(终端执行)

curl -s https://install.zerotier.com | sudo bash

如果下载速度慢可以直接网上找下载包

2.拿到刚刚服务器上生成的.moon文件

(1)客户端是linux系统

把.moon文件放到对应zerotier文件夹下新建的moons.d文件夹里面,执行命令

service zerotier-one restart

基于个人服务器的P2P内网穿透

 (2)客户端是Windows系统

打开计算机中的‘服务’

基于个人服务器的P2P内网穿透

找到zerotier服务,右键,点击属性,打开zerotier目录

基于个人服务器的P2P内网穿透

 基于个人服务器的P2P内网穿透

 找到这个地址,打开这个地址(默认是C:\ProgramData\ZeroTier\One)并新建一个moons.d文件夹,把我们刚刚服务器生成的.moon文件放进去

之后回到服务页面,重启zerotier服务

 基于个人服务器的P2P内网穿透

最后打开命令行(cmd,或者搜索命令提示符)

 输入zerotier-cli listpeers并回车

基于个人服务器的P2P内网穿透

 出现这一行即可

这样的话,客户端的zerotier会自动识别到我们卫星服务器(moon)。而且与在同一moon服务器下的客户端通过P2P传输数据的时候,会自动使用我们的卫星服务器。

而且每次开机会自动开启服务,以后直接连就可以了

后记

正好我有个人服务器,捣鼓了半个下午终于搞定,当天就和小伙伴开TTS开到凌晨

之前我们三人直连,互相的延迟大概都是400ms,而且总是断,现在内网穿透之后,延迟稳定在20ms,再也没有掉线的情况了。小伙伴们普遍使用体验极其良好

当然了,P2P内网穿透不光可以用在玩游戏上,用我这一套,相当于所有设备都在一个局域网下面,那想干什么都可以了~(共享文件,远程连接等等)

基于个人服务器的P2P内网穿透

有一位小伙伴被隔离了,就只能通过线上一起玩桌游了文章来源地址https://www.toymoban.com/news/detail-472392.html

到了这里,关于基于个人服务器的P2P内网穿透的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 无需服务器:Android 应用中使用 P2P 技术进行局域网内设备通信

    随着局域网内设备数量的不断增加和不断演化的 IoT 技术,设备之间的互联变得越来越重要。对于许多 Android 应用程序而言,这样的互联性是必不可少的,需要使用一些技术来实现跨设备的通信。P2P 技术(点对点技术)已证明是一种非常成功的通信技术,可以实现在局域网内

    2024年02月14日
    浏览(41)
  • 内网IP端口提供外网连接访问?快解析动态域名与内网映射P2P穿透方案

    我们在本地搭建服务器及发布互联网时,可以通过动态域名的方式联网。DDNS原理是用固定的域名代替变化IP,实现局域网发布公网,是适合本地动态IP环境的使用。但当本地没有公网IP时,如果解析绑定到内网IP,将内网IP端口提供外网连接访问?这时我们就需要用到内网映射

    2024年02月07日
    浏览(49)
  • 网络穿透 P2P 穿透 UDP打洞、TCP打洞 原理

    经常听到 网络穿透 P2P 穿透 UDP打洞、TCP打洞 以前只是 知道网络底层的底层的一些知识 接触过 网络穿透 P2P 穿透 UDP打洞、TCP打洞 现在做个笔记: P2P穿透是一种技术,用于在两个或多个设备之间建立直接的点对点连接,而无需依赖中间服务器进行转发。它可以帮助设备在NA

    2024年02月15日
    浏览(40)
  • P2P网络NAT穿透原理(打洞方案)

    NAT技术(Network Address Translation,网络地址转换)是一种把内部网络(简称为内网)私有IP地址转换为外部网络(简称为外网)公共IP地址的技术,它使得一定范围内的多台主机只利用一个公共IP地址连接到外网,可以在很大程度上缓解了公网IP地址紧缺的问题,同时也能防止外

    2024年02月15日
    浏览(50)
  • 无需服务器内网穿透Windows下快速搭建个人WEB项目

    本文主要是windows下内网穿透文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:努力一点,优秀一点 本次教程中,我们将实现在windows上搭建一个web站点,并通过cpolar内网穿透,将该站点免

    2024年02月20日
    浏览(45)
  • Dragonfly 基于 P2P 的文件和镜像分发系统

    作者: 孙景文、吴迪 网络下载 提起网络下载领域,你应该首先会想到基于 TCP/IP 协议簇的 C/S 模式。这种模式希望每一个客户机都与服务器建立 TCP 连接,服务器轮询监听 TCP 连接并依次响应,如下图: 上世纪末期,基于 C/S 模式的思想,人们发展了 HTTP , FTP 等应用层协议。

    2024年01月15日
    浏览(46)
  • 通过内网穿透,在Windows 10系统下搭建个人《我的世界》服务器公网联机

    今天和大家分享一下只需简单几步即可在windwos系统搭建我的世界服务器,并通过cpolar内网穿透工具将本地服务暴露到公网连接,实现与小伙伴一起联机游戏。 以windows10系统为例,配置java环境,搭建我的世界服务器,下载最新版java版本

    2024年02月08日
    浏览(42)
  • 【Go语言】基于Socket编程的P2P通信程序示例

    Go语言的Socket编程实现为开发者提供了一种高效且强大的方式来实现网络通信。通过Go语言的并发模型和内置的网络库,如 net 包,开发者可以轻松地创建基于套接字的通信应用。Go语言的goroutine和channel机制使并发处理变得简单,能够轻松处理多个连接和数据交换。使用Go语言

    2024年02月11日
    浏览(54)
  • 基于 P2P 技术的 Android 局域网内设备通信实践

    Android 局域网内的多设备通信方式有多种,其中常见的方式有: 基于 TCP/UDP 的 Socket 通信 基于 Bluetooth 的近场通信 基于 Wifi 的 Wi-Fi Direct 连接 基于第三方框架的通信,如 MQTT、Websocket 等 每种方式都有其适用范围,下面分别介绍一下它们的示例代码、优劣势。 Socket 是 TCP/UDP 套

    2024年02月08日
    浏览(49)
  • 区块链(8):p2p去中心化之websoket服务端实现业务逻辑

    1 业务逻辑 例如 peer1和peer2之间相互通信 peer1通过onopen{ write(Mesage(QUERY_LATEST))} 向peer2发送消息“我要最新的区块”。 peer2通过onMessage收到消息,通过handleMessage方法对消息进行处理。 handleMessage根据消息类型进行处理 RESPONSE_BLOCKCHAIN:返回区块链,RESPONSE_BLOCKCHAIN处理进入handleB

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包