NCSU的服务器需要先登录学校的VPN,但是开启VPN后,流量默认走VPN,会对所有程序产生影响。

之前写过一篇用win10来做跳板的,但是本质上,也是用win10的ubuntu子系统。今天记录一下直接用一个资源占用较小的ubuntu作为跳板登录学校服务器的方法。

1. 使用更简单的docker

openconnect支持cisco vpn的账户,可以直接docker pull findhao/ncsuvpn:latestpull现有的镜像,

使用如下命令开启一个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


文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
https://findhao.net/easycoding/2584.html

Comments