本例:公网IP服务器 内网计算机(客户端) 均为WINDOWS系统
1.什么是内网穿透
内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。
2.什么是lanproxy
lanproxy 是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,目前仅支持 tcp 流量转发,可支持任何 tcp 上层协议(访问内网网站、本地支付接口调试、ssh 访问、远程桌面…)。目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud 等等
要搭建内网穿透,我们得完成两个任务
在客户端和服务端都需要安装JDK(JAVA环境v1.8.0以上环境包)自行百度下载安装,安装后不用配置环境变量,当然配置上也没坏处; 在公网能访问的服务器上运行我们的内网穿透服务端; 在本地电脑上面运行内网穿透客户端。3.下载安装包(注意下载WINDOWS版)
下载地址:
https://seafile.cdjxt.net/d/2e81550ebdbd416c933f/
proxy-server-0.1.zip 服务端
proxy-java-client-0.1.zip 客户端
源码地址
https://github.com/ffay/lanproxy
4.server端安装
server的配置文件放置在conf目录中,修改配置文件 config.properties的内容如下:
【只需要修改 server.port 端口供lanproxy服务使用,其它默认】
server.bind=0.0.0.0 server.port=3307 #本服务需要占用一个专门的端口来提供服务默认为4900请改成可用的防火墙允许的端口 #其它参数完全默认即可 server.ssl.enable=true server.ssl.bind=0.0.0.0 server.ssl.port=4993 server.ssl.jksPath=test.jks server.ssl.keyStorePassword=123456 server.ssl.keyManagerPassword=123456 server.ssl.needsClientAuth=false config.server.bind=0.0.0.0 config.server.port=8090 config.admin.username=admin config.admin.password=admin一个server可以支持多个客户端连接 配置数据存放在 ~/.lanproxy/config.json 文件中
***公网服务器端口和内网计算机端口的对应关系由WEB界面管理,配置文件中的端口是用来为lanproxy提供服务的【服务端-->客户端通信占用一个单独端口】、和其它端口没有关系,掉在这个坑里好半天才爬出来,网上所有资料都没有提到这个问题,当然这也和我服务器4900端口不通有关****
进入bin目录启动
代理配置,服务端机器打开地址 http://localhost:8090 ,进行在线管理界面,使用上面配置中配置的用户名密码登录
添加客户端,输入客户端备注名称(随便取名),生成随机密钥,提交添加
代理名称,推荐输入客户端要代理出去的端口,或者是客户端想要发布到公网的项目名称。 公网端口,填入一个服务器空闲端口,用来转发请求给客户端。 代理IP端口,填入客户端端口,公网会转发请求给该客户端端口。 提交后客户端默认“离线”状态5.client端安装
Java 客户端配置
Java client的配置文件放置在conf目录中,配置 config.properties
需要修改:client.key server.host server.port 这三个参数
client.key=f3acf2a6004d482c820adf565c2283da #上面WEB管理界面中创建客户端时产生的随机密钥 ssl.enable=false ssl.jksPath=test.jks ssl.keyStorePassword=123456 server.host=110.157.232.91#公网服务器IP或域名 server.port=3307#内网穿透服务用到的专用端口,默认是4900 #此端口与SERVER端config.properties配置文件中的server.port=3307对应 linux(mac)环境中运行bin目录下的 startup.sh windows环境中运行bin目录下的 startup.bat启动服务
本地服务能启动
公网IP访问
6.可用nginx反向代理
示例代码如下
server { listen 80; server_name dev.qdyc.com; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:800;# 服务器端地址端口 } }反向代理针对WEB网站当然是很好用的。如果用于远程桌面还是用IP吧,反向代理搞不成~
参考文档:
https://github.com/ffay/lanproxy
总结
通过以上的配置,只要有一台公网电脑,即可实现内网穿透功能。摆脱花生壳的域名端口限制,流量限制,带宽限制。
计划任务中添加开机自动运行startup.bat即可实现开机自动运行此BAT文件且不显示窗体(后台静静运行)【经测试win 10 win2008 win2019都能开机正常启动计划任务】
WINDOWS SERVER 2019系统远程登录用户手动运行bat客户端用户断开或注销后会被系统自动中断进程(其它系统则不会),bat窗口是用户运行的、是用户级的。用户注销或退出窗口就会自动关闭,win2019对这个机制有讲究。
解决办法:设置计划任务,将.bat文件设开机不需要登录以最高权限自动运行即可。
PS:新建一个“内网穿透客户端.vbs”文件内容为:
createobject("wscript.shell").run "startup.bat",0或内网穿透客户端.vbe:
set ws=wscript.createobject("wscript.shell") ws.run "startup.bat /start",0手动运行这个.vbs或.vbe文件可实现不显示窗口情况下启动服务。
经测试win2008 系统能正常运行.vbs脚本的计划任务;win 10 win 2019系统运行.vbs的计划任务失败,出现: 0x41301的错误提示;所以还是老实的运行.bat文件吧!
版权申明:本站文章均来自网络,如有侵权,请联系01056159998 邮箱:itboby@foxmail.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有