NCSU的服务器需要先登录学校的VPN,但是开启VPN后,流量默认走VPN,会对所有程序产生影响。
之前写过一篇用win10来做跳板的,但是本质上,也是用win10的ubuntu子系统。今天记录一下直接用一个资源占用较小的ubuntu作为跳板登录学校服务器的方法。
1. 使用更简单的docker
openconnect支持cisco vpn的账户,可以直接docker pull findhao/ncsuvpn:latest
pull现有的镜像,
使用如下命令开启一个container
docker run -d --name ncsu --privileged -p 127.0.0.1:9000:9000 -p 127.0.0.1:8123:8123 -v custom.conf:/etc/unbound/unbound.conf.d/custom.conf -e OPTIONS="-u user_name --authgroup=2" -e SERVER=vpn_server -e PASSWORD="yourpassword\npush\n" -t findhao/ncsuvpn
将OPTIONS
里的user_nam
替换为你的用户名,authgroup选择你登录vpn时对应的组,替换vpn_server
为你vpn的服务器地址,替换yourpassword\npush\n
中的yourpassword
为你的密码,push
是我们学校登录时选择2fa的验证方式。容器开启后,在host上需要安装ncat
包来转发流量,直接apt install ncat即可。
--name
参数可以指定container的名字。
可以通过docker logs container_id
来查看container的运行日志
上面的命令中使用了--restart=always
,实际上可以每次用的时候新开容器,添加--rm
来保证容器退出时资源直接被删除。
也可以加入--cpus="0.25" -m 256m
来限制docker的资源使用,但我没有做过完整的测试。
在~/.ssh/config
中,对应的想要访问的服务器的配置中需要添加一行ProxyCommand
Host gpu_server
XXXXXX
ProxyCommand ncat --proxy-type socks5 --proxy 127.0.0.1:9000 %h %p
每次开机,可以使用docker restart container_name
来启动你的docker container。
这个方法的一个好处是,上述参数设置中的9000端口实际上已经作为本地socks代理开启了,浏览器端可以使用switchyomega之类的代理插件来设置浏览器的代理选项。添加本地socks5的9000端口作为一个情景模式,可以选择性的使用ncsu vpn来登录部分网站,比如ieee或者acm等,这样也不需要用Redirect Scholar来做一次跳转。
2. 使用vbox
安装Ubuntu
使用虚拟机软件(vbox, vmware等)安装一个xubuntu 20.04。使用xubuntu是因为xfce占用资源较少。一开始安装时,可以设置2GB memory和4线程,以便快速安装。硬盘最少设置10GB,我装完所有软件硬盘占用7GB。
如果学校的vpn支持命令行工具的话,进一步减少系统占用的方法,只安装minimal ubuntu或者debian,不安装X,从命令行启动vpn。这样整个硬盘占用大概1G左右。
vbox要想界面可以关闭,可以在启动虚拟机时,选择detachable start(分离式启动)而不是start。
安装学校VPN
参考官方链接 https://oit.ncsu.edu/campus-it/campus-data-network/vpn/vpn-installation-instructions-for-ubuntu-and-red-hat-linux/ ,该软件依赖libgio2.0-cil-dev
。
安装完成并且直接在虚拟机里测试登录后,关闭虚拟机,并修改虚拟机的设置为500MB memory和 1 cpu thread。如果安装的是debian minimal,内存占用会在100MB以内,可以直接分配256MB memory。
从命令行启动cisco vpn的方法,参考Connect To VPN Server with Cisco AnyConnect from Linux Terminal。简单总结下就是,在~/.vpn_creds
写入你登录vpn时需要的参数,比如ncsu是
group id
username
Password
push
然后执行
/opt/cisco/anyconnect/bin/vpn -s < ~/.vpn_creds connect vpn.ncsu.edu
可将上述命令写成脚本或者bashrc的alias方便执行。一定要先在vbox里登录一下账户,否则vpn服务器端可能会判定你为不合法用户。
配置ssh跳板
参考在vpn下通过win10转发ssh[在host测试能否ssh登录]及后面的章节。
Reference
https://www.hanselman.com/blog/how-to-ssh-into-wsl2-on-windows-10-from-an-external-machine
https://blog.csdn.net/wudinaniya/article/details/80956158
https://vra.github.io/2020/03/04/wsl-dnc-sync/
https://wiki.gentoo.org/wiki/SSH_jump_host
https://www.codewoody.com/posts/11038/
https://www.how2shout.com/linux/how-to-install-qemu-kvm-and-virt-manager-gui-on-ubuntu-20-04-lts/
https://xubuntu.org/news/introducing-xubuntu-core/
https://askubuntu.com/questions/1233746/download-ubuntu-minimal-iso-20-04lts
https://computingforgeeks.com/connect-to-vpn-server-with-cisco-anyconnect-from-linux-terminal/
https://segmentfault.com/a/1190000014740871
Comments