内网穿透

1. 简介

一般的校园网/企业网往往都设置有防火墙,在内网可以访问外网,但在外网却无法访问内网。比如校园的服务器,当我们在校外时,只能通过学校的 VPN 访问校园网。然而,这个 VPN 一来可能不稳定,二来往往只有 Windows 平台有(气抖冷),对于 Linux 用户极其不友好。在朋友的推荐下,我使用了 ZeroTier 这款跨平台的虚拟局域网构建工具,使用它能够进行内网穿透,使得外网也能访问内网,妈妈再也不用担心我连不上校网服务器了

2. ZeroTier

2.1 创建虚拟局域网

  • 首先去 ZeroTier 官网注册一个帐号;

  • 然后创建一个私有网络并记下创建的网络 ID;

  • 接着在需要连接到同一个虚拟局域网的设备上安装好 ZeroTier 客户端(不同平台安装方式查看 ZeroTier 官网安装指南);

  • 然后在设备上加入第二步创建的网络;

    以 Linux 平台为例,在终端执行 sudo zerotier-cli join ssssttttxxxxyyyy,其中 ssssttttxxxxyyyy 是你的网络 ID。

  • 最后回到 ZeroTier 个人帐号 my.zerotier.com 中查看已加入的设备,并勾选授权即可。

这样加入到虚拟局域网的设备之间即可使用 SSH 等直接登录,再也不需要 VPN 啦~

2.2 SSH 跳板

如果你有多个校园服务器帐号,且它们之间是可以相互访问的。此时如果把每个服务器都加入到虚拟局域网,则会有些麻烦。更好的做法是使用 SSH 的跳板功能,将其中一台校园服务器当做跳板,通过它来访问其它校园服务器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 跳板机名称,可以随便取
Host JumpMachine
  # 跳板机 IP,用 ZeroTier 分配给跳板机的 IP
  HostName 1.1.1.1
  # 登入的用户名
  User username
  # 端口号
  Port 22

# 目标机名称,可以随便取
Host TargetMachine
  # 目标机 IP,用真实的校园服务器 IP
  HostName 1.1.1.1
  # 登入的用户名
  User username
  # 端口号
  Port 22
  # 跳转代码,JumpMachine 为前面跳板机的名称
  ProxyCommand ssh -W %h:%p JumpMachine

设置成功后,就可以登录到 TargetMachine 服务器啦~不过麻烦的是要输入两次密码,可以将当前设备的 SSH 公有证书上传到 JumpMachine,这样可以减少一次密码输入的次数嗷。如果完全不想输入密码,可以将当前设备的 SSH 公有证书同时上传到 JumpMachineTargetMachine

附录


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!