技术解析

Mr.2 帮助你将本地端口暴露在外网.支持 TCP/UDP [ 增加 httpsserver 和 httpsclient ]
0
2021-06-08 08:02:21
idczone

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=888大带宽服务器8 [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 协议开源


和 nps 对比有什么区别?

和 gost 对比有什么区别?

你这个直接端口映射有区别吗?

和 frp 对比有什么区别?

和 goproxy 对比有什么区别?

:B 不完全了解, 我也不知道具体有啥区别, 可能有 原生的 UDP 支持, 只需一条命令 或 支持泛域名证书吧

记得这是两个类型的吧. $ brook relay?

路由器上吗, 很多人应该没有外网 IP, 运营商不给

https 那块好像有点区别, mr2 客户端不需要关心证书. 这个功能根据我们团队内部使用经验刚开源

名字是老二的意思?

nps 好用.

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服