otunnel

对称的安全隧道工具
授权协议 MIT
开发语言 Google Go
所属分类 服务器软件、 代理服务器软件
软件类型 开源软件
地区 国产
投 递 者 胥诚
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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 选项,同时指定多条隧道规则

  • 需求 内网机器没有公网IP,但是可以访问外网,现在需要从外网访问内网机器。 举例,在家里机器A访问公司内网机器B。 前提 需要一台有公网IP的服务器S做中转,这样就可以打通AB两端了。 A <---> S <---> B 环境 家中A机,Win10 服务器S,Ubuntu 16.04 LTS 64 bit,公网IP: 123.12.23.13 (举例而已),SSH 端口: 22 内网B机,Ubun

 相关资料
  • 我有一个控制器,它在上接受一个名为的类。控制器方法看起来像这样: 第一控制器: 属性之一的类型为。 现在,我正在尝试添加某种包装器控制器(将在另一台服务器上运行),它也接受,并将请求转发给第一个控制器: 第二(包装)控制器: 当我向第一个控制器发送请求时: 无法写入JSON:找不到java类的序列化程序。伊奥。FileDescriptor,并且没有发现创建BeanSerializer的属性(为了避

  • 并非您希望公开的所有服务都是基于HTTP或TLS的。 ngrok TCP隧道允许您公开通过TCP运行的任何联网服务。这通常用于公开SSH,游戏服务器,数据库等。启动TCP隧道很容易。 公开在端口1234上运行的基于TCP的服务 ngrok tcp 1234 例子 公开侦听默认端口的SSH服务器 ngrok tcp 22 暴露一个Postgres服务器侦听默认端口 ngrok tcp 5432 暴露

  • HTTPS隧道使用ngrok.com证书终止ngrok.com服务器上的所有TLS(SSL)流量。 对于生产级服务,您需要使用自己的TLS密钥和证书对您的隧道流量进行加密。 ngrok使这个特别容易与TLS隧道。 将TLS流量转发到端口443上的本地HTTPS服务器 ngrok tls -subdomain=encrypted 443 一旦你的隧道运行,尝试访问它与curl。 curl --ins

  • 自定义子域名称 ngrok为它为您打开的HTTP隧道分配随机十六进制名称。 这对于一次性个人用途是可以的。 但是,如果您在黑客马拉松上显示URL或与第三方Webhook集成,则如果隧道名称更改或难以阅读,可能会令人沮丧。 您可以使用-subdomain开关为隧道URL指定自定义子域。 示例:打开具有子域“inconshreveable”的隧道 ngrok http -subdomain=incon

  • 我想通过SSH隧道访问jupyter笔记本,并遵循以下方法 要总结-: 1.登录远程机器 2.在新航站楼: 3.然后转到浏览器,然后转到 现在我的问题是:我只能在两个步骤中访问远程机器 jupyter笔记本电脑只安装在我的电脑上。 当我用较长的登录过程替换第一步的第一行时,第二步应该写什么? 当我插入remote_user=username和remote_user=my_pc_name时,我从ju

  • 我不确定这是否是由端口转发使用私钥而不是密码造成的,但下面是我正在尝试做的 我需要将本地端口3308一直转发到位于3306的my SQL DB。 我可以在我的本地终端上一起运行这样的事情 我在JSch或端口转发方面做错了什么吗?