天下之事,必先处之难,而后易之。

基于docker的lanproxy内网穿透服务

基于docker的lanproxy内网穿透服务

目录

一:原理

二:环境说明

三:lanproxy服务端部署

四:nginx反向代理配置域名

 五:lanproxy web界面配置

六:lanproxy客户端部署


一:原理

 

  1.     用户访问我们的服务器,这个服务器是有公网IP的,所以用户可以无压力访问
  2.     服务器与本地电脑保持长链接,当有请求的时候,服务器将请求转发到我们的本地电脑
  3.     本地电脑将响应回复给服务器
  4.     服务器将响应回复给用户

 

二:环境说明

IP地址操作系统角色网络说明
172.17.2.117Ubuntu16.04lanproxy客户端办公内网
120.120.120.120Ubuntu16.04lanproxy服务端阿里云公网


三: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

posted @ 2024-08-07 15:43  boonya  阅读(158)  评论(0)    收藏  举报  来源
我有佳人隔窗而居,今有伊人明月之畔。
轻歌柔情冰壶之浣,涓涓清流梦入云端。
美人如娇温雅悠婉,目遇赏阅适而自欣。
百草层叠疏而有致,此情此思怀彼佳人。
念所思之唯心叩之,踽踽彳亍寤寐思之。
行云如风逝而复归,佳人一去莫知可回?
深闺冷瘦独自徘徊,处处明灯影还如只。
推窗见月疑是归人,阑珊灯火托手思忖。
庐居闲客而好品茗,斟茶徐徐漫漫生烟。

我有佳人在水之畔,瓮载渔舟浣纱归还。
明月相照月色还低,浅近芦苇深深如钿。
庐山秋月如美人衣,画堂春阁香气靡靡。
秋意幽笃残粉摇曳,轻轻如诉画中蝴蝶。
泾水潺潺取尔浇园,暮色黄昏如沐佳人。
青丝撩弄长裙翩翩,彩蝶飞舞执子手腕。
香带丝缕缓缓在肩,柔美体肤寸寸爱怜。
如水之殇美玉成欢,我有佳人清新如兰。
伊人在水我在一边,远远相望不可亵玩。