使用lanproxy自建内网穿透及远程桌面连接内网

搭建内网穿透

GitHub原文介绍:lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,支持tcp流量转发,可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面…)。目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。

准备

  • 一台公网服务器,用来运行服务端 proxy-serve
  • 一台内网电脑,用来运行客户端 proxy-client
  • 代码包,访问github地址下载源码构建或者直接访问发布包下载地址

本示例的环境为Centos&win10,下载了如下的软件包

 

请选择和自己操作系统对应的发行包,服务器文件存放位置请参看Linux目录结构及命名规范

下载服务端至服务器

直接下载服务端至服务器

cd /opt
wget https://file.nioee.com/d/2e81550ebdbd416c933f/files/?p=/proxy-server-0.1.zip -O proxy-server-0.1.zip
unzip proxy-server-0.1.zip
复制代码

或者也可以下载至本地通过rz上传至服务器

yum install lrzsz
cd /opt
rz
复制代码

rz命令会弹出文件选择框

 

安装JAVA依赖

#卸载服务器自带的java版本
rpm -e --nodeps `rpm -qa | grep java`
#查看yum中的java版本
yum search java | grep jdk
#选择具体的版本进行安装
yum install java-1.8.0-openjdk.x86_64
#默认安装目录 查看安装的具体版本号
cd /usr/lib/jvm/
#复制安装路径,本示例目录如下
pwd
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
#配置JAVA_HOME环境变量
vim /etc/profile
#在文件末尾添加如下配置,注意替换实际的安装路径
#--------------java
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
#--------------end
#刷新环境变量
source /etc/profile
复制代码

修改服务端配置参数

#修改服务端的配置文件,位于服务端conf目录下
vi /opt/proxy-server-0.1/conf/config.properties
#根据实际情况进行修改
#---------------config.properties
server.bind=0.0.0.0

#与代理客户端通信端口
server.port=8001

#ssl相关配置
server.ssl.enable=true
server.ssl.bind=0.0.0.0
server.ssl.port=8002
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
config.server.port=8003
config.admin.username=admin
config.admin.password=admin
#---------------end
复制代码

启动服务端

#启动脚本位于服务端bin目录下
cd /opt/proxy-server-0.1/bin
#运行sh脚本
./start.sh
#查看服务是否启动,下面通过查看端口判断是否启动
netstat -tnlp
复制代码

设置服务端自启动和客户端自启动

#创建服务的service文件
vi /usr/lib/systemd/system/penetration.service
#加入如下配置
#---------------penetration.service
[Unit] 
Description=Intranet Penetration 
After=network.target 

[Service] 
Type=forking 
ExecStart=/opt/proxy-server-0.1/bin/startup.sh
#ExecReload=/opt/proxy-server-0.1/bin/reload.sh
ExecStop=/opt/proxy-server-0.1/bin/stop.sh 

[Install] 
WantedBy=multi-user.target
#---------------end
#如果刚才已经运行了startup.sh脚本,请先停止该脚本
cd opt/proxy-server-0.1/bin
./stop.sh
#启动服务
systemctl start penetration
#设置开机自动启动
systemctl enable penetration
#如果需要取消开机启动则输入以下命令
systemctl disable penetration
复制代码

启动客户端

浏览器访问服务端管理页面,http://公网IP:配置文件下的config.server.port/,进入如下页面

生成一个供客户端注册的随机码查看客户端的当前状态注册客户端,根据自己的操作系统执行相应启动命令,并替换对应参数

 

#--------------普通端口连接
# mac 64位
nohup ./client_darwin_amd64 -s SERVER_IP -p SERVER_PORT -k CLIENT_KEY &

# linux 64位
nohup ./client_linux_amd64 -s SERVER_IP -p SERVER_PORT -k CLIENT_KEY &

# windows 64 位
./client_windows_amd64.exe -s SERVER_IP -p SERVER_PORT -k CLIENT_KEY
#--------------end

#--------------SSL端口连接
# mac 64位
nohup ./client_darwin_amd64 -s SERVER_IP -p SERVER_SSL_PORT -k CLIENT_KEY -ssl true &

# linux 64位
nohup ./client_linux_amd64 -s SERVER_IP -p SERVER_SSL_PORT -k CLIENT_KEY -ssl true &

# windows 64 位
./client_windows_amd64.exe -s SERVER_IP -p SERVER_SSL_PORT -k CLIENT_KEY -ssl true
#--------------end
复制代码

启动后根据输出日志判断是否注册成功,或者通过服务端后台查看客户端的当前状态

 

到此内网穿透已经搭建完毕,下面演示配置端口映射的步骤

尝试远程桌面连接到内网电脑

本示例演示的是对window远程桌面所用端口3389进行转发,达到不借助TeamViewer等远程软件控制内网电脑,请先保证内网的电脑已开启允许远程连接开关

进入服务端后台,在配置管理菜单下选择创建的客户端,创建对该客户端的端口映射

 

命令行输入mstsc唤出远程桌面连接,输入公网地址和内网电脑的登录账号

 

——————————————————————————————————————————————————————————————

转载地址:https://juejin.im/post/6868556181451833358#comment

感谢原作者:

xinjiangyuangit

版权声明:本文为worldbugMsg原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/worldbugMsg/p/13618977.html