Mr.2: 内网穿透

2019-05-05 09:39:29 +08:00
 thisismr2

Mr.2

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 user@server_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 协议开源

10277 次点击
所在节点    分享创造
58 条回复
thisismr2
2019-05-05 09:41:32 +08:00
dabaibai
2019-05-05 09:46:00 +08:00
FRP?
thisismr2
2019-05-05 09:54:30 +08:00
差不多. 相对使用更简单吧
thisismr2
2019-05-05 10:04:00 +08:00
一直团队内部使用, 后续会把其他相关配套整理后也开源出来
shoaly
2019-05-05 10:24:41 +08:00
@thisismr2 相比 frp 确实要好理解一些, 主要是 frp 的配置特别绕.....
顺便问问, 能支持 多密码对应特定端口的方式么.... 这样就可以多个 client 连同一个 server, 通过用户名和密码分开了
比如:
mr2 server -l :9999 -p2 {"pws1":"1081","pws2":"1082"} 这种
Tink
2019-05-05 11:00:36 +08:00
好像有点像 dog tunnel ?
xionger
2019-05-05 11:04:17 +08:00
看起来不错,待会到公司了试试
thisismr2
2019-05-05 11:05:57 +08:00
@shoaly 理论上是可以的, 会考虑
thisismr2
2019-05-05 11:07:27 +08:00
@Tink 恕我孤落寡闻😂
Tink
2019-05-05 11:12:12 +08:00
jay0726
2019-05-05 11:19:07 +08:00
基于 Java Netty 实现的可用于内网穿透的代理工具 https://github.com/wucao/natx 帮忙点几个 Star 吧😆
thisismr2
2019-05-05 11:22:02 +08:00
定位还是有点不同的. Mr2 定位简单但足够用, Work as you see first
xionger
2019-05-05 11:25:17 +08:00
楼上来踢馆的好像献丑了,只支持 TCP。
楼主的貌似 UDP/TCP 全支持,可玩性更多
fclql
2019-05-05 11:30:13 +08:00
V6 时代 穿透还有什么意义
xionger
2019-05-05 11:31:40 +08:00
刚试了下,目前足够强大,ssh,http,dns TCP UDP 都试了下。
我试了下如果我本地是 https, 也是支持的,但是建议楼主增加个功能 如果我本地的时 http,能不能外网变成 https。

BTW 我是你另外项目 Brook 的用户,非常感谢。
unixeno
2019-05-05 11:35:53 +08:00
@xionger 这个不应该是 Nginx 之类的干的活吗
xionger
2019-05-05 11:45:18 +08:00
@unixeno 也对

我想的是,比如我的本地地址是 http://127.0.0.1:8080
目前已实现外网服务器地址是 http://1.2.3.4:5678
要是直接变成 https://1.2.3.4:5678 就用不到 nginx 了,哈哈
wwqgtxx
2019-05-05 11:58:13 +08:00
话说 udp 穿透部分还是走 udp over tcp 这样的么
thisismr2
2019-05-05 12:01:50 +08:00
@xionger

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

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

这块其实东西其实不多, 但是也不算少, 就是给人感觉有点啰嗦,
目前还在整理剥离内部代码后开源.
thisismr2
2019-05-05 12:05:16 +08:00
@wwqgtxx TCP 走 TCP, UDP 走 UDP.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/560986

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX