关于nat:Tailscale-构建私有网络访问家中设备

5次阅读

共计 2688 个字符,预计需要花费 7 分钟才能阅读完成。

前言

在此前,我都是通过一些硬件设施来构建一个公有网络,并且能有一个稳固的公网 IP,内部能够通过设施厂商对应的内部资源来构建一个公有网络,随时随地拜访家中设施,如:NAS。但, 人生无常,大肠包小肠 ,最近很不稳固,于是筹备了一个后手计划,避免意外。

之前,就有理解过各种计划,其中 Tailscale 是其中一个,比拟青眼它的协定自身,并且当初曾经能够自建,协定自身也开源,于是最近就折腾起来了。

一开始理解到 Tailscale 并不是因为它自身,而是它写的一篇无关 NAT 的一篇博客,我感觉是原理解释的十分清晰的一篇博客了,所以我就顺便去看了它自身是做什么的。
https://tailscale.com/blog/how-nat-traversal-works/

无关它自身的原理我倡议间接看官网文档,间接看配图就能懂 https://tailscale.com/kb/1151/what-is-tailscale/

装置

装置非常简单,我不过多赘述,记得先去官网注册一个账号

Linux

https://tailscale.com/download/linux

Mac

因为 AppStore 没方法上架国内,所以只能抉择 Cli 或者 Standalone
https://tailscale.com/download/mac

倡议应用老版本的 cli 工具 https://github.com/tailscale/tailscale/wiki/Tailscaled-on-macOS

go install tailscale.com/cmd/tailscale{,d}@v1.38.2

Standalone 版本 在下方链接的最上面一个
https://pkgs.tailscale.com/stable/#macos

应用

Linux

$ tailscale up       # (any optional arguments)
$ tailscale status

会让你拜访一个网址,通过受权就能够了。

MacOS

如果你应用的是 GUI 版本,肯定记得要给权限, 到隐衷上面把权限开了 ,否则会始终卡主不动

# 启动后台程序
$ sudo $HOME/go/bin/tailscaled
# 开机自启动
$ sudo $HOME/go/bin/tailscaled install-system-daemon
# 删除开机自启动
$ sudo tailscaled uninstall-system-daemon

启动之后到官网的治理后盾就能够看到各个设施的状况了。当然你能够再界面或者通过命令行看到各个节点的状态,并且能看到对应的内网 ip。通过内网 ip 就能够间接拜访了。

部署公有 DERP 中继服务器

官网的中继服务都不在国内,并且用的人多,不花钱必定慢,如果有条件还是倡议自建。一方面是速度有显著的改善, 有的时候忽然早晨我会呈现十分卡的状况 ,而自建的延时很低很低。另一方面,自建从心里角度能让你安心,毕竟节点拜访就不通过官网服务器了(尽管依照它开源的协定自身,其实中继节点自身无奈做什么劫持,不过心里刺激很大)。

条件

  1. 须要你有一个带有公网 ip 的服务器
  2. 须要你有一个备案的域名(尽管我晓得你可能没有,但极大倡议有一个,不便很多)
  3. 我有 HTTPS 证书(你没有也没事 Tailscale 会帮你主动申请)

部署

自建 DERP Servers 官网文档 https://tailscale.com/kb/1118/custom-derp-servers/

装置

go install tailscale.com/cmd/derper@main

启动

derper -hostname xxx.com -c=derper/derper.conf -http-port=-1 -a :8443 -certmode manual -certdir /cert-dir/ -stun -verify-clients
  1. hostname 为你的域名
  2. -c 指定的是配置文件寄存的门路,没有会主动创立,你也不须要提前创立文件
  3. http-port = -1 是禁用 http,因为 http 太危险了,这种服务必须加密
  4. -a 指定启动端口,默认占用 443,也就是 HTTPS

    1. 留神:它自身还还须要占用 3478
  5. -certmode manual 证书手动模式,反对手动通过 -certdir 指定证书地位,留神证书文件名词必须为 域名.crt
  6. -verify-clients 必须要加!!!我看很多教程都没有,然而没有这个你的节点就有可能被扫描到被滥用

配置 Access Controls

进入官网的治理界面,配置 Access Controls,仅需退出

{
    // 下面已有的都不动
    "derpMap": {
        "OmitDefaultRegions": true,
        "Regions": {"900": {
            "RegionID":   900,
            "RegionCode": "derper",
            "Nodes": [{
                "Name":     "1",
                "RegionID": 900,
                "HostName": "xxx.com",
                "DERPPort": 8443,
            }],
        }},
    },
}

其中 DERPPort 为之前你启动时配置的端口,如果你还自定义指定了 STUNPort,那也须要配置一下。

而后重启节点,就能够从官网的控制台查看是否失常。在 machines 中,点击一个节点详情,最下方 Relays,如果呈现如下样子,证实曾经胜利。

Relays Relay #900**: 8.59 ms

可能的问题

中继节点启动后,如果呈现相似上面的日志不停地有,你须要再中继节点服务器上本地运行一个 Tailscale 就能够了

derp: 102.72.254.106:56228: client 6e6f64656
rejected: client nodekey:30e6f9e2e9154709095 not in set of peers

腾飞🛫

总的来说,应用如果是自建感触还是很不错的,如果非自建,有时候会不太稳固,自己临时没有呈现打洞不胜利的状况,所有都十分顺利。

参考链接

  • https://www.boris1993.com/self-hosting-tailscale-derp.html
  • https://icloudnative.io/posts/custom-derp-servers/
  • https://shipengliang.com/software-exp/tailscale-%E7%A7%81%E6%…
  • https://blog.csdn.net/opopop880/article/details/122125430
  • https://blog.csdn.net/qq_35007984/article/details/130299805
正文完
 0