缘起
通常我们提到VPN时,想到的都是通过VPN访问某些被墙的网站,或者是通过VPN访问公司内网、校园网等。实际上,VPN的使用场景远不止于此。VPN可以帮助我们在不同的网络之间建立一个安全的隧道,从而实现数据的加密和隐私保护。它可以用于远程办公、跨国访问、数据传输等场景。
例如我日常会使用多个电脑,包括家里的,办公室的,还有云服务器上的。这些电脑在不同地区和网络中,例如办公室的电脑在公司的局域网中,云服务器在阿里云和华为云中,这些电脑甚至分布在不同的国家和地区。为了方便地在这些电脑之间进行文件传输和远程访问,VPN就派上用场了。
使用场景
对于我来讲,VPN的使用场景主要有以下几个:
- ssh远程登录:虽然也可以通过公网IP直接ssh登录,但是公网IP不稳定,当然可以使用动态域名解析,但动态域名解析更新往往不那么及时,而且动态IP解析服务也可能会挂掉。使用VPN后,所有的电脑都在同一个虚拟网络中,可以直接通过内网IP进行ssh登录。
- 远程桌面:同样的道理,使用VPN后,所有的电脑都在同一个虚拟网络中,可以直接通过内网IP进行远程桌面登录。
- 文件传输:使用VPN后,所有的电脑都在同一个虚拟网络中,可以直接通过内网IP进行文件传输。
- 访问其他电脑的网络服务,这个又分多种场景:
- 例如我在国外时,网易云音乐会根据我的IP地址判断我在国外,从而无法听某些有地区限制的音乐。使用VPN后,可以通过代理的方式将网易云音乐的请求转发到位于国内的某台电脑上,假装自己在国内,就可以正常听歌了。
- 例如我在国内时,无法访问谷歌和GitHub等网站。使用VPN后,可以通过代理的方式将谷歌和GitHub的请求转发到位于国外的某台电脑上,假装自己在国外,就可以正常访问了。
VPN的原理
VPN的原理是通过在公网上建立一个虚拟的专用网络,将不同的网络连接起来。VPN使用加密技术对数据进行加密,从而保证数据的安全性和隐私性。VPN的工作原理可以分为以下几个步骤:
- 建立连接:客户端通过VPN客户端软件与VPN服务器建立连接。这个过程通常使用SSL/TLS等加密协议进行加密。
- 身份验证:客户端向VPN服务器发送身份验证信息,例如用户名和密码。VPN服务器对身份进行验证,确保客户端是合法用户。
- 建立隧道:身份验证通过后,VPN服务器和客户端之间建立一个加密的隧道。这个隧道可以是基于IPsec、L2TP、PPTP等协议的。
- 数据传输:客户端和VPN服务器之间的数据通过加密的隧道进行传输。数据在传输过程中被加密,确保数据的安全性和隐私性。
- 断开连接:当客户端不再需要使用VPN时,可以通过VPN客户端软件断开与VPN服务器的连接。此时,VPN隧道也会被关闭。
Tailscale
Tailscale简介
Tailscale是一个基于WireGuard的VPN解决方案,它可以帮助我们快速地搭建一个私有虚拟网络。Tailscale的特点是简单易用、跨平台支持、自动穿透NAT等。它可以在Windows、macOS、Linux、iOS和Android等多个平台上使用。
WireGuard是一个现代化的VPN协议,它使用最新的加密技术,具有高性能和低延迟的特点。WireGuard的设计目标是简单、安全和高效。它的代码量非常小,只有几千行代码,相比于其他VPN协议(例如OpenVPN、IPsec等)要小得多。这使得WireGuard更容易审计和维护。
Tailscale的工作原理
Tailscale的工作原理是通过一个中心化的控制服务器来管理所有的客户端。每个客户端在连接到Tailscale时,会向控制服务器注册自己的IP地址和公钥。控制服务器会将这些信息分发给其他客户端,从而实现点对点的连接。
Tailscale使用WireGuard协议来建立加密的隧道。每个客户端都有一个WireGuard的私钥和公钥。通过控制服务器,客户端可以获取其他客户端的公钥,从而建立点对点的连接。
Tailscale还支持自动穿透NAT和防火墙,这使得它可以在各种网络环境中使用。它使用了STUN和TURN等技术来实现NAT穿透。
Tailscale还支持访问控制和身份验证。它可以与Google、Microsoft、GitHub等身份提供商集成,从而实现单点登录(SSO)。这使得Tailscale可以与现有的身份管理系统无缝集成。
Tailscale的优缺点
Tailscale的优点:
- 简单易用:Tailscale的安装和配置非常简单,只需要几分钟就可以搭建一个私有虚拟网络。
- 跨平台支持:Tailscale支持多个平台,包括Windows、macOS、Linux、iOS和Android等。
- 自动穿透NAT:Tailscale可以自动穿透NAT和防火墙,无需手动配置端口转发。
- 高性能:Tailscale使用WireGuard协议,具有高性能和低延迟的特点。
- 安全性:Tailscale使用最新的加密技术,确保数据的安全性和隐私性。
- 访问控制:Tailscale支持访问控制和身份验证,可以与现有的身份管理系统集成。
- 低成本:Tailscale的免费版可以支持最多20个设备,适合个人和小型团队使用。
- 开源:Tailscale的核心组件是开源的,可以在GitHub上找到。
- 社区支持:Tailscale有一个活跃的社区,可以提供技术支持和帮助。
- 文档齐全:Tailscale的文档非常详细,提供了丰富的使用案例和教程。
- 监控和日志:Tailscale提供了监控和日志功能,可以帮助我们排查问题和优化性能。
Tailscale的缺点:
- 中心化:Tailscale使用中心化的控制服务器来管理客户端,这可能会导致单点故障和隐私问题。
- 依赖网络:Tailscale需要依赖网络连接,如果网络不稳定,可能会影响VPN的性能。
Tailscale的使用方法
Tailscale有两种使用方式,一种是利用Tailscale官方的控制服务器,另一种是自建控制服务器。对于大多数用户来说,使用官方的控制服务器就足够了。但是如果你对隐私和安全性有更高的要求,或者有一些特殊的需求,需要更高的灵活性,就需要自建控制服务器了。
这里简单介绍一下第一种使用方式,即使用Tailscale官方的控制服务器。对于第二种使用方式,即自建控制服务器,这里暂不做详细介绍,之后会单独写一篇文章介绍。
-
注册账号:访问Tailscale官网注册一个账号。可以使用谷歌、微软、GitHub等账号登录。
-
安装Tailscale:在需要连接的设备上安装Tailscale。可以使用以下命令安装:
-
Windows:下载Windows安装包并安装。
-
macOS:下载macOS安装包并安装。
-
Linux:使用以下命令安装:
1
curl -fsSL https://tailscale.com/install.sh | sh
-
iOS和Android:在App Store或Google Play中搜索"Tailscale"并安装。
-
-
登录:安装完成后,Tailscale会打开一个浏览器窗口,要求登录,使用注册的账号,或者通过谷歌、微软、GitHub等第三方账号登录。
-
连接:登录后,Tailscale会自动为设备分配一个IP地址。可以在Tailscale应用中查看设备列表和IP地址:
-
访问其他设备:在同一个Tailscale网络中的设备可以直接通过IP地址进行访问。例如,可以使用ssh命令登录到上面的fedora设备:
1
ssh [email protected]
你也可以通过Tailscale提供的DNS名称访问其他设备,例如:
1
ssh [email protected]
-
设置访问控制:可以在Tailscale应用中设置访问控制规则,例如限制某些设备之间的访问权限。
-
断开连接:当不再需要使用Tailscale时,可以在Tailscale应用中断开连接。