对称的安全隧道工具 otunnel

MIT
Google Go
跨平台
2017-02-10
ooclab

otunnel 是一款对称的安全隧道工具。特点及优势:

  • 单二进制程序:otunnel 为一个独立的二进制程序,可以作为 server 和 client 端。

  • 支持多操作系统平台:支持GNU/Linux, Unix-like, Mac, Windows,其他如 ddwrt 等 arm 平台。

  • 无需配置文件:命令行使用

  • 对称设计:同时支持 正、反向代理(端口映射)

  • 安全加密:支持 AES 对称加密

反向代理示意图

简明 otunnel 使用方法

前提:

  1. 假设 server 的地址为 example.com

  2. 从 client 能访问 server ( client 与 server 无需在同一个网络 )

注意 提供不同的运行参数,otunnel 程序可以作为 server 角色或 client 角色

快速上手

server 端

./otunnel listen :10000 -s longlongsecret

client 端

反向代理

举例:将 client 可以访问的 192.168.1.3:22 映射到 server 上的 10022 端口:

./otunnel connect example.com:10000 \
     -s longlongsecret \
     -t 'r:192.168.1.3:22::10022'

现在访问 example.com:10022 即等于访问了 client 内网的 192.168.1.3:22

正向代理

举例:假设 example.com 的 127.0.0.1 网络有 3128 端口(你懂的),在 client 执行:

./otunnel connect example.com:10000 \
     -s longlongsecret \
     -t 'f::20080:127.0.0.1:3128'

现在 client 上的任何程序访问 20080 等于访问了 example.com 上的本地 3128 端口。

选项详解

-t 格式

包含多个字段信息,以 : 隔开(为空的字段也不能省略:)。

代理类型:本地地址:本地端口:远程地址:远程端口
字段 含义
代理类型 r 表示反向代理; f 表示正向代理
本地地址 IP或域名
本地端口 整数
远程地址 IP或域名
远程端口 整数

说明

  1. 本地地址 或 远程地址 如果为空,表示所有网口

  2. otunnel 命令行可以包含多个 -t 选项,同时指定多条隧道规则

加载中

评论(3)

gwind
gwind
@小原00 这是个好问题,A <--> B 之间建立 TCP 链接后,无论哪一个端都可以“控制”映射规则,不过这需要 golang 编程实现。otunnel 只是基于我们开发的 es 做了一个非常简单的命令行工具封装。只能请看代码 :-)
y
youth_lee
newbility,刚好满足需求,作者辛苦
小原00
B connect A之后,可以让A控制B么 而不是在B上输入连接哪些端口 让在A上控制B连接连接端口,这样可以么? 如果不可以 要怎么改呢? 不是很熟悉go语言 请指点

暂无资讯

暂无问答

暂无博客

返回顶部
顶部