Lanproxy内网穿透搭建

1、内网穿透定义

内网穿透是一种将外部网络流量传输到内部网络的技术,通常用于让外部设备或计算机访问内部网络上的资源,即使这些资源位于防火墙、路由器或 NAT(网络地址转换)后面。内网穿透有多种用途,包括能够从远程访问家庭网络摄像头、文件服务器、打印机等设备,或者测试网站或应用程序时让外部设备访问您的本地开发环境。

有多种工具和服务可用于实现内网穿透,下面是一些常用的方法:

  1. 端口转发/端口映射: 这是最基本的内网穿透方法。可以在路由器上配置端口映射,将外部流量路由到特定端口上的内部设备。这通常用于远程访问设备或服务。

  2. 反向代理: 使用反向代理服务器,可以将外部请求路由到内部服务器,例如通过使用NGINX或Apache等软件配置。这对于向外部公开Web应用程序非常有用。

  3. VPN(虚拟专用网络): 可以设置VPN服务器,允许外部设备通过VPN连接到内部网络。这样,远程设备就好像它们位于内部网络一样。

  4. 专门的内网穿透工具: 有许多第三方工具和服务可以帮助您轻松实现内网穿透,例如ngrok、frp、zerotier等。这些工具提供了更多高级功能,可以简化配置和管理。

  5. 物联网(IoT)平台: 如果您正在构建物联网设备或应用程序,许多IoT平台提供了内网穿透功能,以便远程管理和监控设备。

2、Lanproxy方案

  • Lanproxy :是一个用于实现内网穿透的开源工具。它可以将外部网络流量安全地传输到内部网络,以便让外部设备或计算机访问内部网络上的资源,即使这些资源位于防火墙或 NAT 后面。

  1. 简单易用: Lanproxy 提供了简单的配置和管理界面,使内网穿透变得容易上手。

  2. 多协议支持: 它支持多种协议,包括HTTP、HTTPS、TCP、UDP等,因此可以用于不同类型的应用。

  3. 安全性: Lanproxy 支持身份验证和访问控制,以确保只有授权的设备可以访问内部资源。

  4. 跨平台: Lanproxy 可以在多种操作系统上运行,包括Linux、Windows和macOS。

  5. 用途广泛: 您可以使用 Lanproxy 来远程访问内部网络上的Web应用、数据库、文件服务器等各种资源,或者用于开发和测试。

  • 选择Lanproxy的原因:

  1. 支持一对多穿透,一个服务端,多个客户端

  2. 基于端到端穿透

  3. 使用Web面板管理客户端

  4. 连接到客户端后,可以穿透客户端可以访问到的所有内网端口

  5. 支持多平台Linux、Windows

3、搭建

1、准备工作

  • 外网:需要一台有公网的服务器或VPS,Linux系统即可,详细系统类型不限

  • 内网:一台Linux主机或虚拟机,Linux系统即可,详细系统类型不限

服务器端需要开放两个端口,其他为业务端口

1、内网穿透服务器端与客户端通信端口

2、Lanproxy控制面板端口

内网客户端只需要配置服务端的IP地址、通信端口、客户端密钥即可

2、搭建步骤

服务端文件下载

客户端文件下载

服务端配置

先安装必要的软件和环境

Ubuntu/Debian

apt update && apt upgrade -y && apt install openjdk-17* tar wget vim -y

CentOS/Rocky

yum update && yum upgrade -y && yum install openjdk-17* tar wget vim -y

ArchLinux

pacman -S jdk17-openjdk tar wget vim

使用Xftp上传文件,或复制上面的下载链接,使用wget命令直接下载

wget https://miku01.cc/upload/proxy-server-0.1.tar

解压proxy-server-0.1.tar文件

mkdir /lanproxy-server
tar -xvf proxy-server-0.1.tar -C /lanproxy-server 

修改Lanproxy-server的配置文件

vim /lanproxy-server/proxy-server-0.1/conf/config.properties

insert键进入编辑模式,按ESC可以退出编辑模式进入命令模式

命令模式下输入:wq即可保存并退出

仅修改以下参数

server.port=4900 #服务器与客户端的通信端口

config.server.port=8090 #服务器控制面板端口

config.admin.username=admin #控制面板用户名

config.admin.password=admin #控制面板密码

修改完配置文件后即可保存并退出,运行以下命令启动Lanproxy

!!防火墙要放行以上的通信端口面板端口

  • 启动

bash /lanproxy-server/proxy-server-0.1/bin/startup.sh 
  • 停止

bash /lanproxy-server/proxy-server-0.1/bin/stop.sh

启动后出现PID即正常启动

-e Starting the proxy server ...started

PID: 22514

在浏览器输入服务器IP+控制面板端口进入Web控制台

生成一个客户端密钥

客户端配置

使用Xftp上传客户端文件,或使用wget命令下载

 wget https://miku01.cc/upload/proxy-java-client-0.1.zip

解压

mkdir /lanproxy-server
tar -xvf proxy-java-client-0.1.tar -C /lanproxy-client/

仅修改以下配置

vim /lanproxy-client/proxy-java-client-0.1/conf/config.properties

client.key=80a59fdb2c974ee78b94dacf022204bf #将Lanproxy控制台生成的客户端密钥替换这里的密钥

server.host=123.123.123.123 #服务器IP地址

server.port=4900 #服务器通信端口

启动

bash /lanproxy-client/proxy-java-client-0.1/bin/startup.sh

停止

bash /lanproxy-client/proxy-java-client-0.1/bin/stop.sh

配置端口转发

在Lanproxy控制台可以看到客户端已经上线,可以开始配置端口转发

将内网的192.168.1.1的80端口穿透到公网服务器的6999端口

防火墙放行6999端口,现在访问公网服务器IP+6999端口就相当于访问到了内网服务器的192.168.1.1:80

但是这种携带端口访问的方法并不优雅,在后续的专栏文章中将使用反向代理去除端口