背景

  • 之前写过怎么在win平台使用frp搭配zerotierone搭建回校内网,详见这里
  • 但是pc经常会出现关机等等意外情况,同时frp一定需要一台公网服务器,受限于国内带宽的高价,有时候该种解决方案并不是最优
  • 本次介绍一种使用zerotier-one的官方服务进行内网组建同时搭配anyproxy的vpn方法
  • 刚好趁此机会介绍一下在linux下的anyproxy的安装配置

产品简介

anyproxy

  • 跨平台基于nodejs的快速http代理工具,不多介绍

zerotier-one

  • 一款全平台的vpn子网组件工具
  • 该工具会自动在转发、直通、p2p等方式中选择最优方案进行子网组建
  • 官方提供转发服务器,虽然是在境外(速度相对较慢)但是聊胜于无,免费账号可以同时加入100台机器(甚至对于一个小团队都是够用的),不限制子网数量

动手吧!

安装anyproxy

  • 首先确保有npm工具:
npm -v
  • 直接进行一个安装
sudo npm install anyproxy -g
  • 启动测试
anyproxy --port <proxy port u wanna use>
  • 配置开机启动
  • 防止机器断电,还是配置一下开机自启比较好
  • 为了方便(其实是我只会这一种),这里使用systemd的方式配置开机自启
  • 具体systemd是什么请自行google,这里只需要知道该守护程序有两个可以放置配置文件的地方:/etc/systemd/system/或者/usr/lib/systemd/system/
  • 创建服务文件
sudo touch /usr/lib/systemd/system/anyproxy.service
  • 编写服务文件(复制记得删除注释)
[Unit]
Description=Initiate the anyproxy server # 给出一个详细描述
After=network-online.target # 固定
[Service]
Type=simple # 固定
ExecStart=/bin/bash <abspath_to_init.sh> # 需要将anyproxy的启动写成一个sh脚本,并放在任意位置,chmod给执行权限
Restart=on-abort # 固定
User=root # 固定
[Install] # 固定
WantedBy=default.target # 固定
  • 重载
sudo systemctl daemon-reload
  • 启动
sudo systemctl start anyproxy
  • 查看运行状态
sudo systemclt status anyproxy
  • 设置开机自启
sudo systemctl enable anyproxy

安装配置zerotier-one

下载

注册并创建一个子网

  • 这里使用你喜欢的方式注册登录zerotier
  • 点击Create A Network,稍等片刻点击进入创建好的子网
  • 起一个喜欢的名字,其他保持默认即可
  • 记下来最上边的Network ID,这个后边会用

加入网络

Linux

  • 执行下列命令加入刚刚创建的子网
sudo zerotier-cli join <Network ID>
  • 稍等片刻,回到网页后台会发现在Members区域出现了刚刚加入的机器,但是zerotier默认新加入的机器没有任何ip分配权限,需要点击最前边Auth?对应的小框框,打上勾勾,稍等片刻便发现刚刚的机器被分配了一个自己的ip地址 授权
  • 你可以给机器起一个方便记忆的名字,此时所有加入了这个子网的机器都可以使用子网内的ip进行互相通信,我们不需要关心其背后的实现逻辑到底是直通还是官方中转

Windows

  • 安装完成后会自动启动并最小化到托盘
  • 点击右键并打开控制面板 打开控制面板
  • 键入Network ID并点击加入 加入网络
  • 回到网页后台重复上述授权
  • 恭喜你,此时你手上的机器与刚才启动anyproxy的机器已经在同一个内网了,你可以使用服务器在内网中的ip地址加上刚刚设置的anyproxy端口进行代理访问了;当然你也可以直接使用内网ip对服务器进行ssh连接,将该机器作为跳板机连接任何与该机器同网内的设备
  • zerotier-one在安装时如果使用的是官方的安装脚本的话其默认是开机自启的,不需要我们再重新配置

后记

  • 这里介绍了新的两种内网组建方式
  • 其实这几种方式排列组合能够产生很多好玩的用法,子网的方式能够更安全的对外暴露ssh等敏感服务,理论上讲只有zerotier官方能够看到服务器的真实ip(该ip还不是机器的,是机器所在最高网关的),此时能够完全放心的ssh连接,否则的话使用公网ip暴露ssh端口会有很多很多陌生人跨越山和大海来扫你…
  • 本人水平有限,仍在努力学习,难免存在行文不畅、过于简单、存在错误等等问题,希望大家多多指正!