V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
thisismr2
V2EX  ›  程序员

Mr.2 帮助你将本地端口暴露在外网.支持 TCP/UDP [ 增加 httpsserver 和 httpsclient ]

  •  
  •   thisismr2 ·
    txthinking · 2021-03-26 02:19:40 +08:00 · 2123 次点击
    这是一个创建于 1336 天前的主题,其中的信息可能已经有所发展或是发生改变。

    mr2 帮助你将本地端口暴露在外网.支持 TCP/UDP, 当然也支持 HTTP. Keep it simple, stupid.

    安装 via nami

    $ nami install github.com/txthinking/mr2
    

    Usage

    NAME:
       mr2 - Expose local TCP and UDP server to external network
    
    USAGE:
       mr2 [global options] command [command options] [arguments...]
    
    VERSION:
       20210401
    
    COMMANDS:
       server       Run as server mode
       client       Run as client mode
       httpsserver  Run as https server mode
       httpsclient  Run as https client mode
       help, h      Shows a list of commands or help for one command
    
    GLOBAL OPTIONS:
       --help, -h     show help (default: false)
       --version, -v  print the version (default: false)
    

    server and client

    在远程服务器上. 注意防火墙开放所有相关端口的 TCP 和 UDP 协议

    $ mr2 server -l :9999 -p password
    

    更多参数: $ mr2 server -h

    在本地. 假设你的远程 mr2 server 是1.2.3.4:9999, 你的本地服务是127.0.0.1:8080, 你想让远程服务器开放8888端口

    $ mr2 client -s 1.2.3.4:9999 -p password -P 8888 -c 127.0.0.1:8080
    

    更多参数: $ mr2 client -h

    现在访问 1.2.3.4:8888 就等于 127.0.0.1:8080

    举例 server and client

    暴露本地 HTTP 服务

    $ mr2 client -s 1.2.3.4:9999 -p password -P 8888 -c 127.0.0.1:8080
    

    现在访问 1.2.3.4:8888 就等于 127.0.0.1:8080

    暴露本地 SSH 服务

    $ mr2 client -s 1.2.3.4:9999 -p password -P 8888 -c 127.0.0.1:22
    

    现在访问 1.2.3.4:8888 就等于 127.0.0.1:22

    $ ssh -oPort=8888 [email protected]
    

    暴露本地 DNS 服务

    $ mr2 client -s 1.2.3.4:9999 -p password -P 8888 -c 127.0.0.1:53
    

    现在访问 1.2.3.4:8888 就等于 127.0.0.1:53

    $ dig github.com @1.2.3.4 -p 8888
    

    暴露本地目录通过 HTTP

    $ mr2 client -s 1.2.3.4:9999 -p password -P 8888 --clientDirectory /path/to/www --clientPort 8080
    

    现在访问 1.2.3.4:8888 就等于 127.0.0.1:8080, web root 是 /path/to/www

    暴露你能想到的任何 TCP/UDP 服务

    ...
    

    httpsserver and httpsclient

    在远程服务器上. 假设你的域名是 domain.com, 泛域名证书*.domain.com./domain_com_cert.pem./domain_com_cert_key.pem, 想让 HTTPS 监听 443`. 注意防火墙开放任何相关端口的 TCP 协议

    $ mr2 httpsserver -l :9999 -p password --domain domain.com --cert ./domain_com_cert.pem --certKey ./domain_com_cert_key.pem --tlsPort 443
    

    更多参数: $ mr2 httpsserver -h

    在本地. 假设你的远程 mr2 httpsserver 是 1.2.3.4:9999, 你的本地 HTTP 1.1 服务是 127.0.0.1:8080, 想让远程服务器开放子域名 hey

    $ mr2 httpsclient -s 1.2.3.4:9999 -p password --serverSubdomain hey -c 127.0.0.1:8080
    

    更多参数: $ mr2 httpsclient -h

    现在访问 https://hey.domain.com:443 就等于 http://127.0.0.1:8080

    关于 UDP

    在一些多层 NAT 情况下, 可能 UDP 会失败. 我在本地直接连接 ISP 提供的 Wi-Fi 的情况测试通过.

    作者

    A project by txthinking

    开源协议

    基于 GPLv3 协议开源

    11 条回复    2021-03-26 16:55:47 +08:00
    kekxv
        1
    kekxv  
       2021-03-26 07:40:32 +08:00 via iPhone
    和 nps 对比有什么区别?
    yorkyoung
        2
    yorkyoung  
       2021-03-26 08:47:41 +08:00
    和 gost 对比有什么区别?
    buxvyaomingzi
        3
    buxvyaomingzi  
       2021-03-26 09:32:34 +08:00
    你这个直接端口映射有区别吗?
    Acoffice
        4
    Acoffice  
       2021-03-26 09:53:46 +08:00
    和 frp 对比有什么区别?
    Acoffice
        5
    Acoffice  
       2021-03-26 09:53:58 +08:00
    和 goproxy 对比有什么区别?
    thisismr2
        6
    thisismr2  
    OP
       2021-03-26 11:58:17 +08:00
    @kekxv :B 不完全了解, 我也不知道具体有啥区别, 可能有 原生的 UDP 支持, 只需一条命令 或 支持泛域名证书吧
    thisismr2
        7
    thisismr2  
    OP
       2021-03-26 12:01:00 +08:00
    @yorkyoung 记得这是两个类型的吧. $ brook relay?
    thisismr2
        8
    thisismr2  
    OP
       2021-03-26 12:05:58 +08:00
    @buxvyaomingzi 路由器上吗, 很多人应该没有外网 IP, 运营商不给
    thisismr2
        9
    thisismr2  
    OP
       2021-03-26 12:13:09 +08:00
    @Acoffice https 那块好像有点区别, mr2 客户端不需要关心证书. 这个功能根据我们团队内部使用经验刚开源
    dk7952638
        10
    dk7952638  
       2021-03-26 16:44:21 +08:00
    名字是老二的意思?
    snuglove
        11
    snuglove  
       2021-03-26 16:55:47 +08:00
    nps 好用.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1540 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:06 · PVG 01:06 · LAX 09:06 · JFK 12:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.