千家信息网

docker如何搭建lanproxy内网穿透服务

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍docker如何搭建lanproxy内网穿透服务,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!文档更新说明2018年04月06日 v1.0内网穿透相信是后端开发
千家信息网最后更新 2026年11月02日docker如何搭建lanproxy内网穿透服务

这篇文章主要介绍docker如何搭建lanproxy内网穿透服务,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

文档更新说明

2018年04月06日 v1.0

内网穿透相信是后端开发者经常遇到的需求,可是怎么实现呢?其实有现成的服务:花生壳、ngrok等,但是,最近花生壳宣布,免费版的内网穿透将不支持80端口映射了,而免费版的ngrok也不够稳定,于是乎,我就开始需找新的解决方案了

本文使用了docker、nginx,要全部搞懂的话需要一定的后端基础(当然,基本上入个门就可以了),个人认为还是有一定阅读门槛的,但是你如果只是想把服务搭建起来,按照步骤来做是不难的

1、概述

内网穿透其实就是用服务器做一个中转,将请求转发,本文记录了在 ubuntu 16.04 上,基于 docker 搭建的内网穿透服务

1.1、原理

内网穿透的原理如下图所示:

  1. 用户访问我们的服务器,这个服务器是有公网IP的,所以用户可以无压力访问

  2. 服务器与本地电脑保持长链接,当有请求的时候,服务器将请求转发到我们的本地电脑

  3. 本地电脑将响应回复给服务器

  4. 服务器将响应回复给用户

1.2、实现

要搭建内网穿透,我们得完成两个任务

在公网能访问的服务器上运行我们的内网穿透服务; 在本地电脑上面运行内网穿透客户端。

当然,你可以自己根据原理实现一套,不过我们有现成的三方开源工具,可以帮我们实现这一套功能。这个就是我们今天的主角 lanproxy 。

2、实现步骤

现成的工具已经找到,接下来就是简单的搭建一下了,搭建过程分为服务端和本地电脑端

2.1、服务端流程:

  1. 在服务器上安装 docker 和 nginx

  2. 在服务器上通过 docker 运行 lanproxy server

  3. 将域名解析到我们的服务器

  4. 配置 nginx 反向代理

  5. 打开 lanproxy 后台页面,添加客户端和映射信息

2.2、本地电脑流程:

  1. 运行要被映射的服务

  2. 运行本地电脑映射客户端程序( lanproxy client )

下面开始服务端的配置:

2.1.1、在服务器上安装 docker 和 nginx

nginx 的安装是很简单的,一个命令就搞定

docker 也可以使用脚本安装,也是一句命令的事

# 1、安装nginx$ sudo apt-get install nginx# 2、安装docker$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun# 可选步骤,建docker源修改为阿里云$ sudo mkdir -p /etc/docker$ sudo tee /etc/docker/daemon.json <<-'EOF'{ # 下面的链接需要到阿里云后台查看,每个人的加速地址是不一样的 "registry-mirrors": ["https://abcdefg.mirror.aliyuncs.com"]}EOF$ sudo systemctl daemon-reload$ sudo systemctl restart docker

2.1.2 在服务器上通过 docker 运行 lanproxy server

服务安装完毕之后,就可以用docker跑服务了,可以自己写一个 Dockerfile ,这里,我就把自己写的放出来吧,大家可以拿去用着,gayhub 传送门

这里我修改了 proxy-server-0.1 的部分文件,因为在 docker 中,需要保存服务前台运行,否则容器会被 kill 掉,而官网默认的启动脚本是后台启动的,把 bin/startup.sh 里面的启动命令修改成前台启动即可(去掉nohub和后面的1&2 &)

# 1、克隆docker配置,如果要修改配置可以编辑 conf/config.properties 文件,配置方法见lanproxy官网$ git clone https://github.com/fengqiangboy/lanproxy-docker.git lanproxy-docker# 2、build docker镜像$ cd lanproxy-docker$ sudo bash build_container.sh# 3、运行docker容器$ bash run_container.sh

2.1.3 将域名解析到我们的服务器

需要两个域名,一个用来访问我们的 lanproxy 后台,一个用来访问我们需要内网穿透的服务

例如:

lanproxy.fengqiangboy.com -> 用来访问lanproxy后端test.fengqiangboy.com -> 用来访问内网穿透服务

2.1.4配置 nginx 反向代理

将两个域名解析到我们的服务器之后,再通过反向代理,将其反代到我们的lanproxy端口

下面配置的最终效果就是:

  1. 我们可以通过 lanproxy.fengqiangboy.com 访问 lanproxy 后

  2. 我们可以通过 test.fengqiangboy.com 访问本地电脑映射的服务

lanproxy.fengqiangboy.com.conf:

server {  listen 80;  # 这里使用自己的域名  server_name lanproxy.fengqiangboy.com;  charset utf-8;  location / {    proxy_set_header  X-Real-IP $remote_addr;    proxy_set_header  Host   $http_host;    # 这里根据你的lanproxy配置,改成 config.server.port的值    proxy_pass    http://127.0.0.1:8090;    client_max_body_size 35m;    proxy_http_version 1.1;    proxy_set_header Upgrade $http_upgrade;    proxy_set_header Connection "upgrade";  }}

test.fengqiangboy.com.conf:

server {  listen 80;  # 这里使用自己的域名  server_name test.fengqiangboy.com;  charset utf-8;  location / {    proxy_set_header  X-Real-IP $remote_addr;    proxy_set_header  Host   $http_host;    # 这里根据你的lanproxy配置,改成 外网接口 的值,在lanproxy后台网页上配置,后面配置    proxy_pass    http://127.0.0.1:50000;    client_max_body_size 35m;    proxy_http_version 1.1;    proxy_set_header Upgrade $http_upgrade;    proxy_set_header Connection "upgrade";  }}

2.1.5 打开 lanproxy 后台页面,添加客户端和映射信息

  1. 打开 http://lanproxy.fengqiangboy.com

  2. 用前面 conf/config.properties 文件中配置的账号和密码登录后台

  3. 添加一个客户端,记住客户端密钥

  4. 添加完客户端之后添加一个配置,配置如下图

到此,服务端的配置就完成了。下面开始本地电脑的配置。

2.2.1 运行要被映射的服务

既然要把内网的服务映射出去,那首先就要把本地电脑的服务跑起来吧,不然拿什么来映射?这里就很多操作方法了,各个语言都不一样,把自己的服务跑起来就行

2.2.2 运行本地电脑映射客户端程序( lanproxy client )

这里有两个方法,一个方法是使用官网提供的 go 版本,不需要安装 java 环境在本地电脑上,另外一种是使用官网提供的 java 版本,这里我使用 java 版本的。

克隆 lanproxy 代码到本地电脑

$ git clone https://github.com/ffay/lanproxy.git lanproxy

打包 lanproxy

打包之前需要确保你安装了 maven

$ cd lanproxy$ mvn package

修改配置文件信息

打包完成之后,客户端文件会出现在 distribution/proxy-client-0.1 目录下,打开之后有是个文件夹: bin 、 conf 、 lib 和 log ,配置信息在 conf/config.properties 文件内,根据前面服务端的配置信息修改一下。

# 这里是在lanproxy后台配置的密钥client.key=key# 配置ssl信息,根据服务端的配置填写ssl.enable=truessl.jksPath=test.jksssl.keyStorePassword=123456# 服务器的ipserver.host=163.162.161.160#根据服务端配置,开启ssl的话填写ssl的端口,否则填写普通端口server.port=4993

启动客户端

客户端信息配置完成之后就可以启动客户端了

# mac/linux使用这个$ bash bin/startup.sh# Windows 直接运行 bin/startup.bat

访问测试

按照前面的配置,这时候我们应该是可以通过 test.fengqiangboy.com 来访问我们的内网服务了的,用浏览器打开看看

3、一点补充

为什么要使用docker?

使用docker主要是为了不破坏服务端环境,只是给 lanproxy 安装了一个 jdk8 的环境,不影响其他服务继续运行;而且使用 docker 还可以很方便的转移到其它机器上面部署,只要把 Dockerfile 拷贝过去就可以了。

这样搭建,服务器重启的话需要手动重启 lanproxy 吗?

不需要,在服务端启动 docker 容器的脚本下,我添加了 --restart unless-stopped 参数,只要 docker 服务启动了,容器就会跟着启动,如果你不需要这个需求,可以去掉这个参数

为什么不用花生壳?

前不久看到花生壳的公告,说从4月1日开始,免费版将不提供80端口映射,实际上我用这个映射最大的需求就是做微信调试,去掉80端口就不能做微信调试了,不满足我的需求了,当然,花生壳还是不错的,如果能满足你的需求,还是可以省时省力完成内网穿透的

以上是"docker如何搭建lanproxy内网穿透服务"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

服务 配置 服务器 穿透 电脑 客户 客户端 运行 后台 信息 文件 域名 端口 就是 需求 两个 容器 方法 端的 花生 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 深圳市人人互联网科技有限公司 中关村互联网 科技集团 科技互联网项目 互联网科技未来 互联网科技排名 互联网科技视频 世界互联网领先科技成果 顺玮阁互联网科技 新华互联网科技校企合作 华中科技有哪些互联网大佬 知域互联网科技有限公司大骗子 广州市恰铎互联网科技有限公司 互联网科技大奖都有哪些公司 阿里互联网科技企业 互联网科技大赛获奖感言 互联网时代科技型公司的机会 互联网科技企业商标注意事项 艺电能源互联网科技有限公司招聘 北京天晋互联网科技有限公司 奇酷互联网络科技公司 甘肃拓世互联网科技有限公司 世界互联网科技公司市值排名 互联网媒体平台算高科技产业 科技赋能视角下互联网保险发展 湖北辰鑫科技互联网 互联网科技收购价值 知域互联网科技有限公司官网 如何强化互联网金融科技 科技发展第三阶段互联网时代
0