近期在开源中国有看到 Neutrino-proxy 的一些介绍,了解到 NeutrinoProxy 是一款基于 Netty 的内网穿透工具,官方的介绍信息如下:
基本介绍
中微子代理 (neutrino-proxy) 是一款基于 netty 的内网穿透神器。该项目采用最为宽松的 MIT 协议,因此您可以对它进行复制、修改、传播并用于任何个人或商业行为。
- Gitee 地址:https://gitee.com/dromara/neutrino-proxy
- 官网地址:http://neutrino-proxy.dromara.org
服务端管理后台截图:
主要特点:
- 1、流量监控:首页图表、报表管理多维度流量监控。全方位掌握实时、历史代理数据。
- 2、用户 / License:支持多用户、多客户端使用。后台禁用实时生效。
- 3、端口池:对外端口统一管理,支持用户、License 独占端口。
- 4、端口映射:新增、编辑、删除、禁用实时生效。
- 5、Docker:服务端支持 Docker 一键部署。
- 6、SSL 证书:支持 SSL,保护您的信息安全。
- 7、域名映射:支持绑定子域名,方便本地调试三方回调
- 8、采用最为宽松的 MIT 协议,免去你的后顾之忧
之前一直有在用 FRP 作为内网穿透工具,用了很多年也确实非常好用,不过 FRP 在可视化管理方面比较欠缺,虽然提供了dashboard,但是只提供了代理端口查看及浏览统计方面的功能,不能提供多用户方面的管控。而 Neutrino 正好弥补了这方面的不足。
以下是使用 docker compose 部署相关的代码,仅作为记录。
服务端:
docker-compose.yml
version: '3.8'
services:
app:
image: registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy:latest
container_name: neutrino-proxy
restart: always
networks:
- net-zzl
ports:
- 9000-9200:9000-9200/tcp
- 9201:8888
volumes:
- ./config:/root/neutrino-proxy/config
networks:
net-zzl:
name: bridge_zzl
external: true
./config/app.yml
neutrino:
data:
db:
type: mysql
# 自己的数据库实例,创建一个空的名为'neutrino-proxy'的数据库即可,首次启动服务端会自动初始化
url: jdbc:mysql://DB_HOST:3306/neutrino-proxy?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useAffectedRows=true&useSSL=false
driver-class: com.mysql.jdbc.Driver
# 数据库帐号
username: DB_USERNAME
# 数据库密码
password: DB_PASSWORD
客户端
官网文档不推荐使用docker的方式部署,但是考虑到要部署Java 环境之类的,对宿主机而言是挺麻烦的,还是试着通过docker 的方式部署的客户端,经过验证也是 OK 的。
docker-compose
version: '3.8'
services:
app:
image: aoshiguchen/neutrino-proxy-client:latest
container_name: neutrino-proxy-client
restart: always
network_mode: host
volumes:
- ./config:/root/neutrino-proxy/config
./config/app.yml
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,这里替换成主机IP或域名
server-ip: ${SERVER_IP:proxy.xxx.com}
# 服务端端口(对应服务端app.yml中的tunnel.port、tunnel.ssl-port)
server-port: ${SERVER_PORT:9002}
# 是否启用SSL(注意:该配置必须和server-port对应上)
ssl-enable: ${SSL_ENABLE:true}
# 客户端连接唯一凭证,这里替换成key
license-key: ${LICENSE_KEY:ec7e9906cXXXXXX6430895c37fec75cd4e11}
# 客户端唯一身份标识(可忽略,若不设置首次启动会自动生成)
client-id: ${CLIENT_ID:workServer}
# 是否开启隧道传输报文日志(日志级别为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}
评论 (0)