美文网首页Kali Linux
端口复用简单实现

端口复用简单实现

作者: 王一航 | 来源:发表于2017-10-20 01:55 被阅读345次

    端口复用 :

    举一个简单的例子
    一台内网服务器 , 一台出口路由器 , 路由器将内网的 80 端口映射到公网
    在不了解端口复用技术以前 , 笔者就会单纯地觉得 , 当然用户直接访问 80 端口就只能访问到内网服务器的 HTTP 服务
    其实使用端口复用技术是可以达到浏览器访问就会是正常的网页 , 而用 ssh 连接就会是 ssh 终端登录的情况的
    事实上 , 我们熟悉的 socks 协议就是高级的端口复用技术的产物
    

    原理 :

    1. 首先实现一个端口转发工具
    2. 在端口转发工具的基础上增加一些逻辑 , 如下
    a. 在 accept 到一个新的客户端请求的时候 , 首先读取前几个字节
    b. 根据前几个字节判断这个请求是在请求什么服务 ? 
    例如 : 
    HTTP => GET / POST / HEAD / OPTIONS ...
    SSH => SSH-2.0-OpenSSH
    
    1. 根据第二步中的判断确定要转发的目的端口
    2. 连接目标端口 , 并将之前接收到的数据首先发过去再进行双向传输

    给出一个简单的实现 :

    端口复用 : https://gist.github.com/WangYihang/517fbc8e1875938aa62e942be250cf8e
    端口转发 : https://gist.github.com/WangYihang/e7d36b744557e4673d2157499f6c6b5e


    参考文档 :

    RFC1928 (SOCKS5)

    相关文章

      网友评论

        本文标题:端口复用简单实现

        本文链接:https://www.haomeiwen.com/subject/celmuxtx.html