Skip to content

Latest commit

 

History

History
152 lines (98 loc) · 4.2 KB

README_ZH.md

File metadata and controls

152 lines (98 loc) · 4.2 KB

mr2

English

Build Status License: GPL v3 捐赠 交流群

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

❤️ A project by txthinking.com

使用nami安装

$ nami install github.com/txthinking/mr2

使用brew安装(macOS)

$ brew install mr2

使用说明

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)

服务端客户端 使用教程

在远程服务器上. 注意防火墙开放所有相关端口的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 --serverPort 8888 -c 127.0.0.1:8080

更多参数: $ mr2 client -h

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

服务端客户端 的使用例子

暴露本地HTTP服务

$ mr2 client -s 1.2.3.4:9999 -p password --serverPort 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 --serverPort 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 --serverPort 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 --serverPort 8888 --clientDirectory /path/to/www --clientPort 8080

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

暴露本地brook代理

$ brook server -l :8080 -p password # 或者用 wsserver
$ mr2 client -s 1.2.3.4:9999 -p password --serverPort 8888 -c 127.0.0.1:8080

现在访问 1.2.3.4:8888 就等于访问 127.0.0.1:8080,做到在没有公网ip的机器上搭建brook,在外使用家里或者公司非公网ip上网

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

...

httpsserver 以及 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的情况测试通过.

开源协议

基于 GPLv3 协议开源