ssh over https

背景介绍:

最近公司进行骨干网升级,说是可以大幅提高网络访问速度,不过升级之后带来以下几点变化:

  1. 公司网络IP从天津变到荷兰,网速似乎变得更差了;
  2. 之前墙外的一些网站似乎仍然不能访问,现在国内一些网站也不能访问了;
  3. 公司里面的无线网中断服务,以后流量要告急了;
  4. 公司网络开始封锁一些常用端口,我常用的22号端口未能幸免遇难。

拯救我的22号端口

虽说直接屏蔽了22号端口,我当时还懊恼了一阵子,不过这个怎么能难得到我呢,为了突破封锁,获取自由,我想过多种方法:

  1. 用手机做热点,这样就可以获得绝对的自由,但是流量会告急,并且和公司网络直接需要做切换,比较麻烦;
  2. 用我的服务器做跳板实现端口的突破,这种实现方式稍微麻烦一些,但是没有网络切换的问题,为了方便和省钱还是决定采用这种方式。

公司网络的封锁机制

一般网络封锁机制有简单的基于端口的封锁,还有一种就是基于网络流量特征的封锁(比如著名的GFW),如果是后面一种封锁方式我基本上是可以洗洗睡了,但是我觉得公司应该不会搞这么复杂,所以猜测还是基于端口的封锁方式,毕竟实现简单。

为了测试是不是基于端口的封锁,我把家里的树莓派端口改到HTTPS的443上,然后SSH一连,哇塞,熟悉的界面瞬间就出来了,所以就是封锁了443嘛,不过,为什么这么慢,慢死了,我要狗带了。原来是IP改到荷兰啦,本来离家1公里,非要绕地球一圈,我真的想选择狗带。这么慢没法用呀,还好我还有美国的服务器,那就用美国的吧。

突破封锁

对于实现突破封锁,我刚开始的思路是在Nginx上创建一个代理,这样可以给SSH单独分配一个域名,实现起来也是比较简单的,但是尝试过多种方式之后,发现这种方式压根行不通,好像Nginx根本就不支持这种代理方式。

另外一种方式是一种曲线救国的方式,具体是采用jupyter里面的terminal,因为jupyter本身就是一个基于HTTP协议的,所以当时畅行无忧,不过VIM里猛敲ESC怎么没有反应???

算了还是搞个可以实现原生SSH的实现方式吧,既然Nginx不支持SSH的代理,那就不要占着443不放啦,让位吧,搞个haproxy走起~

在网上找到一个可以支持nginx, vpn, ssh, shadowsocks复用一个443端口的配置文件,很简单的就实现我需要的功能了嘛!还赠送一个shadowsocksVPN哈哈,终于可以回到过去了,我的自由。

当然还是要贴出haproxy配置文件的地址的。Haproxy configure file

相关文章

发表新评论