# 介绍 ## ## 什么是内网穿透? 我想很多小伙伴刚学开发的时候,都会有一个想法,把自己写的网站运行在自己的电脑上,然后还想让别人通过网络访问到。 然后就接触到了花生壳,natapp,等穿透软件,感觉好神奇,为什么运行一个客户端就可以让别人通过外网访问到呢?这是怎么实现的呢,带着这个好奇心,所以就写了这个软件。 ## 为什么要自己搭建一个内网穿透? 使用第三方的内网穿透软件,比如natpp等,1、数据都流过他们的服务器,相对来说不太安全,2、 如果不充钱,网速慢不说,natpp还会限制你每分钟的请求数,还要注册一堆账号,泄漏个人信息给这些平台, 如果我们自己搭建一个穿透,带宽我们自己独享,而且没有数据泄漏的问题。 这个项目支持所有tcp上层协议,比如远程桌面,rtmp直播等 ## 软件结构 ![](https://img.kancloud.cn/60/ff/60ffd728f8d156b9c3140220c224efd4_694x359.png) ## 如何导入项目? * 先通过git拉取代码 https://gitee.com/haojiangbo/venomous_sting.git * 导入idea或者eclise, 如何导入代码, [请自行百度 O(∩_∩)O~~] * 下面是导入成功后的代码 * ![这是代码](https://img.kancloud.cn/b8/3d/b83d41ca85492f51af088ac04aa334ab_420x439.png) ## 如何运行项目 * **第一步** 找到proxy模块根目录下的config文件 ``` #二级域名,端口,客户端Id(key),本地服务地址和端口号 www,8080,1587133230,127.0.0.1:80 mysql,8081,1587133232,127.0.0.1:3306 首先我说明一下 这几个字符的含义, 我称他为路由表 www 是要配置的二级域名 8080 是服务单监听的端口, 1587133230 是clientId,只有这里正确了clientId,客户端才能连接上 127.0.0.1:80 就是需要暴露的 本地服务,必须为 host:port 的格式 详情请参考服务端源码解读文档 ``` * **第二步** 配置服务端端口号 ![](https://img.kancloud.cn/f5/e3/f5e32f9c124fd3d4b26c2bc29b8363bc_980x392.png) * **第三步** 启动服务端 先按照第一步的配置,配置成功后,找到proxy模块start包目录下面的StartProxyServerApp.java 启动main函数即可 * **第四步** 配置客户端 ![](https://img.kancloud.cn/bf/5e/bf5e9c2b437566685db5c0569f041d94_1000x394.png) * **第五步** 启动客户端 先按照第四步的配置,配置成功后,找到proxyclient模块start包目录下面的ClientAppStart.java 启动main函数即可 ## 如何使用 cli 使用命令行的方式 操作 config(路由表) ``` java -jar proxyServer.jar cli #启动 cli 目前只支持 list get set del flush exit 这几条命令 list 命令 查看 当前所有路由表 get 命令 get <clientId> 查看某一个clientId的路由表 例如 get abc set 命令 set <clientId> <field> <value> 设置路由表中具体的属性 比如 set abc port 999 del 命令 del <clientId> 删除路由表中的某一条记录 flush 命令 使 当前路由表 立即生效 exit 退出当前客户端 ``` ## 常用命令截图 ![](https://img.kancloud.cn/71/5f/715f6fe069569993d364a7ba7a87f99b_1031x785.png) ## 关于文档收费的问题 * 本项目代码完全开源,相信很多小伙伴即使不通过文档,也可以进行正常的运行和使用 * 因为写文档确实要比写代码困难多了,需要耗费大量的时间,所以收点费用当自己的幸苦费,希望大家理解