基于docker的lanproxy内网穿透服务
Posted boonya
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于docker的lanproxy内网穿透服务相关的知识,希望对你有一定的参考价值。
基于docker的lanproxy内网穿透服务
目录
一:原理
- 用户访问我们的服务器,这个服务器是有公网IP的,所以用户可以无压力访问
- 服务器与本地电脑保持长链接,当有请求的时候,服务器将请求转发到我们的本地电脑
- 本地电脑将响应回复给服务器
- 服务器将响应回复给用户
二:环境说明
IP地址 | 操作系统 | 角色 | 网络说明 |
---|---|---|---|
172.17.2.117 | Ubuntu16.04 | lanproxy客户端 | 办公内网 |
120.120.120.120 | Ubuntu16.04 | lanproxy服务端 | 阿里云公网 |
三:lanproxy服务端部署
docker-compose.yml文件内容如下:
root@chenhan:~/docker/lanproxy-docker# cat docker-compose.yml
# https://hub.docker.com/r/franklin5/lanproxy-server
version: '3.1'
services:
lanproxy-server:
image: franklin5/lanproxy-server
container_name: lanproxy-server
environment:
# 配置你的账号,默认admin
- LANPROXY_USERNAME=admin
# 配置你的密码,默认admin
- LANPROXY_PASSWORD=admin
volumes:
# 用于保存创建的配置文件,避免重启服务后配置消失
- /data/lanproxy_server/config-data:/root/.lanproxy
ports:
- 8090:8090
- 4900:4900
- 4993:4993
- 9008-9009:9008-9009
#- 9000-9100:9000-9100
restart: always
说明:
上面的挂载卷,是用来保存已配置好的穿透数据, 这个数据是一个json文件
root@node:/data/lanproxy_server/config-data# cat config.json
[
"name":"example","clientKey":"be59f41977c044g28711091696eee69d","proxyMappings":
[
"name":"www.example.com","inetPort":"9008","lan":"172.17.2.117:80",
"name":"mobile.example.com","inetPort":"9009","lan":"172.17.2.117:81"
],"status":1
]
端口:9008-9009:9008-9009可以自行定义
启动lanproxy容器:
docker-compose up -d
四:nginx反向代理配置域名
说明:在公网服务器上配置域名。如果不配置域名,也可以通过http://IP:PORT的形式来访问,同时注意公网服务器上开放相应的端口
lanproxy-server web界面访问nginx配置文件如下:
server
listen 80;
# 这里使用自己的域名
server_name lanproxy.example.com;
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";
# 配置完成后可通过lanproxy.example.com访问lanproxy-server的web界面
配置穿透域名,该域名访问后会通过lanproxy映射到上面办公内网的指定主机上的指定端口
server
listen 80;
# 这里使用自己的域名
server_name www.example.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:9000;
client_max_body_size 35m;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
五:lanproxy web界面配置
Client name:名字随便取
点击后面的Generate random key生成一个客户端密钥,该密钥需要填写到客户端配置文件中
基于docker的lanproxy内网穿透服务
internet port:需要安全组开放此端口。这里指定公网服务器上映射lanproxy-server容器的端口,如9008
Backend ip:内网机器的IP加端口。如172.17.2.117:80
六:lanproxy客户端部署
这里我需要穿透的内网机器IP地址为172.17.2.117的80端口。在该主机上启动lanproxy客户端容器:
# https://hub.docker.com/r/franklin5/lanproxy-client
docker run -d \\
--name lanproxy-client \\
-e LANPROXY_KEY="be59f41977c044g28711091696eee69d" \\ # 上面web界面中生成的client key
-e LANPROXY_HOST="120.120.120.120" \\ # 公网服务器的IP地址
--restart=always \\
franklin5/lanproxy-client
启动容器成功后,即可通过www.example.com域名访问到172.17.2.117:80上的web程序
————————————————
版权声明:本文为CSDN博主「琴酒网络」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/pcn01/article/details/105814893
以上是关于基于docker的lanproxy内网穿透服务的主要内容,如果未能解决你的问题,请参考以下文章