基于docker的lanproxy内网穿透服务 - Go语言中文社区

基于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

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/boonya/article/details/121489902
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-12-11 17:47:11
  • 阅读 ( 1818 )
  • 分类:docker

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢