lanproxy搭建内网穿透服务器windows篇

本例:公网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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

猜你还会喜欢下面的内容

    无相关信息

中国领先的互联网域名及云服务提供商

为您提供域名,比特币,P2P,大数据,云计算,虚拟主机,域名交易最新资讯报道

域名注册云服务器