-
Notifications
You must be signed in to change notification settings - Fork 12
opennotr使用说明
本文档是关于如何安装和使用opennotr进行内网穿透,通过本文档的阅读,可以帮助使用者使用opennotr快速搭建内网穿透,并访问内网的tcp,http,udp服务。
必须要准备以下资源:
- 内网机器或者设备一台,可以是windows,mac,安装有linux系统的设备
- 公有云服务器一台,需要具备公网IP,并且检查确认安全组开放需要的端口
可选资源
- 域名
服务端程序需要在公有云服务器上安装,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.authKey
和server.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需要安装在内网当中,在本文档当中,会穿透内网的tcp
,udp
,http
服务作为测试,因此会有这三项配置,下面为配置文件
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