前言
内网穿透原理:
-
用户访问我们的服务器,这个服务器是有公网IP的,所以用户可以无压力访问
-
服务器与本地电脑保持长链接,当有请求的时候,服务器将请求转发到我们的本地电脑
-
本地电脑将响应回复给服务器
-
服务器将响应回复给用户
一、lanproxy服务端搭建
注意,服务端需为可被外网访问
(1)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 # web界面端口
- 4900:4900
- 4993:4993
- 9008-9009:9008-9009 # 可映射为内网端口
#- 9000-9100:9000-9100
restart: always
说明:挂载出来的文件是一个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
}
]
(2)启动容器
docker-compose up -d
公网访问端口 8090 进入web端
说明:在公网服务器上配置域名。如果不配置域名,也可以通过http://IP:PORT的形式来访问,同时注意公网服务器上开放相应的端口
(3)界面配置
客户端名称:随便写
客户端密钥:点击生成随机密钥,生成的密钥需要保留,该密钥需要填写到客户端配置文件中
代理名称:随便写
公网端口:需要安全组开放此端口。这里指定公网服务器上映射lanproxy-server容器的端口,如9008
内网主机IP:内网机器的IP加端口。如172.17.2.117:80
二、客户端搭建
docker run
docker run -d --name lanproxy-client -e LANPROXY_KEY="be59f41977c044g28711091696eee69d" -e LANPROXY_HOST="120.120.120.120" --restart=always franklin5/lanproxy-client
参数说明:
LANPROXY_KEY :上面web界面中生成的client key
LANPROXY_HOST: 公网服务器的IP地址
启动成功后,即可通过公网域名或ip配置端口访问内网服务
//TODO java或go程序启动客户端,不使用docker