涉及的机器及其网络环境:

  • A:实验室服务器:拥有外网ip,但没有网络通就会被学校防火墙限制在校内

  • B:瀚海星云的一台云主机:没有外网ip,但是靠NAT可以访问外网

  • C:自己的腾讯云主机:不解释

C上跑一个python脚本,利用wsgiref监听127.0.0.1的c端口,一收到http request,则运行连接网络通的脚本

C通过ssh tunnel把c端口forward到B上127.0.0.1的b端口上

B再通过反向ssh tunnel把这个端口forward到A上127.0.0.1的a端口上

在A上的apache2上设置了某个地址proxy到127.0.0.1的a端口上

现在访问A上的那个网址就可以给C打开网络通啦