# nl-transfer **Repository Path**: first_half_dream/nl-transfer ## Basic Information - **Project Name**: nl-transfer - **Description**: 简单的netty隧道,实现http代理,内网穿透 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-11-21 - **Last Updated**: 2024-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 呆小诺-内网代理 > 基于netty开发的内网穿透工具,支持tcp、Http 的代理转发。 > 本系统属于基础版本,暂无管理界面,暂不支持动态配置。 > http 服务可基于模块名进行转发代理 > > 内网穿透即为将内网中的服务映射到公网环境,使得公网客户端可以直接访问内网中的资源。本系统通过在一个具有公网环境的服务器上安装运行Server端,在需要实现代理的内网环境中部署agent客户端,完成代理隧道,从而实现访问公网客户端可以直接访问该公网地址,即可代理到对应的内网服务中,实现内网穿透,简单说就是找一个外网服务器来转发内网的数据。 ## 使用场景 > 主要用于帮助远程访问局域网内的http服务和tcp代理,远程访问位于局域网(没有公网)内的服务代理,比如http服务、远程电脑桌面、远程监控连接等,亦可以用于公司内部不能互相通信的多个局域网中,从而实现两个不互通的局域网服务互通。 ## 运行条件 * 本系统是基于jdk17开发,建议使用jdk17以上的版本,最低要求jdk8 ## 运行说明 系统通过程序所在目录的config文件夹中查找并加载配置文件。 > 启动服务端 * 创建/config/server.yml文件,文件内容如下: ``` http: - serverId: wxHttpServer # 服务id(唯一,agent注册后绑定的服务id) serverKey: 123456 # 服务key preUrl: /api # 代理后的url移除的url前缀 removePreUrl: true # 是否需要移除 preUrl前缀 port: 16005 # 监听端口 tcp: - serverId: desk3389 # 服务id (唯一,agent注册后绑定的服务id) port: 16001 # 监听端口 serverKey: 123456 # 服务key agentPort: 16000 # 用于agent注册的服务端口 agentKeyMap: 'csAgent': vsw-bp1m707vhmh2npcfgovk6 # 记录agent的名称和密钥,agent注册时的安全校验 ``` * 启动服务端:`java -jar nl-tunnel-proxy-1.0.0.jar &` > 启动服务端 * 创建/config/client.yml文件,文件内容如下: ``` transferServerIp: 127.0.0.1 #代理服务 proxy的服务ip transferServerPort: 16000 #代理服务 proxy的服务端口 agentId: csHttpAgent # agent名称 agentKey: vsw-bp1m707vhmh2npcfgovk6 # agent密钥 agent: - defaultIp: 127.0.0.1 # 本地转发至的ip(Server的默认转发地址,没有配置库模块转发时,默认使用此配置) defaultPort: 8012 # 本地转发至的端口 serverId: wxHttpServer # 服务id,对应服务端的serverId serverKey: 123456 # 服务对应的key proxyType: 1 # agent代理类型 1 http 0 tcp serverTransferMap: # 模块配置 cms-basic-api: # 模块名 ip: 127.0.0.1 # 转发地址 port: 37002 # # 本地转发至的端口 removeMode: false # 是否需要移除模块名 cs-auth: ip: 127.0.0.1 port: 37002 removeMode: true - defaultIp: 127.0.0.1 defaultPort: 3389 serverId: desk3389 serverKey: 123456 proxyType: 0 # tcp代理 ``` * 启动服务端:`java -jar nl-tunnel-agent-1.0.0.jar &` ## 配置说明 * `由于服务端添加了ip地址的过滤判断,服务端的resource里面已经添加的有ip2region.xdb,如果需要更新,自行下载,并放在config 文件夹中即可` * `ip过滤的方法在IpFilterRuleHandler中,且过滤仅仅在tcp转发时添加了过滤功能,http中没有` * `本程序在IpFilterRuleHandler中,固定写死了,仅支持上海的ip访问,如需修改,请自行修改源码` ## 测试说明 > ## 技术架构 > netty ## 协作者 >