欢迎来到HugNew-拥抱变化,扫一扫右边二维码关注微信订阅号:Martin说 或 加QQ群:427697041互相交流,Stay hungry, Stay foolish.

双nat下进行命令行远程协助(NAT穿透,外网端口转发服务)

随笔 jim 2603℃ 0评论

背景

  • 去客户现场,客户是内网,无法远程连接进行调试。
  • 有的内网可以上外网,有的客户不可以上外网

需求

  • 两个在NAT内网中的机器,需要相互通信,或者需要联机帮助(bash, ssh等),怎么去做
  • 如果内网不可以上外网,远端机能否使用其他上网方式连接到外网server。如手机的3G网络进行通信,从而可以远程协助(只是命令行,减少数据流量)

设计考虑

两个内网的机器一个是本地操作机器,可以远程协助;一个是远端目标机器。本地机器可以获得远端机器的shell,执行相关操作

  • 本机,远端机器要尽量简单,主要是针对nc,ncat, socat,telnet等tcp连接。因为nc可以获取远端的shell,socat可以连接ssh,ncat可以使用ssl加密,
    如果可以是两台内网的机器能够通过这些工具连接上,可以满足相互通信,远程获取shell,执行命令的要求
  • 服务器端在外网,需要提供申请相关服务,申请之后内按照步骤可以使两台机器远程协助, tcp连接互通(与两台nc连接一样)
  • 远端机可否使用其他上网方式,只要能连接上server,有数据通道,理论上就可以远程操控远端机

服务器端的实现

可以考虑服务器端实现了端口映射,端口连接服务。譬如说,服务器端在监听端口2222,2223,本地机器连接2222, 远端机器连接2223,就可以实现通信目标。或者使用broker方式,发送到sserver的数据会转发给其他连接的客户端。也就是说,只要服务器端能够实现本机、远机的数据转发就可以实现操作,就是一个简单的socket forward。

  • 使用nc
    server端: cat twowaypipe | nc -l 2222 |nc -l 2223 >twowaypipe
    本机: nc 192.168.206.205
    远机: ncat 192.168.206.205 -e /bin/bash
    远机(使用nc) : cat twowaypipe | /bin/bash |nc 192.168.206.205 2223 >twowaypipe
  • 使用socat
    socat -d -d -lfaa.txt -v tcp-l:2222,reuseaddr,fork tcp-l:2223,reuseaddr
    本机: nc 192.168.206.205
    远机: ncat 192.168.206.205 -e /bin/bash
    远机(使用nc) : cat twowaypipe | /bin/bash |nc 192.168.206.205 2223 >twowaypipe
  • 使用ncat

server端使用connection broker模式,即所有连接的客户端都可以收到其他客户端发送的信息,有点儿类似pub/sub机制,都sub到broker上,然后发送消息之后其他sub的client都可以收到消息。server:ncat -v -l 2322 –broker

加密传输:

加密传输的考虑,

  • 连接服务器端本身就是加密的,与服务器端有交互
  • 在客户端加密,服务器端就是一个透明的pipe,服务器端只是forward数据

根据测试,系统加密传输要求

  • 本地机和远端机器有ncat, server使用ncat broker ssl模式
  • 本地机有ssh, 远端机有socat, sshd,server为非ssl模式(server就是个socket数据连接通道,远端机需要将连接重定向到sshd)
  1. ncat模式
    server: ncat -v  –ssl -l 2322 –broker
    本机: ncat 192.168.206.205 2322
    远机: ncat 192.168.206.205 2322 -e /bin/bash

client也可以使用socat与ssh的方式

  1. socat模式
    server: socat -d -d -lfaa.txt -v tcp-l:2222,reuseaddr,fork tcp-l:2223,reuseaddr
    本机: ssh -p 2222 192.168.206.205
    远机: socat tcp:192.168.206.205:31337,reuseaddr,fork tcp:localhost:22

下一步需要自己编写相关的server端逻辑,还有server端的web接口等。

文章合成均来自于网络参考,如有侵权,请联系作者(jim.mei@centling.com)。

转载请注明:HugNew » 双nat下进行命令行远程协助(NAT穿透,外网端口转发服务)

喜欢 (3)or分享 (0)
发表我的评论
取消评论

表情