部分内容引用遇见,在http://www.zuidaima.com/share/3659323964050432.htm上发表的内容。
目前国内部分地区的宽带运营商已经不再提供公网IP地址的服务了,或者当服务环境在防火墙和路由器后面的私网的时候,我们就需要通过内网穿透(打洞)形式访问我们在私网部署的服务。
目前国内的服务商有花生壳和nat123,都是要收费且不能静默部署的,虚拟专用网络连接有的时候有和需求不符。目前开源的穿透方案有ngrok、n2n、lanproxy等,下面我们来介绍下lanproxy。
LanProxy(下载)是一个JAVA便携的内网穿透解决方案,开源地址:https://github.com/ffay/lanproxy
服务端支持linux/Windows,客户端支持linux/Windows和部分嵌入式系统(下载)
环境:
jdk1.7+
一台外网服务器 有固定ip 这里假设外网ip为10.10.21.22 操作系统linux/windows
服务端配置步骤:
1. 下载的zip文件解压出来, 打开proxy-server-0.1/conf/config.properties文件,ssl默认是开启的 服务端口4993 ,如果不需要的话可以改为false 服务端口4900。
2. 在proxy-server-0.1/bin目录 windows执行startup.bat linux执行./startup.sh, 然后就可以在服务端8090端口访问了,账号密码就是config.properties里配置的admin/admin
3. 进入网页后点击添加客户端,点击提交,记住客户端的秘钥。方便给客户端使用。可以建立多个客户端,到时候同事要用可以分配一个客户端就好。
4. 添加客户端后 左侧导航栏会出现客户端名称,点击然后添加配置、
代理名称可以描述一下你的服务 比如我要外放mysql服务 就叫mysqlservice好了
公网端口就是你外网想访问的端口号 也就是外网服务器的某个端口号,配置多个的时候公网端口号不能重复配置。假如这里我外放27036接口
后端ip端口就是你分配到那台客户端的ip和端口 ip固定127.0.0.1就好,端口根据实际情况,比如是外放mysql 那么就是127.0.0.1:3306
客户端配置步骤:
1、 将proxy-client-0.1文件加拷贝到客户端机器上,linux/windows均可。
2、 修改proxy-client-0.1/conf/config.properties文件
这里的client.key 就是我们服务端配置的第3步得到的秘钥。
ssl这里因为服务器是false 这里也配置false就好。
server.host就是服务端的固定ip地址
3. 配置完后在proxy-client-0.1/bin目录 windows执行startup.bat, linux执行./startup.sh
然后在服务端的网页的客户端列表里就可以看到客户端已经在线了。
这就说明内网穿透已经配置成功。
然后你就可以使用10.10.21.22:27036的外网地址 访问到你本机的127.0.0.1:3306的本地数据库了。
这里支持tcp的任何上层协议。
以上配置文件中的SSL配置说明:
ssl.jks:通过java的keytool生成的ssl证书,有管理密码和口令密码,生成方法详见百度经验
server.ssl.keyStorePassword=口令密码
server.ssl.keyManagerPassword=管理密码
服务端和客户端使用同一证书。
服务端web管理界面配置说明:
config.server.bind=0.0.0.0 (默认0.0.0.0 绑定特定网卡,填写改网卡IP)
config.server.port=8090 (web端口)
config.admin.username=admin (用户名)
config.admin.password=admin (密码)
JAVA环境说明:
需要java 1.7+环境,安装jre或者jdk后需要配置环境变量,具体方法可以搜索。
服务器是CentOS的话shell执行yum -y install java即可安装。
如果想免安装部署可以提取jre的目录到客户端或服务端目录,重命名成jre(和bin、conf同级),然后修改bin下的startup.bat(第一行后面添加三行):
@echo off & setlocal enabledelayedexpansion setlocal SET JAVA_HOME=..\jre\ SET PATH=%JAVA_HOME%\bin;
然后通过srvany.exe注册为服务就可以开机后台自动运行。方法详见通过srvany.exe为任意程序创建服务编写
63 queries in 2.209 seconds |