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

### 回答1: Docker 安装内网穿透的步骤如下: 1. 安装 Docker:首先要安装 Docker,如果还没有安装请参考 Docker 官方文档进行安装。 2. 启动 Docker 容器:使用 Docker 启动一个容器,可以使用 Docker 官方镜像或者自定义镜像。 3. 安装内网穿透工具:在 Docker 容器中安装内网穿透工具,如 Ngrok、Frp 等。 4. 配置内网穿透工具:配置内网穿透工具,并启动服务。 5. 测试内网穿透:通过公网访问容器中的内网服务,检查内网穿透是否成功。 以上就是 Docker 安装内网穿透的大致步骤。具体操作可能会因内网穿透工具不同而有所差别,请参考该工具的官方文档。 ### 回答2: 安装docker内网穿透的步骤如下: 1. 确保你已经安装了Docker,可以在命令行中运行`docker --version`来验证安装是否成功。 2. 下载一个内网穿透Docker镜像,比如说frp(Fast Reverse Proxy)。可以使用以下命令下载: `docker pull docker.io/mritd/frp:latest` 3. 创建一个配置文件,用于配置frp内网穿透的设置。可以在本地创建一个文件夹,比如说`/path/to/config`,然后在该文件夹中创建一个名为`frps.ini`的文件。 配置文件的内容可以参考frp的官方文档,配置示例: ```ini [common] bind_port = 7000 bind_udp_port = 7001 [web] type = http local_ip = 127.0.0.1 local_port = 80 remote_port = 6000 ``` 4. 启动frp容器,并加载配置文件。可以使用以下命令启动容器: `docker run -d -v /path/to/config:/etc/frp --name frps docker.io/mritd/frp:latest` 注意将`/path/to/config`替换为你创建配置文件的文件夹路径。 5. 完成上述步骤后,frp就会在你的主机上创建一个代理服务器。其中`remote_port`指定了外部访问该服务的端口号,可以根据实际情况进行修改。 6. 现在可以使用外部设备访问你的内网服务,访问方式为: `http://公网IP:远程端口号`。 这样,你的内网服务就可以通过Docker内网穿透技术对外提供网络访问了。 值得注意的是,上述步骤中使用的是frp作为内网穿透方案的示例,你也可以选择其他适合你需求的方案来实现内网穿透。 ### 回答3: 要在 Docker 中安装内网穿透工具,您可以按照以下步骤进行操作: 1. 首先,您需要在 Docker 主机上安装并运行内网穿透工具,例如 ngrok。您可以通过访问 ngrok 官方网站或下载适用于 Docker 的 ngrok 镜像来进行安装。运行以下命令来拉取并启动 ngrok 容器: ``` docker run -it --rm -p 4040:4040 --name ngrok wernight/ngrok ngrok http 80 ``` 这将在端口 4040 上启动 ngrok 容器,并将其映射到主机端口 4040。 2. 接下来,您需要获取生成的 ngrok URL。在运行 ngrok 容器的控制台输出中,您将看到类似于 "Forwarding http://{随机字符串}.ngrok.io -> http://localhost:80" 的信息。这个 ngrok URL 将用于访问您内部网络中的服务。 3. 您可以使用 ngrok URL 来访问运行在内部网络中的服务。只需将 ngrok URL 复制到浏览器地址栏中,即可直接访问您的服务。注意,每次运行 ngrok 容器时,生成的 ngrok URL 都将是不同的,所以您可能需要在每次运行之前手动更新相关应用程序的配置。 通过这些步骤,您可以在 Docker 中安装并使用内网穿透工具来访问内部网络中的服务。请记住,根据您的具体需求,可能还需要一些额外的配置步骤来确保内网穿透工具正常运行和访问所需的服务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值