首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
宝塔
V2EX  ›  分享创造

Mr.2: 内网穿透

  •  4
     
  •   thisismr2 · 201 天前 · 6838 次点击
    这是一个创建于 201 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Mr.2

    Build Status License: GPL v3 EN

    Table of Contents

    Mr.2 是什么

    Mr.2 可以帮助你将内网服务器暴露在外网. 支持 TCP/UDP 协议, 当然也支持 HTTP 协议.
    让这个世界简单点.

    服务端

    $ mr2 server -l :9999 -p password
    

    客户端

    # 将本地服务 127.0.0.1:1234, 暴露在外网: server_address:5678
    $ mr2 client -s server_address:port -p password -P 5678 -c 127.0.0.1:1234
    
    # 将本地目录 /path/to/www, 以 HTTP 协议暴露在外网: server_address:5678
    $ mr2 client -s server_address:port -p password -P 5678 --clientDiretory /path/to/www
    

    示例

    访问内网 HTTP 服务

    $ mr2 client -s server_address:port -p password -P 5678 -c 127.0.0.1:8080
    
    # 然后
    你的外网 HTTP 服务: server_address:5678
    

    SSH 登录到内网机器

    $ mr2 client -s server_address:port -p password -P 5678 -c 127.0.0.1:22
    
    # 然后
    $ ssh -oPort=5678 [email protected]_address
    

    访问内网 DNS 服务

    $ mr2 client -s server_address:port -p password -P 5678 -c 127.0.0.1:53
    
    # 然后
    你的外网 DNS 服务: server_address:5678
    
    $ dig github.com @server_address -p 5678
    

    通过 HTTP 访问内网机器上的文件

    $ mr2 client -s server_address:port -p password -P 5678 --clientDirectory /path/to/www
    
    # 然后
    你的外网 HTTP 服务: server_address:5678
    

    任何基于 TCP/UDP 的你能想到的想法

    ...

    贡献

    请先阅读 CONTRIBUTING.md

    协议

    以 GPLv3 协议开源

    第 1 条附言  ·  201 天前
    58 回复  |  直到 2019-05-14 00:18:20 +08:00
        2
    dabaibai   201 天前
    FRP?
        3
    thisismr2   201 天前
    差不多. 相对使用更简单吧
        4
    thisismr2   201 天前
    一直团队内部使用, 后续会把其他相关配套整理后也开源出来
        5
    shoaly   201 天前
    @thisismr2 相比 frp 确实要好理解一些, 主要是 frp 的配置特别绕.....
    顺便问问, 能支持 多密码对应特定端口的方式么.... 这样就可以多个 client 连同一个 server, 通过用户名和密码分开了
    比如:
    mr2 server -l :9999 -p2 {"pws1":"1081","pws2":"1082"} 这种
        6
    Tink   201 天前 via iPhone
    好像有点像 dog tunnel ?
        7
    xionger   201 天前 via iPhone
    看起来不错,待会到公司了试试
        8
    thisismr2   201 天前
    @shoaly 理论上是可以的, 会考虑
        9
    thisismr2   201 天前
    @Tink 恕我孤落寡闻😂
        10
    Tink   201 天前 via iPhone
        11
    jay0726   201 天前
    基于 Java Netty 实现的可用于内网穿透的代理工具 https://github.com/wucao/natx 帮忙点几个 Star 吧😆
        12
    thisismr2   201 天前
    定位还是有点不同的. Mr2 定位简单但足够用, Work as you see first
        13
    xionger   201 天前 via iPhone
    楼上来踢馆的好像献丑了,只支持 TCP。
    楼主的貌似 UDP/TCP 全支持,可玩性更多
        15
    xionger   201 天前 via iPhone
    刚试了下,目前足够强大,ssh,http,dns TCP UDP 都试了下。
    我试了下如果我本地是 https, 也是支持的,但是建议楼主增加个功能 如果我本地的时 http,能不能外网变成 https。

    BTW 我是你另外项目 Brook 的用户,非常感谢。
        16
    unixeno   201 天前 via Android
    @xionger 这个不应该是 Nginx 之类的干的活吗
        17
    xionger   201 天前 via iPhone
    @unixeno 也对

    我想的是,比如我的本地地址是 http://127.0.0.1:8080
    目前已实现外网服务器地址是 http://1.2.3.4:5678
    要是直接变成 https://1.2.3.4:5678 就用不到 nginx 了,哈哈
        18
    wwqgtxx   201 天前 via iPhone
    话说 udp 穿透部分还是走 udp over tcp 这样的么
        19
    thisismr2   201 天前
    @xionger

    我们前端也是有这个需求的, 我们团队内部已支持, 支持服务端证书, 也支持客户端自己颁发的证书的(我们公司所有电脑已信任我们自签的根证书)

    比如你上面是可以用自己的根证书给 1.2.3.4 颁发证书, 然后将根证书需要给访问的人信息, 当然不信任也能访问就是浏览器提示不安全, 点下仍继续访问的问题.

    这块其实东西其实不多, 但是也不算少, 就是给人感觉有点啰嗦,
    目前还在整理剥离内部代码后开源.
        20
    thisismr2   201 天前
    @wwqgtxx TCP 走 TCP, UDP 走 UDP.
        21
    wwqgtxx   201 天前 via iPhone
    @thisismr2 那还是很好的,回头试试,frp 这一块就是走 over tcp 的,所以 udp 穿透的效果很差。
    话说未来有打算支持一下类似 n2n 这样的功能么?
        22
    xionger   201 天前
    @thisismr2 期待
        23
    thisismr2   201 天前
    @wwqgtxx 目前 p2p 建立连接需要服务端交换双方基础信息, 且根据 nat 类型还有很大概率最后建立不成功, 不成功还是得服务端中转数据. 经过我们以前的研究, 有不少家庭公司 nat 网络建立失败, 最后还是走了中转. 而且还可能得要求最终端的用户也安装个客户端.
        24
    shoaly   201 天前
    @thisismr2 go 不是很熟 , 可以给一个 大致的代码行数么, 空了试着自己改一个
        25
    iMusic   201 天前
    localhost.run 啥都不用装,不过功能没这么强大
        26
    thisismr2   201 天前
    @shoaly 主要是认证这块, 其实的确要改的东西也不是很多, 我这两天增加上这个吧.
    大概结果是:

    ```
    $ mr2 server --portPassword "1000 password" --portPassword "2000 password"
    ```

    client 使用不变
        27
    thisismr2   201 天前
    @iMusic 后期会考虑提供免费的 server
        28
    mooncakejs   201 天前
    不来个 docker image
        29
    shoaly   201 天前
    @thisismr2 可以的话, 到时候 @我嘛 一定红包酬谢...
        30
    kios   200 天前
    看上去配置起来比 frp 方便很多
        31
    thisismr2   200 天前
    @shoaly 好了 AT 你. red packet 不用了, 不接受个人任何形式的娟增 :) 那俩字打不出来 = = ||
        32
    thisismr2   200 天前
    @mooncakejs 可以用自己喜欢的 base image 做个自用嘛
        33
    heretreeli   200 天前
    n2n ??
        34
    ninestep   200 天前   ♥ 1
    支持 websocket 吗?我现在用到 frp 就走不通 websocket
        35
    iamxiaoq   200 天前 via Android
    昨天刚刚发现一个类似的 goproxy
        36
    thisismr2   200 天前   ♥ 1
    @ninestep 理论上支持任何 TCP-based UDP-based 的协议. websocket 属于 TCP, 所以是支持的, 我没测试
        37
    thisismr2   200 天前
    @kios 😊
        38
    thisismr2   200 天前
    @heretreeli 不同
        39
    thisismr2   200 天前
    @ninestep websocket 支持. 朋友已测试.
        40
    xionger   200 天前
    @unixeno 的确,我现在是 本地 + nginx + mr2
        41
    huaxianyan   200 天前
    感谢,回头试试
        42
    WenjieYe   200 天前
    感谢
    回头试试
        43
    designer   200 天前 via iPhone
    支持!
        44
    ihipop   200 天前 via Android
    是 brook 作者吗?
        45
    Dark1X   199 天前
    支持!非常好用!
        46
    thisismr2   199 天前   ♥ 1
    @shoaly

    ```
    # 只允许部分端口, 并针对每个端口设置密码
    $ mr2 server -l :9999 -P '5678 password' -P '6789 password1'
    ```
        47
    hanguofu   199 天前 via Android
    整个项目都是用 go 开发的吗?
        48
    thisismr2   199 天前
    @hanguofu 是的
        49
    xionger   198 天前 via iPhone
    #46 这个很有用
        50
    Valid   198 天前
    emmmm,有人 @我我才来的,来了看到没人 @我
        51
    04huang   198 天前
    所有的流量都走服务器?
        52
    thisismr2   198 天前
    @Valid 玄学问题
        53
    04huang   197 天前
    @thisismr2 我发现在 WIN 下老是提示 EOF 然后断开了链接。。
        54
    samondlee   196 天前
    233 可以考虑增加 arm 版本
    树莓派、N1 刷 armbian 应用应该比较多
        55
    thisismr2   195 天前 via iPhone
    @samondlee release 页面有啊
        56
    thisismr2   193 天前 via iPhone
    @04huang 为了可以复现,可以提个 issue
        57
    hzqim   192 天前
    谢谢分享。
    作为伸手党,期待 openwrt-mr2 以及 luci-app-mr2 的出现。
        58
    hzqim   192 天前
    @chenhw2 已经移植到 Openwrt 了
    openwrt-mr2 https://github.com/chenhw2/openwrt-mr2
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4159 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 27ms · UTC 08:53 · PVG 16:53 · LAX 00:53 · JFK 03:53
    ♥ Do have faith in what you're doing.