最速の服務器の連接傳說:公网IPv6+DDNSgo

在先前的文章中,我已介绍了两种内网穿透的方法,即frp端口映射和Zerotier/Tailscale虚拟局域网。那除了这两种方法以外,还有没有其他手段实现远程访问呢?当然有,那就是今天要介绍的方法–公网IPv6+DDNSgo。简单介绍玩配置之后,我还会用它进行简单的实践操作,即将我上一篇文章中搭建好的MC服务器映射到公网上。

首先,请容我简单介绍一下其实现的原理(本人并非专业人士,如有错误,敬请斧正)。我们都知道,由于网络设备的暴增,传统的ipv4地址即将面临枯竭,为了解决该问题,人们提出了两种解决方案,即NAT(Network Address Translator,网络地址转换)和ipv6。与ipv4相比,ipv6拥有更大的地址空间(2^128个地址),足以满足未来发展需求。虽然现在ipv4还是主流,但ipv6才是未来发展的趋势。我们的家庭网络大部分也都接入了ipv6,并且都能获得一个公网ipv6地址(当然不排除NAT66的可能),通过这个地址,我们可以直接访问目标设备。但是,比起ipv4,ipv6的长度更长,组成更复杂,且我们分到的地址基本上都是动态的,给我们记忆带来极大困难。于是,就有了DDNS(动态域名解析)。它可以将固定的的域名解析到动态的ipv6地址中,每隔一段时间就检测客户端的地址,当检测到客户端ipv6地址发生改变后,它会向DDNS服务提供商发起更新请求,将域名解析到新的地址上。因此,通过这个简单的,固定的域名,我们就可以轻松访问到目标主机。

回到正题,既然通过前两种办法就能够实现远程访问,为什么还要使用ipv6+ddns呢?我想了想,原因大致有以下几点:

  • 低延迟,高带宽。由于是通过ip地址直接连接,相当于p2p连接,传输速率基本上可以跑慢宽带(主要是上行带宽),而且不像frp端口映射一样要走中转服务器,因此延迟也可以压到很低。像校园网和一些企业网的上行带宽都很大,跑起来爽歪歪。
  • 免费,普适。现如今基本上所有家用宽带都默认带有ipv6地址,就算没有,也可以直接打电话给宽带运营商,一般都会免费给。
  • 无需客户端操作。Zerotier/Tailscale与ddns相比,在有公网ipv6情况下,虽然都走的是p2p,但是客户端和服务端都需要安装对应的软件,在设备多起来的情况下(比如游戏服务器),就显得很不方便。而有了ddns,玩家只需要一个域名就可以轻松连接服务器。

水了那么多,那么我们下面就正式开始教程。在这之前,我们必须要准备以下东西:

  • 公网IPv6地址。可以点击这里来查看本机的ipv6地址,必须要拥有公网ip才行。如果确定运营商已经给了公网ip但电脑却无法获取,可以打开“控制面板-网络和Internet-网络和共享中心-点击要配置的网络连接-属性-勾选Internet 协议版本 6 (TCP/IPv6)”来打开ipv6连接。
  • 一个域名。各大平台购买的域名均可,如阿里,腾讯,godaddy,便宜的域名一年也就几块钱。我用的是godaddy,好处是不用备案也不用实名。(10月6日:如果不想花钱买域名的话,可以去FreeDNS上申请一个免费的二级域名,只不过由于DDNS-go不支持FreeDNS上的二级域名,所以用以下方法不可行,但还是可以通过自动任务来实现DDNS的功能,具体我不再赘述。)

做好这些准备后,我们就可以开始操作一番了。首先我们要去github上下载ddns-go,选择对应操作系统的文件下载即可,我以arm架构的Linux系统作为示例,如果是x86的linux则选择箭头所指的文件。链接在这

新建一个文件夹存放ddns-go。

mkdir ddnsgo

上传下好的文件到该文件夹里。解压。

tar -zxvf <压缩包名称>

删除压缩包。

rm <压缩包名称>

安装服务运行。

sudo ./ddns-go -s install

在浏览器中进入”<本机ip地址>:9876″进入WebUI界面。本机ip可通过ifconfig命令查看。

选择对应的DNS服务商,一般你从哪买的域名就选哪个。由于我已将域名DNS服务商移到cloudflare了,就以此做示范,其他家也是大差不差。选好后点击”创建令牌”。

新建一个”API Token”。

选择“Edit zone DNS”。

填入你的域名,然后提交。

回到ddns-go界面,填入得到的Token,然后在ipv6栏目下勾选启用,获取ip方式可以是默认的接口获取,如果时不时抽风的话,也可以选网卡获取。Domains一栏填入你的域名,最好加个前缀,比如“ip6.xxxx.xx”,有多个域名可以一行一个域名。

在其他配置栏目下可以勾选“禁止公网访问”,设置用户名和密码,保证安全性。

设置完成后,点击“Save”。可以点击日志查看是否正常运行。若正常运行,此时DNS服务商的DNS记录里应该会多出对应的记录。需要注意的是,如果和我一样用的是cloudflare的话,对应记录的“proxy status”一定要是“DNS only”,否则会连不上。不要问为什么知道,这都是血与泪的教训。

接下来,我们就可以在另外一台接入ipv6的设备上ping一下这个域名了。

ping <xx.xxxx.xx>

若是能正常ping通,那么恭喜你,ddns配置成功。如果暂时ping不同,也不用着急,可能是DNS服务器还没有更新,等几分钟就好。

现在,我们已经可以通过这个域名在外网连接我们的MC服务器了。服务器地址填“你的域名:服务器端口(MC服务器默认端口是25565,如果是25565的话也可以只填域名)”就行了。不过需要注意的是,想连入服务器的小伙伴也必须要接入能够访问ipv6地址的网络(但不强制要求是公网ipv6),简单的验证方法就是看能不能打开纯ipv6的网站,如这个。实在不能连接就用手机的流量共享给电脑吧。

最后,附上一些测试图片。前两张为服务端和客户端都在校园网内的测试结果。后两张为服务端在校内,客户端在校外的测试结果。这么低的延迟玩起来不爽歪歪?

《最速の服務器の連接傳說:公网IPv6+DDNSgo》有2条评论

发表评论

隐藏
变装