IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    neutrino-proxy 内网穿透更多的选择

    Teacher Du发表于 2024-11-01 03:51:26
    love 0

    自从上次 frp 因版本更新导致图床短时间无法访问后,杜老师一直在寻找其它内网穿透工具。机缘巧合遇到一个,看介绍很不错,但杜老师暂未进行性能测试,感兴趣的小伙伴可以试一下!

    运行示例

    首页可显示 License 统计、端口映射统计、今日流量、流量汇总、流量监控:

    系统管理页面中包含用户管理端口池管理、用户管理、端口分组管理、调度管理:

    端口池管理页面用于统一管理服务器内网穿透端口,方便统一设置安全组提高安全性:

    License 是客户端连接服务端唯一合法凭证。一个 License 同时只可以被一个客户端使用,一个 License 可维护多条端口映射:

    服务端 IP 端口对应客户端 IP 端口的四元组映射,是内网穿透的基本单元:

    代理示意

    当用户通过公网IP加端口访问时,服务端会通过指定端口回源到客户端随机端口,客户端会通过随机端口,反代本地服务端口,实现内网穿透:

    服务部署

    1.9.0 版本服务端配置格式有所调整。从之前版本升级的,需要注意。在服务器上创建目录/root/neutrino-proxy/config,以下是最新的服务端 app.yml 配置格式:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    server:
    # 服务端web端口,用于支持HTTP接口,管理后台页面访问
    port: ${WEB_PORT:8888}

    neutrino:
    proxy:
    logger:
    # 日志级别
    level: ${LOG_LEVEL:info}
    # 隧道相关配置-用于维持服务端与客户端的通信
    tunnel:
    # 线程池相关配置,用于技术调优,可忽略
    boss-thread-count: 2
    work-thread-count: 10
    # 隧道非SSL端口
    port: ${OPEN_PORT:9000}
    # 隧道SSL端口
    ssl-port: ${SSL_PORT:9002}
    # 隧道SSL证书配置
    key-store-password: ${STORE_PASS:123456}
    key-manager-password: ${MGR_PASS:123456}
    jks-path: ${JKS_PATH:classpath:/test.jks}
    # 是否开启隧道传输报文日志(日志级别为debug时开启才有效)
    transfer-log-enable: ${TUNNEL_LOG:false}
    server:
    tcp:
    # 线程池相关配置,用于技术调优,可忽略
    boss-thread-count: 5
    work-thread-count: 20
    # http代理端口,默认80
    http-proxy-port: ${HTTP_PROXY_PORT:80}
    # https代理端口,默认443 (需要配置域名、证书)
    https-proxy-port: ${HTTPS_PROXY_PORT:443}
    # 如果不配置,则不支持域名映射
    domain-name: ${DOMAIN_NAME:}
    # https证书配置
    key-store-password: ${HTTPS_STORE_PASS:}
    jks-path: ${HTTPS_JKS_PATH:}
    # 是否开启代理服务报文日志(日志级别为debug时开启才有效)
    transfer-log-enable: ${SERVER_LOG:false}
    udp:
    # 线程池相关配置,用于技术调优,可忽略
    boss-thread-count: 5
    work-thread-count: 20
    # 是否开启代理服务报文日志(日志级别为debug时开启才有效)
    transfer-log-enable: ${SERVER_LOG:false}
    data:
    db:
    # 数据库类型,目前支持sqlite、mysql、mariadb
    type: ${DB_TYPE:sqlite}
    # 数据库连接URL
    url: ${DB_URL:jdbc:sqlite:data.db}
    # 数据库用户名
    username: ${DB_USER:}
    # 数据库密码
    password: ${DB_PASSWORD:}

    当前最新版本为 1.9.0,下面的脚本中,可使用 registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy:1.9.0 指定版本安装,推荐使用 latest 直接安装最新版:

    1
    2
    3
    4
    docker run -it -p 9000-9200:9000-9200/tcp -p 8888:8888 \
    -v /root/neutrino-proxy/config:/root/neutrino-proxy/config \
    -d --restart=always --name neutrino \
    registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy:latest

    客户部署

    1.9.0 版本客户端配置格式有所调整。从之前版本升级的,需要注意。点击 这里 下载客户端软件包,并且在同级目录创建配置文件 app.yml,以下是最新客户端配置格式:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    neutrino:
    proxy:
    logger:
    # 日志级别
    level: ${LOG_LEVEL:info}
    tunnel:
    # 线程池相关配置,用于技术调优,可忽略
    thread-count: 50
    # 隧道SSL证书配置
    key-store-password: ${STORE_PASS:123456}
    jks-path: ${JKS_PATH:classpath:/test.jks}
    # 服务端IP
    server-ip: ${SERVER_IP:localhost}
    # 服务端端口(对应服务端app.yml中的tunnel.port、tunnel.ssl-port)
    server-port: ${SERVER_PORT:9002}
    # 是否启用SSL(注意:该配置必须和server-port对应上)
    ssl-enable: ${SSL_ENABLE:true}
    # 客户端连接唯一凭证
    license-key: ${LICENSE_KEY:}
    # 客户端唯一身份标识(可忽略,若不设置首次启动会自动生成)
    client-id: ${CLIENT_ID:}
    # 是否开启隧道传输报文日志(日志级别为debug时开启才有效)
    transfer-log-enable: ${CLIENT_LOG:false}
    # 重连设置
    reconnection:
    # 重连间隔(秒)
    interval-seconds: 10
    # 是否开启无限重连(未开启时,客户端license不合法会自动停止应用,开启了则不会,请谨慎开启)
    unlimited: false
    client:
    udp:
    # 线程池相关配置,用于技术调优,可忽略
    boss-thread-count: 5
    work-thread-count: 20
    # udp傀儡端口范围
    puppet-port-range: 10000-10500
    # 是否开启隧道传输报文日志(日志级别为debug时开启才有效)
    transfer-log-enable: ${CLIENT_LOG:false}

    首先确保本地已安装 Java8 运行环境,执行下面的命令启动客户端,查看服务端 License 管理,刷新页面,对应 License 在线状态为在线,表明客户端已正常连接:

    1
    java -jar neutrino-proxy-client.jar config=app.yml


沪ICP备19023445号-2号
友情链接