内网穿透都有哪些场景?
- 微信小程序或者在线支付系统等开发环境往往需要一个外网环境进行调试,不然的话,难以进行开发。
- 可以调试测试环境等服务器的程序(总有一些BUG本地无法复现,但是测试或者正式环境就是存在的吧…),修改一下网关重定向到代理本机,那就可以直接调试服务器的程序了,简直舒服得不行啊,省去了大量的编译打包上传的时间。
- 帮朋友搞点什么东西,提供外网访问,朋友直接可以看到效果,方便快捷。
- 本机和服务器是一家的体验
比较常见的穿透工具了解一下?
Ngrok、Natapp、小米球、Sunny-Ngrok、echosite、Ssh、autossh、Lanproxy、Spike、frp、fcn、nps、花生壳、网云穿
lanproxy
lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,支持tcp流量转发,可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面...)。目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。
lanproxy 有基于java(netty)实现,也有基于go实现的
仓库地址: gitee.com/fengfei/lan… 发行包下载: github.com/ffay/lanpro… file.nioee.com/d/2e81550eb…
搭建步骤
确保你有一个外网的服务器,并且有流量(我使用的是阿里云学生版小机机,流量也有1000G,完全够用了)
1. 下载发行包
前往 file.nioee.com/d/2e81550eb… 下载对应的server & client,我这里下载server 和 windows 版本的client
解压下载好的server包,目录结构如下
|---bin # 脚本目录
| |----startup.bat
| |----startup.sh
| |----stop.sh
|---conf # 配置文件目录
| |----config.properties
| |----log4j.properties
| |----test.jks
|---lib # 依赖jar
| |... (省略)
|---webpages # 页面文件
| |... (省略)
2. 配置server
修改 conf/config.properties
server.bind=0.0.0.0
# 客户端连接服务端的端口(server.ssl.enable=false时,使用下面配置的端口)
server.port=10307
server.ssl.enable=true
server.ssl.bind=0.0.0.0
# 客户端连接服务端的端口(server.ssl.enable=true时,使用下面配置的端口)
server.ssl.port=10308
server.ssl.jksPath=test.jks
server.ssl.keyStorePassword=123456
server.ssl.keyManagerPassword=123456
# 这个配置可以忽略(官方文档说的)
server.ssl.needsClientAuth=false
# WEB在线配置
config.server.bind=0.0.0.0
# WEB在线配置的端口,启动服务后可以打开http://IP:10305进行访问
config.server.port=10305
config.admin.username=admin
config.admin.password=admin
3. 启动server
把server文件夹上传到外网服务器。
- 进入到bin目录
- 添加执行权限 chmod +x startup.sh chmod +x stop.sh
- 启动服务 sh startup.sh
- 验证服务是否正常 浏览器打开http://IP:10305进行访问,并且输入配置文件(config.admin.username & config.admin.password)的用户名和密码
来到这里,说明你的服务端完成...
4. 添加客户端以及配置客户端
客户端管理 》添加客户端 key记录下来,一会在client需要用到
配置管理 》添加配置
5. 启动客户端
这里演示使用的是windows的.exe方式启动
解压下载好的client包是一个.exe文件,用windows的CMD窗口进入到对应目录执行下面脚本
client_windows_amd64.exe -s youPubilcServerIP -p youConfiguredPort -k youConfiguredClinetKey -ssl true
如:
client_windows_amd64.exe -s 47.xx.xx.01 -p 10308 -k 3eddfafgafasdgafadfgafda1b5cc -ssl true
6. 验证是否成功
由于在第4步的时候配置了10309端口映射127.0.0.1:18080
因此需要保证127.0.0.1:18080能正常访问,然后使用公网访问 如:http://IP:10309
如果使用proxy-java-client-0.1.zip运行客户端,则使用下面配置
# 与在proxy-server配置后台创建客户端时填写的秘钥保持一致;
client.key=服务端配置客户端的key
# 如果服务端启用了ssl, 那么客户端也需要配置启用
ssl.enable=true
ssl.jksPath=test.jks
ssl.keyStorePassword=123456
# 服务端的IP/域名
server.host=4x.xx.xx.x1
# 客户端连接服务端的端口
# ssl.enable=true时这里填写ssl端口,ssl.enable=false时这里填写普通端口
server.port=10308
结合nginx实现转发,https等都是不错的,结合VNC使用,可以实现到桌面共享等。。。 如果本文有帮助到你,请给我点个赞呗~~不白嫖呀!!
- 公众号:IT加载中(it_loading)
- CSDN:blog.csdn.net/JinglongSou…
- 博客:shaines.cn/
- 邮箱:for.houyu@qq.com
程序员[ 后宇 ],是一个关注编程,热爱技术的Java后端开发者,热衷于 [ Java后端 ],[ 数据爬虫领域 ]。不定期分享 I T 技能和干货!!欢迎关注 "IT加载中",一个只出 干货 和 实战 的公众号。