SSH 隧道作为代理
介绍一种基础的,紧急情况下可使用的,以 SSH 隧道作为代理使用的方法。
近期机场速度和延迟有明显的劣化,出于给自己留个后路的想法,并且尽量减少可能存在的机场跑路事件对我日常上网的冲击,就想着有什么办法能多找几个备用的代理服务器。一个方法是多买几个机场的服务,但是这个方法太耗资金了;另一个方法是自建代理服务,但是现有的加密代理协议除了 trojan,我都不大信任,但是 trojan 又需要一个 443 的端口,而我手头的 VPS 的 443 端口已经被占用了,虽然有复用端口的方法,但是我并没有能够成功实现过。出于这些原因,所以我一直没有在 VPS 上部署代理服务。
前段时间,为了在实验室访问寝室内的NAT下的nanopi,我折腾了一下SSH的转发功能,然后发现SSH有动态转发的选项。基于这个功能,我就可以很容易把 VPS 作为一个临时的代理服务器,所需要的操作也很简单
1 | # ${LOCAL_PORT} 是本地的端口,数据从这个端口转发到远程计算机 |
成功 ssh 上之后,设定本地的代理服务器为
127.0.0.1:${LOCAL_PORT}
(socks
协议)就能够访问外网了,所有本机的流量都会通过远程机器转发。
代理的流量走的是 SSH 协议,所以在保证了安全性的同时,也不同担心偶尔使用被封端口(谁没事封 SSH 啊),唯一的缺点可能就是不能根据规则对流量进行选择性转发了。不过作为一个临时性的代理服务器,也足够我在机场跑路的一段时间内找到下一个机场了。