docker搭建lanproxy内网穿透服务

  • 一. 服务端
  • 1.1 安装docker
  • 1.2 安装nginx
  • 1.3 域名解析
  • 1.4 安装lanproxy-server
  • 1.5 配置`nginx`反向代理
  • 1.6 继续配置 lanproxy 后台服务
  • 二. 客户端
  • 2.1 客户端是centos7
  • 1. 使用`docker`运行`lanproxy-client`
  • 2. 安装gogs测试
  • 2.2 客户端是win10
  • 1. lanproxy-server网页添加客户端
  • 2. 下载源码并修改配置启动客户端
  • 3. lanproxy-server网页添加配置
  • 4. 验证连接成功
  • 5. `idea`运行本地项目,端口是`60100`
  • 6. 测试


参考: https://www.ctolib.com/frank-lam-lanproxy-nat.html

一. 服务端

使用条件:阿里云服务器,有公网id,有备案的域名

1.1 安装docker


1.2 安装nginx


1.3 域名解析

添加两个子域名解析到服务器

  • 用来访问我们的 lanproxy 后台
  • 用来访问我们需要内网穿透的服务

1.4 安装lanproxy-server

[root@wanfei apps]# mkdir -p ~/i/apps/lanproxy/config-data && cd ~/i/apps/lanproxy/

cat <<EOF > start.sh
#!/bin/bash
LANPROXY_DIR=`pwd`
docker stop lanproxy-server
docker rm lanproxy-server
docker run -d \\
           --name lanproxy-server \\
           -p 8090:8090 \\
           -p 4900:4900 \\
           -p 4993:4993 \\
           -p 9000-9100:9000-9100 \\
           --restart=always \\
           -e LANPROXY_USERNAME="admin" \\
           -e LANPROXY_PASSWORD="admin" \\
           -v \${LANPROXY_DIR}/config-data:/root/.lanproxy \
           franklin5/lanproxy-server
EOF

[root@wanfei lanproxy]# ls
config-data  start.sh

[root@wanfei lanproxy]# sh start.sh 
Error response from daemon: No such container: lanproxy-server
Error: No such container: lanproxy-server
24e28987d1eaf0e2365040d2d39c8b2cefdafa208a88f4323db4e5f9094d9d71

登录

docker版导航 docker dlna_客户端

1.5 配置nginx反向代理

注意:nginx在docker中,不能使用127.0.0.1:8090来访问宿主机里的lanproxy-server服务,docker内部实际上实现了一个虚拟网桥docker0,所以要通过宿主机内网地址(172.16.196.119)来访问.

[root@wanfei conf.d]# cd ~/i/apps/nginx/conf.d/
[root@wanfei conf.d]# ls
default.conf

# 服务端反向代理
[root@wanfei conf.d]# vi lanproxy.wanfei.xyz.conf
# 复制
server {
  listen 80;
  # 这里使用自己的域名
  server_name lanproxy.wanfei.xyz;
  charset utf-8;
  location / {
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  Host   $http_host;
    # 这里根据你的lanproxy配置,改成 config.server.port的值
    proxy_pass    http://172.16.196.119:8090;
    client_max_body_size 35m;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

# 客户端反向代理centos7(一个公网端口只能映射一个后端信息,不能重复: 9000)
[root@wanfei conf.d]# vi test.wanfei.xyz.conf
# 复制
server {
  listen 80;
  # 这里使用自己的域名
  server_name test.wanfei.xyz;
  charset utf-8;
  location / {
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  Host   $http_host;
    # 这里根据你的lanproxy配置,改成 外网接口 的值,在lanproxy后台网页上配置,后面配置
    proxy_pass    http://172.16.196.119:9000;
    client_max_body_size 35m;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

# 客户端反向代理win10(一个公网端口只能映射一个后端信息,不能重复: 9000)
[root@wanfei conf.d]# vi win.wanfei.xyz.conf
# 复制
server {
  listen 80;
  # 这里使用自己的域名
  server_name win.wanfei.xyz;
  charset utf-8;
  location / {
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  Host   $http_host;
    # 这里根据你的lanproxy配置,改成 外网接口 的值,在lanproxy后台网页上配置,后面配置
    proxy_pass    http://172.16.196.119:9001;
    client_max_body_size 35m;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

[root@wanfei nginx]# sh start.sh 
mynginx
mynginx
9fab7128621ae456e15ab2e612c8534b175c211fc28a2ce0f85d485d6d272542

docker版导航 docker dlna_docker版导航_02

1.6 继续配置 lanproxy 后台服务

  • 添加一个客户端
  • 添加配置

二. 客户端

2.1 客户端是centos7

1. 使用docker运行lanproxy-client
[root@master ~]# mkdir -p ~/i/apps/lanproxy-client/ && cd ~/i/apps/lanproxy-client/

cat <<EOF > start.sh
#!/bin/bash
docker stop lanproxy-client
docker rm lanproxy-client
docker run -d \\
           --name lanproxy-client \\
           -e LANPROXY_KEY="input_your_key" \\
           -e LANPROXY_HOST="input_your_host" \\
           --restart=always \\
           franklin5/lanproxy-client
EOF

参数说明
input_your_key:这里是在 lanproxy 后台配置的密钥
input_your_host:服务器的 ip,支持域名,是阿里云的服务器公网ip,或者域名

2. 安装gogs测试
docker run -d -p 10022:22 -p 5050:3000 --name=gogs -v /opt/docker/gogs/:/data gogs/gogs
  • 直接在内网访问虚拟机
  • 外网访问test.wanfei.xyz也成功

2.2 客户端是win10

1. lanproxy-server网页添加客户端

docker版导航 docker dlna_docker版导航_03

2. 下载源码并修改配置启动客户端

github源码页面https://github.com/ffay/lanproxy github源码下载https://github.com/ffay/lanproxy.git

  • 修改lanproxy-client配置

参数说明
client.key:这里是在 lanproxy 后台配置的密钥
server.host:服务器的 ip,支持域名,是阿里云的服务器公网ip,或者域名

  • clean && install后发现多了distribution文件夹
  • 启动客户端
我用的是双击startup.bat启动,启动成功后没有输出

docker版导航 docker dlna_docker版导航_04

3. lanproxy-server网页添加配置

docker版导航 docker dlna_客户端_05

4. 验证连接成功

docker版导航 docker dlna_docker_06

5. idea运行本地项目,端口是60100
6. 测试
  • 内网访问
  • 外网访问http://win.wanfei.xyz/relatedtransactions/doc.html成功