zoukankan      html  css  js  c++  java
  • 内网穿透系列Go语言

    一.介绍

    软件在KCP出现后进行了重构,将其底层UDP支持替换为了KCP,使其效率大大提高,在某些恶劣的网络环境下依旧能有不错的效果。当然,它也是支持TCP模式的,另外它也是支持加密的,在P2P打洞失败的情况下也能够自动切换为C/S模式来使用服务器中转。需要了解的是,软件也提供了Lite版本,仅支持P2P模式,数据完全不通过任何第三方服务器中转,保证了安全性,当然,这就要求了打洞的双方至少有一方拥有公网IP。

    和N2N类似的是,它也支持多个服务器,能够在多连接的情况下自动切换负载均衡以便提高速度。还有一个特殊之处,是其原生支持socks5代理,可以在公司网络等特殊网络环境下实现特定需求。

    二.配置

    先介绍常规版本
     
    dtunnel_s 启动时会监听一个tcp端口,通过-addr设置,如果需要-ssl(默认是false),那么要指定-cert加载ssl证书,之后客户端连接也要打开-ssl开关(默认是true的) -addrudp 是p2p打洞的辅助udp端口,能提高打洞成功率,对应dtunnel参数-buster指定同样的ip和端口
     
    dtunnel_s -addr 0.0.0.0:8000 -addrudp 0.0.0.0:8018 -admin 127.0.0.1:1234 -https -ssl -cert /path/to/https.crt -key /path/to/https.key -dbhost 1.2.3.4:3306 -dbpass mysqlpass -dbuser mysqluser -replace
     
    #参数说明
    -addr:TCP端口地址
    -addrudp:UDP端口地址,用于P2P辅助打洞
    -admin:管理接口,用于提供API方便管理
    -https:启用管理接口的HTTPS支持,需要指定-cert和-cert参数,默认关闭
    -ssl:启用ssl支持,启用需要指定-cert和-cert参数,默认关闭
    -cert:证书路径
    -key:证书密钥路径
    -dbhost:数据库服务器
    -dbpass:数据库密码
    -dbuser:数据库用户
    -replace:如果客户端注册名冲突,踢掉之前的,默认关闭
    -version:显示版本
     
    如果要鉴权(即如下方客户端那样有啥reg啊,link啊,然后还能限制同一IP使用数量),请配置数据库(配置数据库后客户端必须要指定key参数才能连上,这玩意是数据库里的AuthKey字段),数据库的初始化sql
    另外操作要么自己往里面填数据,要么用admin的API

    dtunnel_s 支持远程接口管理,如果需要,可通过-admin 指定ip:端口,比如-admin 127.0.0.1:1234

    支持的命令列表

    http://127.0.0.1:1234/admin?cmd=servers 列出所有reg的用户
    http://127.0.0.1:1234/admin?cmd=sessions&server=a 列出所有link到a的会话
    http://127.0.0.1:1234/admin?admin?cmd=kicksession&server=a&session=1 踢掉会话号为1的客户端(link端)
    http://127.0.0.1:1234/admin?cmd=kickserver&server=a 踢掉reg a的客户端
    http://127.0.0.1:1234/admin?cmd=broadcast&type=s&msg=test&quit=true 广播消息,type(s:reg端,c:link端,a:所有客户端),msg消息内容,quit(缺省参数,非空则广播后客户端被踢掉)

    http://127.0.0.1:1234/admin?cmd=usersetting (用户管理相关api,需要连接mysql)
    配置mysql需要用到auth/auth.sql 建表语句,建表前请先创建数据库dogtunnel
    连接mysql需要在启动参数中添加 -dbhost -dbuser -dbpass 参数,加了mysql之后就必须通过-key才能登录服务器
    mysql的使用方法请自行学习
    usersetting下面有多个子命令(直接拼在上面主api后面)
    &action=list&limita=0&limitb=10,分页列出用户信息
    &action=limit&user=aaa&size=10000 限制用户aaa的c/s模式流量上线为10k(每日)
    &action=add&user=aaa&passwd=1111&type=admin 添加用户aaa,密码1111,类型type(admin管理员(最高权限),black黑名单,super高级用户,type不传默认普通用户),返回的key用户dtunnel 的-key参数
    &action=get&user=aaa 返回aaa的用户信息
    &action=del&user=aaa 删除aaa
    &action=key&user=aaa 返回aaa的新key
    &action=set&user=aaa&type=super&serven=10&sessionn=100&pipen=10&sameip=10,对aaa的账号做功能限制,type指定的类型有默认的几套配置,也可以通过指定servern(可以注册的名字数上限),sessionn(每个注册的服务器可以连接的会话数上限),pipen(每个会话最多支持几条p2p管道),sameip(同ip可注册服务数上限)来单独指定配置
     
     
    至于客户端
    远端: dtunnel -addip 127.0.0.1 -buster 1.2.3.4:8018 -remote 1.2.3.4::8000 -clientkey testkey -compress -delay 2 -dnscache 20 -encrypt -kcp k2:v2 -reg test -local :80 -mode 0 -ssl
     
    近端: dtunnel -addip 127.0.0.1 -buster 1.2.3.4:8018 -remote 1.2.3.4::8000 -clientkey testkey -compress -delay 2 -dnscache 20 -encrypt -kcp k2:v2 -link test -local :8888 -mode 0 -ssl
     
    #参数说明
    -addip:出口IP(单个或列表)
    -buster:打洞服务器,用于P2P模式
    -remote:远程服务器,用于C/S模式
    -clientkey:客户端Key,用于远端和近端认证,需一致
    -compress:压缩数据,远端和近端需一致
    -debug:调试模式
    -delay:打洞失败后重试延迟,秒
    -dnscache:DNS缓存有效期,如果大于0将定时清空DNS缓存,分钟
    -encrypt:P2P模式加密
    -f:从文件中加载配置
    -kcp:kcp配置,远端和近端需一致
    -key:访问Key(服务端数据库中的AuthKey)
    -reg:注册名,远端使用
    -link:连接的注册名,近端使用,用于识别连接远端
    -local:本地监听端口,填socks5则为socks5代理服务
    -mode:连接模式(0:P2P打洞失败后切换为C/S 1:只使用P2P 2:只使用C/S)
    -pipen:管道数
    -ds:数据纠错??仅在P2P模式有效,远端和近端需一致
    -ps:奇偶校验??仅在P2P模式有效,远端和近端需一致
    -ssl:启用ssl支持,默认启用,服务端没有启用的话请使用-ssl=false来关闭
    -v:输出详细日志
    -version:显示版本
  • 相关阅读:
    解析Java反射java.lang.IllegalArgumentException: wrong number of arguments
    java中参数" ..."的用法和意思
    Synchronized方法锁、对象锁、类锁区别
    瀚云平台kafka简单原理
    ReflectionUtils.invokeMethod的作用
    实用———springmvc接收参数校验
    卷积神经网络CNN
    第一个TensorFlow程序
    TF从文件中读取数据
    TF基础5
  • 原文地址:https://www.cnblogs.com/XYDsoft/p/8490734.html
Copyright © 2011-2022 走看看