自从上次 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
|