opennotr使用说明 - ICKelin/opennotr GitHub Wiki

opennotr使用说明

本文档是关于如何安装和使用opennotr进行内网穿透,通过本文档的阅读,可以帮助使用者使用opennotr快速搭建内网穿透,并访问内网的tcp,http,udp服务。

目录

准备

必须要准备以下资源:

  • 内网机器或者设备一台,可以是windows,mac,安装有linux系统的设备
  • 公有云服务器一台,需要具备公网IP,并且检查确认安全组开放需要的端口

可选资源

  • 域名

返回目录

安装服务端程序opennotrd

服务端程序需要在公有云服务器上安装,opennotrd依赖的组件比较多,建议使用docker进行安装,本文档也只会阐述使用docker安装opennotrd的步骤。

  • 安装docker,可以参考: Get Docker
  • 创建配置文件目录

mkdir -p /opt/data/opennotrd/cert

root@iZwz97kfjnf78copv1ae65Z:/opt/data/opennotrd# tree
.
|-- cert ---------------------> 证书,秘钥目录
|   |-- upstream.crt
|   `-- upstream.key
`-- notrd.yaml ---------------> opennotrd启动的配置文件

2 directories, 5 files

其中cert存放的是证书和私钥文件,可以通过lets encrypt生成,参考: certbot

notrd.yaml为程序运行的配置文件:

server:
  listen: ":10100"
  authKey: "client server exchange key"
  domain: "open.notr.tech"

tcpforward:
  listen: ":4398"

udpforward:
  listen: ":4399"

dhcp:
  cidr: "100.64.242.1/24"
  ip: "100.64.242.1"

# resolver:
#   etcdEndpoints: 
#     - 127.0.0.1:2379

plugin:
  tcp: |
    {}

  udp: |
    {
      "sessionTimeout": 30
    }

  http: |
    {
      "adminUrl": "http://127.0.0.1:81/upstreams"
    }

  https: |
    {
      "adminUrl": "http://127.0.0.1:81/upstreams"
    }

  h2c: |
    {
      "adminUrl": "http://127.0.0.1:81/upstreams"
    }
  dummy: |
    {}

大部分情况下,只需要修改server.authKeyserver.domain字段即可, authKey为客户端与服务端的一个简单的认证方式,domain为整个系统使用的域名,如果你不需要开启resolver功能,可以不设置domain。

接下来可以通过一条docker语句,创建并启动容器。

docker run --privileged --net=host -v /opt/logs/opennotr:/opt/resty-upstream/logs -v /opt/data/opennotrd:/opt/conf -d ickelin/opennotr:v1.0.4

然后使用docker ps|grep opennotr确认容器是否启动,如果未启动,可以联系作者或者提交issues

安装客户端程序opennotr

客户端程序opennotr需要安装在内网当中,在本文档当中,会穿透内网的tcpudphttp服务作为测试,因此会有这三项配置,下面为配置文件

serverAddr: "demo.notr.tech:10100"
key: "client server exchange key"
domain: "opennotrd的公网IP"
forwards:
  - protocol: tcp
    ports:
      10105: 2222
  
  - protocol: udp
    ports:
      10106: 9095
  
  - protocol: http
    ports:
      0: 8080
  • serverAddr指定服务端程序监听的ip/域名和端口
  • domain指定客户端对应的公网ip,也可以使用已经解析为该公网ip的域名
  • key指定客户端与服务端认证的token,双方一致才能连接成功
  • forwards配置转发信息,其中protocol对应的opennotrd插件名称,大部分情况下,插件名称和protocol是相等的,不排除后续可能会有修改;ports对应的转发端口信息,key为opennotrd监听的端口,value为本机监听的端口。对于http而言,端口固定为80,不支持自定义端口。

配置完成之后,可以启动opennotr客户端程序

./opennotr -conf config.yaml

返回目录

功能验证

首先验证http穿透,本说明当中,http穿透的内网端口为8080,使用python启动一个简单的http服务,然后通过curl命令调用.

接下来验证tcp穿透,tcp穿透的代码在测试目录下,这项测试创建一个tcp的echo服务进行验证

udp测试类似

返回目录

关于作者

一个爱好编程的人,网名叫ICKelin。对于以下任何问题,包括

  • 项目实现细节
  • 项目使用问题
  • 项目建议,代码问题
  • 案例分享
  • 技术交流

可加微信: zyj995139094