自建本地透传服务
一、思路
思路如下图所示
只有具有公网ip,普通设备才能去访问他,否则是无法访问的。所以需要访问本地设备还需要借助一台公网服务器。
这里的公网服务器就是起到了端口转发的作用,当上网设备想访问本地电脑时,他只能访问公网服务器,然后再由公网服务器将访问请求转发给本地电脑,同时将本地电脑的响应再返回给上网设备。这样就实现了透传。
但是为什么公网服务器可以将请求转发给本地电脑呢?
原理是在服务器上运行了代理程序,代理程序一直监听这本地PC的连接。而且本地电脑启动穿透服务后就一直在访问公网服务器,就等于是一个长连接。所以服务器可以直接访问本地PC了。
思路大致是这个情况,下面来实现本地透传。完成远程桌面和SSH服务的功能。
二、工具
lanproxy开源程序
公网服务器
需要透传的本地电脑
一些软件可能下载比较慢,我也上传上来方便大家下载。下载链接在文件最后。
三、实现透传功能-服务器端
3.1 准备公网服务器
这里没有限制,是一台公网服务器就行,我买的是阿里云的。也是自己以前搭建云平台留下来的,没舍得让他回收,一直续着,现在做点有用的事。
这里有个心得,除了阿里腾讯那种免费的服务器,其它的免费服务器不建议用,太坑了。
如果没有,买一个云服务器ECS,我是Centos系统。按提示配置一下就好。然后进行配置。
配置好就可以进入命令行配置服务器了。
也可以通过SSH连接,用Putty工具:
3.2 安装java运行环境
这一步相对于Windows简单地多了。Windows需要下载配置挺麻烦的。我这里是Centos,若是其它操作系统替换相应的命令即可。
下载:
这里一定要去官网下载JDK,不要用wget,不然没有同意Oracle的协议是下载不到正确的JDK的。现在下载需要登录。
下载传送门:走你.
这是要下载的版本。下载完成在解压,若是在其他机器下载就上传到Local机器上。用WinSCP
软件把文件传上去。
然后就是漫长的等待。
2000 Years Later。。。。。。
解压配置:
将下载好的JDK上传到用户目录下(later是我的主机名,看自己的替换):/home/later
解压到指定目录
mkdir -p /usr/lib/jvm
tar -xzvf jdk-8u261-linux-x64.tar.gz -C /usr/lib/jvm/
配置JAVA_HOME和JRE_HOME,vim /etc/profile
,在最后添加(root权限下):
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_261
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
使安装生效:
source /etc/profile
执行测试:
执行java或者javac
3.3 安装lanproxy(在公网服务器上)
下载传送门:走你.
圈出来的两个压缩包都用的到
上传到服务器,进行配置:
解压安装:
unzip proxy-server-0.1.zip
mv proxy-server-0.1 /usr/local/
修改配置:(可不改,我是没有修改)
vim /usr/local/proxy-server-0.1/conf/config.properties
启动服务:
cd /usr/local/proxy-server-0.1/bin
chmod +x startup.sh
./startup.sh
测试:
查看下端口开放情况: netstat -lnpt
在浏览器访问(任意电脑) http://1x8.1x1.1x1.12:8090
(1x8.1x1.1x1.12
是公网IP)
这里如果访问不了,检查一下防火墙的配置.防火墙配置.
最后找的原因是阿里云的安全规则(使用到的端口自己手动去开放
),需要手动添加:
还有一个问题
这时候登录还是啥都没有,原因不清楚,火狐不行换了谷歌就OK了。
首次默认登录账号密码是 admin
admin
3.4 反向代理Nginx
这里我看到网上有这么做的,我没做,不影响使用。
3.5 配置客户端转发
这里就和本地电脑有关联了。
添加客户端
在上一步新建的客户端里面配置端口转发:
代理名称无所谓,能标识就行。
公网端口写一个没有被占用的端口就行,随便写,不要与22之类被占用的。在阿里服务器那里也要打开一下。
后端IP端口就是:127.0.0.1
:port
这里后端的port则需要注意,你要用ssh就配置22,要用RDP就用3389这样的。
配置好是这样的:
四、实现透传功能-本地端
服务器配置完成了,现在在客户端简单配置即可使用.
用到之前让下载的(同样的java环境需要) proxy-client-0.1.zip
解压 :
unzip proxy-java-client-0.1.zip
修改配置 进入proxy-client-0.1/conf
目录,修改config.properties
为:
四部分:
一是client.key=axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8
,
二是ssl.enable=true
,
三是server.host=1x.xx.xx.x7
,
四是server.port=4993
#与在proxy-server配置后台创建客户端时填写的秘钥保持一致;没有服务器可以登录 https://lanproxy.org/ 创建客户端获取秘钥
client.key=axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8
ssl.enable=true
ssl.jksPath=test.jks
ssl.keyStorePassword=123456
#这里填写实际的proxy-server地址;没有服务器默认即可,自己有服务器的更换为自己的proxy-server(IP)地址
server.host=1x.xx.xx.x7
#proxy-server ssl默认端口4993,默认普通端口4900
#ssl.enable=true时这里填写ssl端口,ssl.enable=false时这里填写普通端口
server.port=4993
执行 进入proxy-client-0.1/bin
目录,
这里要是windows系统则执行.bat
文件
./startup.sh
即可启动lanproxy客户端。
已经在线,穿透完成.
阿里云自己端口需要自己再次打开(用到的端口在阿里那里都手动打开一下)。
Putty连接远程测试一下 Ip:port(这里是proxy客户端配置的端口号)
五、简单的客户端程序
实际上就是自己写的Putty和远程桌面连接的管理工具。
远程桌面管理工具(MyRDP)
Putty工具+WinSCP的部分功能。
代码开源:完善后会发布在我的Github上
六、Tip
本文所用的文件
本文所用到的文件: 打包文件.
如果有时间就在官网下载,没有就下载我这个,我一般设置积分都是最低的,CSDN会默认增长,如果增长可留言我修改下。
或者从官网下载:
lanproxy下载:
github地址
文件下载地址.
JDK下载:走你.
WinSCP的使用
(如果没用过最好直接百度)
ubuntu下RDP配置
看这篇博客: