相信大家在遇到限制的网络都有种无奈和不爽吧。。举两个场景:客户提供访问对方内网的VPN,而访问正式服务器还需要经过一层跳板机;某些站点资源绑定了访问的出口IP,一旦离开指定网络就无法访问…像这些限制就是大大降低程序员的生产效率哇。

但有防御就有攻击。既然对方都摆出这么些阵势,那我们自己也需要备一些政策应对。

这里就大概分享下博主用到的几种方式。实用为主、简单为主,但是能解决问题就是极好的。

ssh (Linux/Mac)

ssh是一个很强悍的工具好吧。

  • 如果没有顺手的集群运维工具,如saltstack之类的,ssh(可能)就是远程执行命令的唯一选择了。
  • 同时,ssh连接到主机后,该连接自身就可以作为一条服务器与客户机的通道。

以下的命令就是利用ssh登陆主机后形成的链接来作文章,形成隧道以供多种用途:

  1. 本地端口转发
    命令:ssh -L 2121:host2:21 host3
    核心参数:-L
    登陆位置:localhost
    应用场景:
  2. 远程端口转发
    命令:ssh -R 2121:host2:21 host1
    核心参数:-R
    登陆位置:host3
    应用场景:
  3. 绑定本地端口
    命令:ssh -qTfnN -D 1080 dev@host3 -p 3822
    核心参数:-D
    登陆位置:localhost
    应用场景:

netsh (Windows)

虽然大多数服务器都是Linux的系统,但作为跳板机可能是Windows的。
Windows上也存在类似端口转发的工具,也就是netsh

命令:打开Windows的cmd

  1. netsh interface portproxy show all
  2. netsh interface portproxy add v4tov4 listenport=51433 connectaddress=host2 connectport=1433

执行位置:host3
辅助配置:
应用场景:

xshell (Windows)

Windows没有ssh的命令,但是ssh的工具一把。我就把我常用并且感觉用起来最便利的一款推荐。

纯粹GUI配置:

  1. 常规配置:登陆的host以及账号密码
  2. 隧道配置:切换到隧道页面,选择隧道类型并填写对应参数

辅助工具

  1. Proxy SwitchyOmega (Chrome Web Store / CRX
    参考配置:

参考文献

  1. SSH原理与运用(二):远程操作与端口转发
  2. 在windows上用netsh动态配置端口转发

本文作者:Tobin
本文地址http://www.thirteenyu.com/2018/04/22/share-tunnel-methods/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!