神代綺凛

[ZeroTier] 组建虚拟局域网,建立 IPv6 隧道
近日受夜空推荐发现了 ZeroTier 这个可以组建虚拟局域网的工具,由于利用的是类似 P2P 的原理因此可以用来...
扫描右侧二维码阅读全文
29
2018/12

[ZeroTier] 组建虚拟局域网,建立 IPv6 隧道

近日受夜空推荐发现了 ZeroTier 这个可以组建虚拟局域网的工具,由于利用的是类似 P2P 的原理因此可以用来进行内网穿透,在家中无公网 IP 的情况下建立 IPv6 隧道

Head Pic: 「WS.QE Xmas.ver★」/「ねめ猫⑥」のイラスト [pixiv]

使用 ZeroTier 建立 IPv6 隧道

首先,你需要一台 VPS,并注册一个 ZeroTier 帐号:https://my.zerotier.com

VPS 上的准备工作

系统配置

编辑/etc/sysctl.conf,加入

net.ipv4.conf.all.forwarding = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.proxy_ndp = 1
net.ipv6.conf.all.accept_ra = 2

然后执行sysctl -p更新系统配置

IPv6 环境

机器需要有/48的地址块,否则后续无法成功打通隧道(我也并不是很明白具体缘由)

最简单的方法是将 VPS 接入 HE 的 IPv6 Tunnel Broker
https://tunnelbroker.net/

注册帐号后点击左侧“User Functions”中的“Create Regular Tunnel”,在“IPv4 Endpoint”中填入你 VPS 的 IP 地址,“Available Tunnel Servers”是自行选择一个隧道入口,就近选择即可,然后点最下方”Create Tunnel“,耐心等待

创建成功后你会来到隧道详情页面,你会看到”Routed /48“右侧有个”Assign /48“,点一下,申请/48地址块,并记录下这个地址块①

接着点击上方”Example Configurations“,选择你 VPS 的系统

  • 如果是 Debian 或者 Ubuntu 就直接将展示的配置内容追加到/etc/network/interfaces文件中,然后执行/etc/init.d/networking restart重载网络配置
  • 如果是 CentOS,选择”Linux-route2“,直接执行配置中的命令,不过需要注意的是执行命令所建立的隧道是临时的,你可能需要把这些命令也添加到/etc/rc.local

之后执行ifconfig或者ip addr,此时你应该可以看到多了一个叫 he-ipv6 的 interface,尝试ping6 google.com可以确认是否成功接入HE的v6隧道

安装 ZeroTier

直接在 VPS 上执行

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

安装完成后会显示一个 10 位的网络ID,请记下来②

ZeroTier 上的实际操作

在注册了 ZeroTier 帐号后,创建一个网络

  1. 进入这个网络的详情界面后,首先看到“Settings“,记下左上角的 Network ID ③;找到右侧的“IPv6 Auto-Assign”,勾选“ZeroTier RFC4193”,取消勾选“ZeroTier 6PLANE”

  2. 接着往下找到“Members”,在最下方“Manually Add Member”处输入我们之前记下的 ②,然后“+ Add New Member”,这时你会看到你的 VPS 出现在了网络成员列表中,并记下灰色的 fd35 开头的 IPv6 地址④

  3. 回到 VPS,执行此命令,用③替换<NetworkID>

    zerotier-cli set <NetworkID> allowGlobal=true
  4. 回到网页上的“Settings“,在”Managed Routes“中添加两条路由

    1. 第一个空填①,第二个空不填
    2. 第一个空填::0/0,第二个空填④

    然后在”IPv6 Auto-Assign“处勾选”Auto-Assign from Range“,第一个空填①,然后别动,等待一会,会自动帮你填写好 v6 地址范围

将设备接入虚拟局域网以获取 IPv6

以 Windows 为例:

前往 http://www.zerotier.com/download.shtml 下载客户端,安装

首次运行会让你登录 ZeroTier,登陆完后应该会自动帮你加入你在前面建立的那个虚拟局域网(Win10会提示发现新网络之类的),然后右击托盘图标,”Show Networks“,将”Allow Global IP“、”Allow Managed IP“、”Allow Default Route“这三个全部打勾

如果”Show Networks“中什么也没有,就右击托盘图标退出程序,再重开一次,这是 ZeroTier Windows 客户端的问题,重启才会更新网络信息

如果没有自动加入,就右击托盘图标,”Join Network“,输入框中填写③,并打勾所有勾,然后”Join“

接着我们需要设置 IPv6 DNS,打开 控制面板->所有控制面板项->网络和共享中心,点击”ZeroTier One [xxxxxxx]“的连接,属性,Internet 协议版本 6,设置 DNS 为谷歌 IPv6 DNS2001:4860:4860::88882001:4860:4860::8844,一路确定保存

尝试在命令提示符中ping -6 google.com,Ping 通就说明成功接入 IPv6 了

参考教程

https://lantian.pub/article/modify-computer/zerotier-one-own-ipv6-tunnel.lantian

搬瓦工VPS优惠套餐,建站稳如狗,支持支付宝,循环出账94折优惠码BWH3HYATVBJW
年付$47CN2线路,1核/1G内存/20G硬盘/1T@1Gbps【点击购买
季付$47CN2 GIA线路,1核/1G内存/20G硬盘/1T@2.5Gbps【点击购买
Last modification:December 29th, 2018 at 05:37 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment

28 comments

  1. lc  Mac OS X(Mac OS X) / Safari 13.1.2(Safari 13.1.2)
    按步骤进行。结果是能ping通google的dns。但是google.com就是不行。。。
    有办法抢救嘛
  2. Bwoywan  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 77.0.3865.120(Google Chrome 77.0.3865.120)
    请问流量是不是不会走vps的?
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 77.0.3865.120(Google Chrome 77.0.3865.120)
      @Bwoywan 流量不走 vps 难道是自己飞出墙的
  3. Noob  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 73.0.3683.103(Google Chrome 73.0.3683.103)

  4. Noob  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 73.0.3683.103(Google Chrome 73.0.3683.103)
    闲着蛋疼,弄了一下,成功了

    只不过这延迟不能看啊
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 73.0.3683.103(Google Chrome 73.0.3683.103)
      @Noob 不过好像可以自建 overture 然后设置 Alternative DNS 的 EDNS 为 manual ,ExternalIP 填 VPS 的网段,用 Cloudflare 或者 Google DNS 的 DNS over TLS,它们都支持 EDNS
      1. Noob  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 73.0.3683.103(Google Chrome 73.0.3683.103)
        @神代綺凜 有空我去看看,现在我想把node学一下
    2. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 73.0.3683.103(Google Chrome 73.0.3683.103)
      @Noob 我觉得你的 HTML 需要回炉重造(还是帮你改一下评论吧
      其实可以用 Markdown 的

      其实延迟方面还好,是没有什么额外损耗的,主要影响使用体验的问题还是 DNS 问题

      举个例子,比如我的 VPS 在美国,如果我直接使用国内支持 IPv6 的 DNS,那么访问 Google 会被解析到 HK 的服务器,延迟 = 我->美国的VPS->HK = 400+
      如果直接使用 Google IPv6 DNS,会直接解析到美国的服务器,延迟 = 我->美国的VPS->美国 = 200+

      但问题是如果直接使用国外 DNS,有些国内网站就会被解析到国外的服务器上,比如某宝

      所以这个玩玩就好

      1. 丘山鹤  Android 6.0.1(Android 6.0.1) / Google Chrome 57.0.2987.108(Google Chrome 57.0.2987.108)
        @神代綺凜 所以自建dns吧
      2. Noob  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 73.0.3683.103(Google Chrome 73.0.3683.103)
        @神代綺凜 最近写java写多了,那么多框架快让我自闭了,所以说html写错了正常
        还是以后ipv6普及的时候在用吧,感觉现在ipv6对我来说意义不大,顺便再问一下博主,有没有推荐的markdown编辑器?
        1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 73.0.3683.103(Google Chrome 73.0.3683.103)
          @Noob 平时我都直接 vscode 的(有侧边预览插件

          如果是想专门写作可以试试 Typora,我写复习提纲就用这个

          1. Noob  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 73.0.3683.103(Google Chrome 73.0.3683.103)
            @神代綺凜 感谢博主
  5. T.O.V  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 70.0.3538.102(Google Chrome 70.0.3538.102)
    国内阿里云测试失败 ∑(゚Д゚ノ)ノ获得ipv6地址之后ping不通google
    1. kj1120  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 109.0.0.0(Google Chrome 109.0.0.0)
      @T.O.V 他的vps是国外的啊
      翻……专用的(小声)
  6. xxb  Mac OS X 10.14.4(Mac OS X 10.14.4) / Google Chrome 73.0.3683.86(Google Chrome 73.0.3683.86)
    "然后在”IPv6 Auto-Assign“处勾选”Auto-Assign from Range“,第一个空填①,然后别动,等待一会,会自动帮你填写好 v6 地址范围"
    等了半天都没有自动帮我填写好v6地址范围,能自己手动写吗?格式怎样?
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 73.0.3683.86(Google Chrome 73.0.3683.86)
      @xxb 例如你拿到的 48 是2001:2333:2333::/48,那么范围就是2001:2333:2333::~2001:2333:2333:ffff:ffff:ffff:ffff:ffff
  7. 小沨  Windows 7 x64 Edition(Windows 7 x64 Edition) / Google Chrome 72.0.3626.121(Google Chrome 72.0.3626.121)
    win客户端获取到地址,dns也设置了,可惜没网络,求教

    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 73.0.3683.75(Google Chrome 73.0.3683.75)
      @小沨 IPv4 那边是不用管的,是内网v4
      如果你能ping -6 google.com通就行,不通的话……我也帮不上忙
  8. emmm  Mac OS X 10.14.2(Mac OS X 10.14.2) / Google Chrome 71.0.3578.98(Google Chrome 71.0.3578.98)
    |´・ω・)ノ
  9. Noob  GNU/Linux x64(GNU/Linux x64) / Google Chrome 71.0.3578.98(Google Chrome 71.0.3578.98)
    有公网ip是不是可以直接弄ipv6呢?
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 71.0.3578.98(Google Chrome 71.0.3578.98)
      @Noob 可以,但是 HE 的隧道入口到大陆很多都是绕美的(比如jp),直接隧道使用网络体验不一定好

      如果是家宽公网IP基本都是动态的,重启一次猫就换一个,这样还得考虑用 HE 的 API 来更新公网IP设置

      1. Noob  Windows 8.1 x64 Edition(Windows 8.1 x64 Edition) / Google Chrome 71.0.3578.98(Google Chrome 71.0.3578.98)
        @神代綺凜 博主,我看到了你的console,我问一下,console里面能用css吗?
        1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 71.0.3578.98(Google Chrome 71.0.3578.98)
          @Noob 但是有局限性
        2. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 71.0.3578.98(Google Chrome 71.0.3578.98)
          @Noob
      2. Noob  Windows 8.1 x64 Edition(Windows 8.1 x64 Edition) / Google Chrome 71.0.3578.98(Google Chrome 71.0.3578.98)
        @神代綺凜 我路由器里面好像有这个功能,我去研究研究
  10. 小萌羽  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 71.0.3578.98(Google Chrome 71.0.3578.98)
    OωO IPv6 5G时代快来了
  11. Zero  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 71.0.3578.98(Google Chrome 71.0.3578.98)
    ∠( ᐛ 」∠)_
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 71.0.3578.98(Google Chrome 71.0.3578.98)
      @Zero ∠( ᐛ 」∠)_你这沙发速度有点快