阿里云服务器+N2N搭建远程办公环境
修改记录
时间 | 内容 |
---|---|
2022-4-8 | 创建 |
缘起
最近上海的疫情突然变得严重起来,实际上的全城封闭导致很多人需要在家办公,我最近也加入了远程办公的队伍。公司有两台电脑,一台windows 10(办公电脑),一台Ubuntu 16.04(编译服务器),在家使用Ubuntu 20.04办公。家里移动的宽带,属于比较烂的一种。
开始尝试了向日葵和anydesk,免费,傻瓜,短时间内用用还可以,但是长时间用起来,实在是太难受了。 那种生硬的感觉让我浑身不舒服。还是需要尝试使用组网的工具才可以。
同事推荐了ZeroTier, 他们用的效果很好(好像都是电信的宽带),奈何我家的移动宽带,用ZeroTier的时候ping 延时600ms+, 丢包严重,SSH连接以后卡半天才动两下。
后面想起来N2N1,打算尝试一下。折腾了一下,效果挺好,记录一下整个过程。
准备
- 公网IP及该IP能访问的服务器。 我们家是移动的网络,申请不到公网IP,没办法。恰好阿里云有免费试用一个月的2,先用过再说。理论上,只要有公网IP,将服务器映射到官网,是一样的效果。
- 准备不同系统的软件。N2N是github上开源的工具3,需要在自己的系统上编译好才可以。N2N有不同的版本4,可以根据自己的需要选择。我这里用的是N2N V2版本。
- Ubuntu系统安装
git clone https://github.com/ntop/n2n.git -b 2.8-stable #下载源码
sudo apt-get install cmake build-essential libssl-dev #安装编译依赖
cd n2n
./autogen.sh
./configure
make && make install #此处需要以root用户执行,因为默认是安装到/usr/sbin目录的,成功的话,会生成edge和supernode
- Windows 系统安装
windows系统上也可以下载github源码3自行编译,但是我windows上没有装cmake等工具,直接选择了使用别人编译好的版本5。下载解压后,里面是编译好的x86/x64版本的可执行程序。
在windows上,还需要下载一个 N2N GUI,可以方便地进行管理。我使用的n2ngui6是后者,可以选择使用V1还是V2版本的N2N,还可以替换自定义的N2N程序。下载后解压,安装即可。之后会发现网络适配器中多了一个虚拟适配器,这个后面需要用到。
去下载 n2nedgegui 或者 n2nguien: http://www.vpnhosting.cz/n2nguien.exe. (都是vpnhosting.cz 开发, 前者使用SF托管的, 经测试是n2n_v2的, 使用v1版supernode不能通, 后者可以在Advanced里面设置为n2n_v1从而解决问题,如果用n2n_v1请使用后者)
- 一些参数(都是假的,按照自己的实际需求填写)
serverip=1.1.1.1 # 服务器地址,需要能够公网访问
serverport=8888 # 服务端口
groupid=mmmm
password=12345 # N2N加密用到的密码
配置服务端
ssh登录阿里云服务器,安装好n2n后,执行如下命令开启服务:
nohup supernode -l $serverport -v &
另外,阿里云的服务器,需要设置安全策略,放行$serverport端口的数据才可以。
配置Ubuntu客户端
以root用户执行如下命令:
edge -c $groupid -k $password -a 192.168.3.12 -v -l $serverip:$serverport
其中192.168.3.12就是本机地址,后续创建完成以后就可以通过这个地址进行访问。我将本地的Ubuntu地址设置为192.168.3.12, 远端的Ubuntu地址设置为192.168.3.11.
配置Windows客户端
打开已经安装好的n2n gui. 在advanced界面选择V2版本。并填好对应的信息。
填写完成以后,重启n2n gui,理论上就可以链接成功了,需要检查的话,请参考7中的描述进行check。
n2n gui中自带的edge可能比较老,有可能无法进行连接,可以找到n2n gui的安装位置,将其中的edge、edge2(分别对应V1/V2)替换为自己编译的版本,或者前面下载的版本,替换完成以后,重启n2n gui即可。
验证
这样,192.168.3.10、192.168.3.11、192.168.3.12就可以互相访问了,不论通过SSH、mstsc还是RDP都可以。ping 的时延大概在几十毫秒,对远程办公来说,足够了。
supernode和edge有不同的配置参数,如果有兴趣,可以细致进行学习。