使用 Lanproxy 搭建内网穿透服务

鸿辰 Linux 125

概述

内网穿透是一种技术,允许用户通过公网访问位于私有网络中的设备或服务。Lanproxy 是一款开源的内网穿透工具,支持 TCP 流量转发,可广泛应用于访问内网网站、调试本地支付接口、SSH 远程访问等场景。本文将详细介绍如何使用 Lanproxy 搭建内网穿透服务。

一、环境准备

1.1 硬件与网络环境

  • 公网服务器:一台具有公网 IP 的服务器,用于部署 Lanproxy 服务端。
  • 内网主机:需要对外提供服务的内网设备,如运行 Web 服务器或 SSH 服务的计算机。
  • 域名(可选):如果希望使用域名访问内网服务,需要一个域名并将其解析到公网服务器。

1.2 软件环境

  • Java 环境:Lanproxy 基于 Java 开发,因此需要在服务端和客户端安装 JDK。
  • Lanproxy 工具:可以从 Lanproxy 的 GitHub 仓库下载,或使用 Docker 镜像进行部署。

二、服务端配置(公网服务器)

2.1 安装 OpenJDK 1.8 或更高版本

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y

验证安装结果

java -version

2.2 安装 maven 工具

yum install maven -y

2.3 部署 Lanproxy 的准备工作

2.3.1 下载源码

提示: github 下载较慢,可以直接从 gitee 获取源码

git clone https://gitee.com/fengfei/lanproxy.git

如果没有安装 git 工具,可以使用 yum install git -y 安装

2.3.2 构建项目

使用 maven 工具构建项目

进入到上面步骤克隆的本地目录

cd lanproxy

构建项目

mvn package

使用 Lanproxy 搭建内网穿透服务-第1张图片-鸿辰个人分享站

构建完成后,会在项目根目录生成 distribution 目录,目录中的内容如下图所示:

使用 Lanproxy 搭建内网穿透服务-第2张图片-鸿辰个人分享站

其中:

  • proxy-server-0.1 是服务端
  • proxy-client-0.1 是客户端

2.4 部署 Lanproxy 服务端

2.4.1 修改配置

进入 proxy-server-0.1 目录后,编辑配置文件

vi conf/config.properties

使用 Lanproxy 搭建内网穿透服务-第3张图片-鸿辰个人分享站

i 进入编辑模式, 修改图中红色框部分的参数值,分别是服务端口(用于网页端登录,该端口需要在公网服务器商开放)、账号(网页端登录)、密码(网页端登录),修改完成后按 ESC退出编辑模式, 并输入 :wq 保存并退出

2.4.2 启动服务端

进入 proxy-server-0.1/bin 目录后,给脚本文件赋可执行权限

chmod +x startup.sh stop.sh

启动服务端

sh startup.sh

随后登录使用浏览器访问 http://[公网服务器IP地址]:8090/,其中 8090 端口是再 2.4.1 中配置的端口。

输入账号密码登录,登录后创建客户端

使用 Lanproxy 搭建内网穿透服务-第4张图片-鸿辰个人分享站

添加完成后,配置管理栏目下会出现对应的客户端名称,点击客户端名称,添加配置

使用 Lanproxy 搭建内网穿透服务-第5张图片-鸿辰个人分享站

三、客户端配置(内网服务器)

3.1 安装 OpenJDK 1.8 或更高版本

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y

验证安装结果

java -version

3.2 部署 Lanproxy 的准备工作

因为我们已经在服务端构建了 Lanproxy 项目,该项目构建完成后会同时生成服务端和客户端文件,所以我们只需要把在公网服务器已经构建好的 Lanproxy 客户端文件复制到内网服务器即可。以下提供一种常用的操作方法,你也可以使用自己的方法实现。

3.2.1 在公网服务器上面打包客户端文件

进入打包后的文件夹

cd distribution && ls -l

使用 tar 命令打包客户端文件

tar -zcvf proxy-client-0.1.tar.gz ./proxy-client-0.1

使用 sz 命令下载文件到本地(或其他方式)

sz proxy-client-0.1.tar.gz

如果没有安装 sz 命令,可使用 yum install lrzsz -y 安装

3.2.2 把文件上传到内网服务器

使用 rz 命令把下载到电脑上面的文件上传内网服务器

rz

选择要上传的文件即可自动上传,上传完成后解压即可。

如果没有安装 rz 命令,可使用 yum install lrzsz -y 安装

3.3 部署 Lanproxy 客户端

3.3.1 修改配置

进入 proxy-client-0.1 目录后,编辑配置文件

vi conf/config.properties

使用 Lanproxy 搭建内网穿透服务-第6张图片-鸿辰个人分享站

i 进入编辑模式, 修改图中红色框部分的参数值,分别是客户端密钥(网页端添加的客户端中可以获取到)、服务端IP(公网服务器的IP),修改完成后按 ESC退出编辑模式, 并输入 :wq 保存并退出

需要注意:默认使用过的是4900端口,该端口需要在公网服务器开放,否则会无法与服务端连接

3.3.2 启动客户端

进入 proxy-client-0.1/bin 目录后,给脚本文件赋可执行权限

chmod +x startup.sh stop.sh

启动客户端

sh startup.sh

启动完成后,可以在网页端查看,此时客户端的状态已经变为在线。

使用 Lanproxy 搭建内网穿透服务-第7张图片-鸿辰个人分享站

四、公网服务器代理配置

考虑到实际场景中,你可能习惯了使用域名方式访问,此时可以借助nginx代理工具实现,以上文中的 公网服务器 18080 端口为例,可以参考下方的nginx配置

server
{
        listen 80;
        server_name lanproxy.test.com;
        location /
        {
                proxy_set_header        x-forwarded-host $host;
                proxy_set_header        x-forwarded-for $remote_addr;
                proxy_set_header        x-Real-Ip $remote_addr;
                proxy_set_header        x-forwarded-proto http;
                proxy_set_header        host $http_host;
                # 如果公网IP是其他端口,这里改成其他端口即可
                proxy_pass http://127.0.0.1:18080/;
        }
        location ~ /\.
        {
                        deny all;
        }
}

配置完成并重载nginx配置后,即可使用配置的域名访问内网服务器。

五、自启动配置

每次服务器重启的话,就要手动启动就有点麻烦,可以利用crontab设置开启自启,也可以配置 /etc/rc.local 并赋予可执行权限后实现自启动,这里以 crontab 方式为例做配置,需要注意的是,公网服务器与内网服务器都需要配置。

配置定时任务

crontab -e

i 进入编辑模式,在里面添加

#reboot sh 启动脚本的绝对路径

其中,启动脚本的绝对路径对应服务端 或 客户端的启动脚本,比如我的公网服务器添加的自启动内容为 @reboot sh /root/lanproxy/distribution/proxy-server-0.1/bin/startup.sh,在内网服务器添加的自启动内容为 @reboot sh /root/lanproxy/distribution/proxy-client-0.1/bin/startup.sh

修改完成后按 ESC退出编辑模式, 并输入 :wq 保存并退出

六、异常排查

如果你按照上述步骤配置过程中,发现无法正常连接,请检查使用的公网服务器端口,是否已经在服务商开放!

标签: 内网 Linux