时间:2023-06-02 02:21:02 | 来源:网站运营
时间:2023-06-02 02:21:02 来源:网站运营
使用 Tailscale 远程访问局域网:Tailscale
是一种基于 WireGuard
的虚拟组网工具,它能帮助我们把安装了 Tailscale
服务的机器,都放到同一个局域网内,即公司或者家里的 PC
机器连到同一网络,甚至云服务器都能放到同一个局域网。IP
,又想能满足远程办公需求?担心暴露公网 IP
而被频繁的恶意扫描、攻击?Tailscale
的诞生,成为解决这些痛点的全新选择。WireGuard®
保护Tailscale
用户共享您的设备CL
限制对设备的访问。TailScale
是基于 Wireguard 开发而来的,所以天生支持协议加密,安全性更高,而且是 P2P
连线,流量不经服务器,延迟更低。并且,对个人用户免费。TailScale
内置 taildrop
,可以在设备间传输文件,因为其支持全平台,所以实际上这也是一个很好用的全平台文件传输工具。而且如果设备处在同一个局域网的话,传输速度也会非常快。TailScale
节点间是点对点 tls
连接,所以实际上也可以用来做网络代理。# linux$ curl -fsSL https://tailscale.com/install.sh | sh# 还可以使用docker安装# https://github.com/tailscale/tailscale/blob/main/Dockerfile$ docker run -d --name=tailscaled / -v /var/lib:/var/lib -v /dev/net/tun:/dev/net/tun / --network=host --privileged fastandfearless/tailscale tailscaled# 打印tailscale登录地址并进行授权登录$ docker exec tailscaled tailscale up# 获取设备TailscaleIP地址$ ip addr show tailscale0# 查看设备状态$ docker exec tailscaled tailscale status# 本地编译安装# https://github.com/tailscale/tailscale/wiki/Tailscaled-on-macOS# 安装go工具$ brew install go# 直接编译# 会在$HOME/go/bin目录下面生成二进制包$ go install tailscale.com/cmd/tailscale{,d}@main# 后台守护进程运行tailscaled服务# sudo tailscaled uninstall-system-daemon$ sudo $HOME/go/bin/tailscaled$ sudo $HOME/go/bin/tailscaled install-system-daemon# 启动服务$ tailscale up$ tailscale status
Mac
电脑的话,肯定存储是一个头痛的问题,因为一般情况下都会购买 128G
和 256G
版本的机器(不要问为什么,问的话就是穷)。这样当磁盘不够的时候,就让人感觉到焦虑。但是当我们使用 Tailscale
并拥有 WebDav
之后,就能很好的拓展存储空间,可以内网连接我的群晖 NAS
提供的 WebDav
了。PC
的情况,可以通过 TeamViewer
完成。但是使用 RDP
协议来远程操作,效果体验更佳而且更稳定。但是 PC
机需要一直开机状态,如果我们只是偶尔使用一下的话,这有些费电了。Tailscale
之后,通过群晖(或者机器机器也可以)做一个反向代理方便进入家里的梅林路由器,并修改本地 Mac
的 hosts
文件来解析我们自定义的域名。群晖 NAS 的控制面板中自带了配置反向代理的地方,可以省的我们折腾。进入梅林路由器,进入网络工具中的通过网络唤醒界面,选择对应的 PC
即可。PC
机需要配置好通过 WOL
唤醒才行,而配置可以自己参考网络唤醒全攻略。等待电脑唤醒完成后,使用远程桌面进行远程连接,就可以得到一个用户体验很不错的体验了。Linux
接入 TailScale
服务,让其充当网关,这样就可以访问整个内网网段了。TailScale
服务的,比如打印机之类的。这样设定 PC
机充当子路由(Subnet Route
),其他所有的外网的 TailScale
装置都可以透过这部 Linux
装置作为网关访问家里内网所有的设备。# Linux机器设置IP转发(临时)$ echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf$ echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf$ sudo sysctl -p /etc/sysctl.conf
TailScale
不需要防火墙配置,会自动管理规则,以允许转发。设定过程也没涉及到 iptable
的设置,一条指令可以完成。# 替换为自己的网段(IPV4或IPV6)$ sudo tailscale up --advertise-routes=20.13.3.0/24
这里设置完成之后,默认并没有开启转发功能。需要我们登录网页,在控制台页面找到我们这台机器,打开路由设置功能。基于安全特性,Tailscale
每隔 6
个月需要重新授权装置,我们这里可以选择关掉这个。tailscale
的节点,然后再在境外服务器上安装一个 cow
(用来做 http proxy server
)。那我就可以在任意一台机器上,访问境外服务器的 tailscale
子网 IP + cow
端口的形式实现 HTTP/SOCKS
代理。# 安装cow工具(梯子机器)$ curl -L git.io/cow | bash# 修改配置文件$ cat /home/escape/.cow/rclisten = http://100.100.100.100:17777# 将其添加到systemd服务中$ sudo vim /etc/systemd/system/cow.service/[Unit/]Description=cow serviceAfter=network.targetStartLimitIntervalSec=0/[Service/]Type=simpleRestart=alwaysRestartSec=1User=escapeExecStart=/usr/local/bin/cow -c /home/escape/.cow/rc/[Install/]WantedBy=multi-user.target
Tailscale
提供的 relays
数量有限,而且全部在国外。你也可以自建中继。自建中继服务器被称为 derper
,是用 go
开发的,建议先安装 go
环境。go
是预编译的,安装起来很简单,下载、解压即可。derper
的参数,其中 -hostname
表示有效的公网域名,derper
会自动为这个域名申请 Let's Encrypt TLS
证书,其中 -a
表示指定 derper
监听的 tcp
端口,默认为 443
,修改为其他端口的话似乎转发流量会有问题,其中 -stun
表示 stun
协议的 udp
端口,health check
的时候会用到。# 安装$ go install tailscale.com/cmd/derper@main# 启动$ sudo derper -c=/root/derper.conf -hostname=xx.xx.xx -a=:443 -stun# 加入自启动里面sudo vi /etc/systemd/system/derper.service/[Unit/]Description=derper serviceAfter=network.targetStartLimitIntervalSec=0/[Service/]Type=simpleRestart=alwaysRestartSec=1User=rootExecStart=/home/escape/.go/bin/derper -c=/root/derper.conf -hostname=x.x.x.x -a :443 -stun/[Install/]WantedBy=multi-user.target
需要注意的是,因为 derper
会申请公网 TLS
证书,如果你的服务器在国内,那么域名必须要备案。而且由于中国封锁了 Let's Encrypt
,所以你的 derper
在启动一会儿后,很可能会报错表示证书申请失败。所以,使用香港、日本、新加坡的主机会好很多。# 查询部署到局域网的节点IP地址$ tailscale status# 终端查看tailscale分配到的IP地址$ tailscale ip
关键词:访问,远程,使用