Skip to content

About

🌍 手把手教你,搭建内网穿透服务,基于 lanproxy 穿透服务,为你深度定制了开箱即用的服务端和客户端 Docker 镜像。

Resources

Stars

427 stars

Watchers

13 watching

Forks

Latest commit

 

History

33 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

手把手教你,搭建内网穿透服务

在很多场景下内网穿透都是我们常常遇到的需求,之前也用过花生壳、ngrok、FRP 等等一些工具,但是由于限速、收费、安全各方面因素只好放弃了。

目前所在实验室主要从事深度学习和机器学习相关工作,有一台高配 GPU 计算型服务器,大家使用 Jupyter Notebook 在网页上进行编码工作,但是只能在学院内网才能进行使用,在外面就无法使用让人比较抓狂。如果购买阿里云等深度学习服务,价格昂贵,只好决定通过内网穿透实现公网工作。

近期无意间看到 「传送门:lanproxy」 这款开源工具,正好实验室购置了一台公网服务器,正好可以实现内网穿透,决定入坑折腾一番。对于有后台开发基础的同学还是挺简单的,不过好记性不如烂笔头,来吧,这里手把手深入探索一番。

一、概述

1.1 什么是内网穿透

好吧,先上一段百度百科的定义

内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。

反正简单来说,就是能通过公网访问你的内网服务,把你的内网通过一台公网服务器,穿透出去。

1.2 什么是 lanproxy

lanproxy 是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,目前仅支持 tcp 流量转发,可支持任何 tcp 上层协议(访问内网网站、本地支付接口调试、ssh 访问、远程桌面...)。目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud 等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。https://lanproxy.io2c.com

1.3 原理

内网穿透的原理如下图所示:

  1. 用户访问我们的服务器,这个服务器是有公网IP的,所以用户可以无压力访问

  2. 服务器与本地电脑保持长链接,当有请求的时候,服务器将请求转发到我们的本地电脑

  3. 本地电脑将响应回复给服务器

  4. 服务器将响应回复给用户

要搭建内网穿透,我们得完成两个任务

  1. 在公网能访问的服务器上运行我们的内网穿透服务;
  2. 在本地电脑上面运行内网穿透客户端。

当然,你可以自己根据原理实现一套,不过我们有现成的三方开源工具,可以帮我们实现这一套功能。这个就是我们今天的主角 lanproxy。

二、快速指南

这里我将手把手带你配置 lanproxy 穿透服务,这里配置主要分成了 公网服务器配置(请按照 2.2 中的说明进行安装) 和 内网电脑配置(推荐通过 4.1 中的说明安装) 。

在内网电脑配置中分为:Java 客户端和 GO 客户端

硬件与环境要求

这里以我的环境为例

  1. 一台公网服务器(Centos 7.4,当然这不重要,反正都 docker 啦)
    • docker(简化更多的配置,这里采用 docker 容器进行搭建)
    • Nginx 环境
  2. 一台内网电脑(Ubuntu 16.04)
    • 这里提供了四种方式进行客户端启动
      • Docker容器部署
      • Java > 1.7 的 JDK环境 + 客户端下载
      • Java > 1.7 的 JDK环境 + maven + 源码下载
      • Go 客户端下载启动
    • docker 启动服务,tensorflow(jupyter notebook)
  3. 已备案的域名(可选)
    • 此步骤也可省略,但端口太多通过 Nginx 配合域名进行转发,使用更加优雅。故这里我也将会配置两个公网域名

提供安装方式

安装服务 说明 推荐 安装方式
服务端 一台公网服务器 ⭐⭐⭐ 方式1:Docker容器部署
客户端 一台内网电脑 ⭐⭐⭐ 方式1:Docker容器部署
⭐⭐ 方式2:Java > 1.7 的 JDK环境 + 客户端下载
⭐ 方式3:Java > 1.7 的 JDK环境 + maven + 源码下载
⭐ 方式4:Go 客户端下载启动

服务端与客户端

服务 下载地址
lanproxy client for java GitHub
lanproxy server for java GitHub

Docker Hub 镜像

镜像 下载地址
franklin5/lanproxy-server Docker Hub
franklin5/lanproxy-client Docker Hub

三、公网服务器配置(Docker 一键启动)

3.1 基础环境安装

  1. 安装 docker 服务,以 CentOS 7.4 为例
1、安装依赖包
$ sudo yum install -y yum-utils  device-mapper-persistent-data  lvm2

2、设置稳定版仓库
$ sudo yum-config-manager   --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

3、安装
//安装最新版本
$ sudo yum install docker-ce

//或者安装指定版本
$ yum list docker-ce --showduplicates | sort -r
    //显示有以下版本
    docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable
//指定一个版本进行安装
$ sudo yum install docker-ce-<VERSION STRING>

4、启动doker
$ sudo systemctl start docker

5、通过运行hello-world镜像验证安装是否成功
$ sudo docker run hello-world
  1. 安装 Nginx 服务,以 CentOS 7.4 为例
1.添加Nginx到YUM源
$ sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

2.安装Nginx
$ sudo yum install -y nginx
Nginx将完成安装在你的CentOS 7 服务器中。

3.启动Nginx
$ service nginx start

3.2 Docker 启动服务端程序 ⭐⭐⭐

方式一:docker run

  • 通过 Docker,启动 lanproxy 服务,service docker start
  • 启动 Docker 后运行一下代码
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 - /usr/local/docker/lanproxy-server/config-data:/root/.lanproxy \
           franklin5/lanproxy-server
  • 参数:
    • LANPROXY_USERNAME:配置后台管理账号,默认admin
    • LANPROXY_PASSWORD:配置后台管理密码,默认admin
  • 可选:我也为你创建了上述的下载脚本,方便每次的启动
wget https://raw.githubusercontent.com/frank-lam/lanproxy-nat/master/docker-server/docker-run.sh

输入你的公网服务器 IP:8090,例如:http://120.92.10.120:8090,即可看到后台管理 Web 页面。好啦,到这里 lanproxy 的基础环境已经搭建成功,是不是很快,这就是 docker 的魅力。如果不用 docker 启动,请参考 lanproxy 的官方文档。

这里的 9000-9100 即为需要映射的端口地址,可以自定义设置。

1546568207628

方式二:docker compose

  1. 创建 docker-compose.yml 文件
version: '3.1'
services:
  lanproxy-client:
    image: franklin5/lanproxy-server
    container_name: lanproxy-server
    environment:
     # 配置后台管理账号,默认admin
     - LANPROXY_USERNAME=admin
     # 配置后台管理密码,默认admin
     - LANPROXY_PASSWORD=admin
    volumes:
     # 用于保存创建的配置文件,避免重启服务后配置消失
     - /usr/local/docker/lanproxy-server/config-data:/root/.lanproxy
    ports:
     - 8090:8090
     - 4900:4900
     - 4993:4993
     - 9000-9100:9000-9100
    restart: always
  • 可选:你可以手工复制创建,当然这里也为你提供方便下载的 docker-compose.yml
wget https://raw.githubusercontent.com/frank-lam/lanproxy-nat/master/docker-server/docker-compose.yml
  1. 启动服务
docker-compose up -d
  1. 停止服务
docker-compose down

😎 至此你的 lanproxy 服务端已经配置成功,账号密码:即为 docker 配置中你配置的账号密码

1546568207628

3.3 Nginx 反向代理配置域名

在上一步,我们通过 docker 启动了一个 lanproxy 环境,但是通过 IP 和端口号组合的方式并不优雅。这里我将解析两个域名通过 Nginx 进行端口转发。

# 两个域名都解析到你的公网上去

# 这个域名由于访问 lanproxy 管理后台
lanproxy.frankfeekr.cn  => 120.92.10.120  | Nginx to => 127.0.0.1:8090

# 这个域名由于访问你的内网电脑服务,9000 端口可自由的在 lanproxy 管理后台进行配置
jupyter.frankfeekr.cn   => 120.92.10.120  | Nginx to => 127.0.0.1:9000

好啦,上门就是对域名进行了一些简单的解释,现在开始 Nginx 的配置

  1. 进入 /etc/nginx/conf.d Nginx 的配置目录,在这里创建配置文件

  2. 创建 lanproxy.frankfeekr.cn.conf 配置文件

server {
    listen 80;
    # 这里使用自己的域名
    server_name lanproxy.frankfeekr.cn;
    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://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";
    }
}
  1. 创建 jupyter.frankfeekr.cn.conf 配置文件
server {
    listen 80;
    # 这里使用自己的域名
    server_name jupyter.frankfeekr.cn;
    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";
    }
}
  1. 重启 Nginx 服务
$ service nginx restart

😚 至此,你可以通过域名 http://lanproxy.frankfeekr.cn 进行访问 lanproxy 网页后台配置

3.4 继续配置 lanproxy 后台服务

  1. 添加一个客户端

1544795186699

  1. 添加配置

1544795764181

如果准备使用 Docker 客户端启动服务的请注意 🔥🔥🔥

  1. 如果通过 Java 客户端直接在主机启动客户端服务则 IP 地址为:127.0.0.1:port ;
  2. 如果通过 Docker 方式启动客户端,则 IP 地址为:172.17.0.1:port,这是 Docker 宿主机默认网卡 IP,如果自己手动修改过了 IP 地址,则填写你的 IP。可以通过命令 ip a | grep docker 查看你的宿主机 IP 地址。

😜 至此,服务端的配置就完成了。下面开始内网电脑的配置。

四、内网电脑客户端配置

4.1 强烈推荐:开箱即用的 Docker 版客户端 ⭐⭐⭐

由于在不同的主机上配置客户端,发现非常消耗时间,同时也缺乏稳定性。于是决定来定制一款开箱即用的 docker 容器版客户端,这里你将不需要安装任何客户端环境,甚至只需要几行优雅的命令即可启动一个客户端,速度和服务端配置一样飞起来。

lanproxy-client docker images:franklin5/lanproxy-client - Docker Hub

运行 lanproxy client 服务

方式一:docker run
  1. 一键启动客户端
docker run -d \
           --name lanproxy-client \
           -e LANPROXY_KEY="input_your_key" \
           -e LANPROXY_HOST="input_your_host" \
           --restart=always \
           franklin5/lanproxy-client

参数说明

  • input_your_key:这里是在 lanproxy 后台配置的密钥

  • input_your_host:服务器的 ip,支持域名

  • 可选:为了这里也为你提供了执行的 docker-run.sh (保存成 shell 修改和运行更方便)

wget https://raw.githubusercontent.com/frank-lam/lanproxy-nat/master/docker-client/docker-run.sh
  1. 停止容器
docker stop lanproxy-client
  1. 删除容器
docker rm lanproxy-client
  1. 强制删除容器
 docker rm -f lanproxy-client
  1. 重启容器
docker restart lanproxy-client
方式二:docker-compose
  1. 在你的项目目录下创建:docker-compose.yml
version: '3.1'
services:
  lanproxy-client:
    image: franklin5/lanproxy-client
    container_name: lanproxy-client
    environment:
     # 这里是在lanproxy后台配置的密钥
     - LANPROXY_KEY=input_your_key
     # 服务器的ip,支持域名
     - LANPROXY_HOST=input_your_host
    restart: always
  • 可选:你可以手工复制创建,当然这里也为你提供方便下载的 docker-compose.yml
wget https://raw.githubusercontent.com/frank-lam/lanproxy-nat/master/docker-client/docker-compose.yml
  1. 后台启动容器
docker-compose up -d

🚩使用 docker 方式运行客户端,请务必阅读

以上两种运行方式,选择一种运行即可一键启动 docker 客户端容器。但使用 docker 直接运行容器和在宿主机上运行时有所不同。在 docker 服务启动后,docker 会为宿主机和容器各自分配一个 docker 网卡,而宿主机上会分配默认的 IP 地址,即:172.17.0.1,故容器中可以 ping 通宿主机上 172.17.0.1 的任何 TCP 端口。

所以我们在后面的后台网页上的端口配置,不再是 172.0.0.1,必须是 172.17.0.1:port。

话不多说,请进入下一个步奏慢慢体会。

lanproxy 网页后台服务查看

客户端启动服务后,后台可查看状态(在线 / 离线)

1544798600592

流量统计

1544798624799

4.2 推荐:开箱即用客户端,仅需安装 Java 环境 ⭐⭐

如果你的本地已经有了 Java 环境(无论你是编译安装,还是 yum/apt-get 安装,都 ok),最低环境 JDK 1.7 以上。那么我推荐你是用本节中的配置说明,可以不用配置 maven 环境,直接拉取客户端一键运行,更加方便。

Java JDK 1.8 安装

  1. 验证你的本地是否有 Java 环境,如果已经存在 Java 1.7 以上的环境,即可调到下一个步骤
java -version
  1. 安装 Java 1.8(Ubuntu/apt-get)
# 首先,更新包索引
apt-get update
# 安装Java运行时环境(JRE)
apt-get install default-jre -y
# 验证安装是否成功
java -version

详细可参考:在Ubuntu 16.04如何安装Java使用apt-get的 - 一只宅男的自我修养 - 博客园

  1. 安装 Java 1.8(Centos/yum)
# 首先,更新包索引
yum update
# 安装 Java 1.8
yum install java-1.8.0-openjdk.x86_64 -y
# 验证安装是否成功
java -version

详细可参考:centos7通过yum安装JDK1.8 - 来吧 单刷各种经典 - CSDN博客

下载 Java 客户端(开箱即用)

  1. 为了免去 mvn 安装中出现的意外,我已经为你打造了一款开箱即用的客户端
git clone https://github.com/frank-lam/lanproxy-client.git
  1. 客户端目录
drwxr-xr-x 7 root root 4096 Jan  2 08:17 ./
drwxr-xr-x 1 root root 4096 Jan  2 08:17 ../
drwxr-xr-x 8 root root 4096 Jan  2 08:17 .git/
drwxr-xr-x 3 root root 4096 Jan  2 08:17 distribution/
drwxr-xr-x 4 root root 4096 Jan  2 08:17 proxy-client/
drwxr-xr-x 4 root root 4096 Jan  2 08:17 proxy-common/
drwxr-xr-x 4 root root 4096 Jan  2 08:17 proxy-protocol/
-rw-r--r-- 1 root root  606 Jan  2 08:17 restart.sh
-rw-r--r-- 1 root root  570 Jan  2 08:17 start.sh
-rw-r--r-- 1 root root  375 Jan  2 08:17 status.sh
-rw-r--r-- 1 root root  588 Jan  2 08:17 stop.sh
  1. 修改配置文件信息 打包完成之后,客户端文件会出现在 distribution/proxy-client-0.1 目录下,打开之后有是个文件夹:bin、conf、lib和log,配置信息在 conf/config.properties 文件内,根据前面服务端的配置信息修改一下。
# 这里是在lanproxy后台配置的密钥
client.key=e6a49a19b8024652ab4ff2210abf2c6a

# 配置ssl信息,根据服务端的配置填写(enable = false 就不需要配置)
ssl.enable=false
ssl.jksPath=test.jks
ssl.keyStorePassword=123456

# 服务器的ip,也支持域名
server.host=120.92.10.120

#proxy-server ssl默认端口4993,默认普通端口4900
#ssl.enable=true时这里填写ssl端口,ssl.enable=false时这里填写普通端口
server.port=4900

运行 lanproxy client 服务

  1. 启动客户端(官方脚本) 客户端信息配置完成之后就可以启动客户端了
# mac/linux使用这个
$ bash  bin/startup.sh

# Windows 直接运行 bin/startup.bat
  1. 当然这里我也为你准备了一些开箱即用的脚本(推荐使用)
# 切换到项目根目录

# 重启
sh restart.sh
# 启动
sh start.sh
# 停止客户端
sh stop.sh
# 当前客户端运行状态
sh status.sh

lanproxy 网页后台服务查看

客户端启动服务后,后台可查看状态(在线 / 离线)

1544798600592

流量统计

1544798624799

4.3 Java 客户端,通过 Maven 方式安装依赖 ⭐

这里我的内网是一台 Ubuntu 16.04 的服务器,以下我都将以此为例

Java 1.8 安装

  1. 下载 JDK1.8(lanproxy 支持 JDK1.7 以上环境)
$ wget https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz
  1. 解压安装包,移动文件夹到 /user/lib 目录
$ tar -zxvf jdk-8u191-linux-x64.tar.gz
$ mv jdk1.8.0_191 /usr/lib/jdk/jdk1.8.0_191
  1. 环境变量配置

    这里是将环境变量配置在 etc/profile,即为所有用户配置 JDK 环境。

$ vim + etc/profile

​ 环境设置

#set java env
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre    
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib    
export PATH=${JAVA_HOME}/bin:$PATH

​ 执行命令使修改立即生效

$ source /etc/profile
  1. 配置软连接

    软连接相当于windows系统中的快捷键,部分软件可能会从/usr/bin目录下查找Java,因此添加该软连接防止其他软件查找不到的情况。

$ sudo update-alternatives --install /usr/bin/java  java  /usr/lib/jdk/jdk1.8.0_191/java 300   
$ sudo update-alternatives --install /usr/bin/javac  javac  /usr/lib/jdk/jdk1.8.0_191/bin/javac 300 
  1. 测试安装是否成功
# 在终端输入,出现版本号则表示安装成功
$ java -version

更详细文档:

maven 安装

maven 是个项目管理工具,在编程领域应用广泛。

  1. 官网 下载maven。

img

$ wget https://www-eu.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
  1. 解压到 /opt/maven 目录

创建 manve 目录。

$ sudo mkdir /opt/maven

解压到 /opt/maven 目录下。

$ sudo tar zxvf apache-maven-3.6.0-bin.tar.gz -C /opt/maven
  1. 配置 maven 环境
$ vim + /etc/profile

在文件内容后面添加以下内容:

# set maven env
export M2_HOME=/opt/maven/apache-maven-3.6.0
export CLASSPATH=$CLASSPATH:$M2_HOME/lib
export PATH=$PATH:$M2_HOME/bin

保存,输入以下命令使配置文件生效。

$ source /etc/profile

验证是否安装成功。

$ mvn -v
  1. 修改 maven 源为阿里云,以及仓库默认存放路径。这样 maven 下载 jar 包的速度会快很多。

打开 maven 的配置文件

$ vim /opt/maven/apache-maven-3.6.0/conf/settings.xml

在 /home 目录下生成 maven/repository 文件夹

1544797073237

<localRepository>maven/reposity</localRepository>

修改源

1544797106999

<mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
</mirrors>

😚 至此,Maven 安装成功

参考资料:

启动内网服务

在前面我们将 jupyter.frankfeekr.cn 反向代理(公网服务器 9000 服务,内网 5050)

1544797593907

这里我们需要确保在内网电脑上,浏览器能够访问到 127.0.0.1:5050 这个服务。以我的 jupyter notebook 为例:

1544797708925

这里,我的内网服务已经启动。接下来只需要启动 lanproxy 客户端即可。

运行 lanproxy client 服务

官方提供了两种方式运行客户端,一种方式是使用官方提供的 GO,另一种通过 Java 环境运行。本文采用主流的 Java 方式运行

  1. 克隆 lanproxy 代码到本地电脑
$ git clone https://github.com/ffay/lanproxy.git lanproxy
  1. 打包 lanproxy 打包之前需要确保你安装了 maven
$ cd lanproxy
$ mvn package
  1. 修改配置文件信息 打包完成之后,客户端文件会出现在 distribution/proxy-client-0.1 目录下,打开之后有是个文件夹:bin、conf、lib和log,配置信息在 conf/config.properties 文件内,根据前面服务端的配置信息修改一下。
# 这里是在lanproxy后台配置的密钥
client.key=e6a49a19b8024652ab4ff2210abf2c6a

# 配置ssl信息,根据服务端的配置填写(enable = false 就不需要配置)
ssl.enable=false
ssl.jksPath=test.jks
ssl.keyStorePassword=123456

# 服务器的ip
server.host=120.92.10.120

#proxy-server ssl默认端口4993,默认普通端口4900
#ssl.enable=true时这里填写ssl端口,ssl.enable=false时这里填写普通端口
server.port=4900
  1. 启动客户端 客户端信息配置完成之后就可以启动客户端了
# mac/linux使用这个
$ bash  bin/startup.sh

# Windows 直接运行 bin/startup.bat
  1. 访问测试

    😚 至此,即可通过公网域名 http://jupyter.frankfeekr.cn 访问内网服务,实现内网穿透

1544798196919

当然你也可以通过公网 IP 和域名访问,例如:http://120.92.10.120:9000 这种方式访问!

  1. 停止客户端
$ bash  bin/stop.sh

lanproxy 网页后台服务查看

客户端启动服务后,后台可查看状态(在线 / 离线)

1544798600592

流量统计

1544798624799

4.4 Go 客户端

GitHub 客户端主页:lanproxy-go-client

不想安装 Java 环境的可以选择 Go

安装 Go 环境安装

1. buntu、Debian或Linux Mint安装Go语言

基于 Debian的 Linux 发行版本都可以使用 apt-get 命令来进行安装:

sudo apt-get install golang

要查看当前系统安装的 Go 语言版本可以使用如下命令:

go version

由于 Go 代码必需保存在 workspace(工作区)中,所以我们必需在 Home 目录(例如 ~/workspace)创建一个workspace 目录并定义 GOPATH 环境变量指向该目录,这个目录将被 Go 工具用于保存和编辑二进制文件。

mkdir ~/workspace
echo 'export GOPATH="$HOME/workspace"' >> ~/.bashrc
source ~/.bashrc

根据不同的需要,我们可以使用 apt-get 安装 Go tools:

sudo apt-cache search golang

2. Fedora、CentOS或RHEL安装Go语言

基于 Red Hat 的 Linux 发行版本都可以使用 yum 命令来进行安装:

sudo yum update
sudo yum install golang

要查看当前系统安装的 Go 语言版本可以使用如下命令:

go version

接下来还是在 Home 目录(例如 ~/workspace)创建一个 workspace 目录并定义 GOPATH 环境变量指向该目录,这个目录将被 Go 工具用于保存和编辑二进制文件。

mkdir ~/workspace
echo 'export GOPATH="$HOME/workspace"' >> ~/.bashrc
source ~/.bashrc

根据不同的需要,我们可以使用 yum 安装 Go tools:

yum search golang

参考资料:如何为Linux安装Go语言 - Go语言中文网 - Golang中文社区

拉取 ffay/lanproxy-go-client 代码

git clone https://github.com/ffay/lanproxy-go-client.git

安装客户端依赖包

cd lanproxy-go-client
sh build-release.sh

安装后,这时候在目录下会出现文件。

启动客户端

普通端口连接

# mac 64位
nohup ./client_darwin_amd64 -s SERVER_IP -p SERVER_PORT -k CLIENT_KEY &

# linux 64位
nohup ./client_linux_amd64 -s SERVER_IP -p SERVER_PORT -k CLIENT_KEY &

# windows 64 位
./client_windows_amd64.exe -s SERVER_IP -p SERVER_PORT -k CLIENT_KEY

SSL端口连接

# mac 64位
nohup ./client_darwin_amd64 -s SERVER_IP -p SERVER_SSL_PORT -k CLIENT_KEY -ssl true &

# linux 64位
nohup ./client_linux_amd64 -s SERVER_IP -p SERVER_SSL_PORT -k CLIENT_KEY -ssl true &

# windows 64 位
./client_windows_amd64.exe -s SERVER_IP -p SERVER_SSL_PORT -k CLIENT_KEY -ssl true

例如:

nohup ./client_linux_amd64 -s lp.thingsglobal.org -p 4900 -k 01c1e176d6ee466c8db717a8 &

命令参数:

GLOBAL OPTIONS:
   -k value       client key
   -s value       proxy server host
   -p value       proxy server port (default: 4900)
   --ssl value    enable ssl (default: "false", -p value should be server ssl port)
   --cer value    ssl cert path, default skip verify certificate
   --help, -h     show help
   --version, -v  print the version

lanproxy 网页后台服务查看

客户端启动服务后,后台可查看状态(在线 / 离线)

1544798600592

流量统计

1544798624799

五、总结

通过以上的配置,只要有一台公网电脑,即可实现内网穿透功能。摆脱花生壳的域名端口限制,流量限制,带宽限制。笔者的公网服务器为 6M 带宽,通过公网映射,文件下载测试大概在 800K/s - 1.5M/s 范围,如果仅是普通的网站服务完全可以完美穿透。

一般的应用场景:用来 SSH/MSTSC 远程连接,站点对外访问,是完全绰绰有余。

Todo List

为了方便客户端批量安装,我将会编写更为方便的 shell 脚本,做到一键自动部署

  • 一键 shell 脚本安装
  • 交互式 shell 脚本安装

参考资料

关于作者 👦

在颠覆世界的同时,也要好好关照自己。

QQ群 CSDN 邮箱 QQ群

from zero to hero.



About

🌍 手把手教你,搭建内网穿透服务,基于 lanproxy 穿透服务,为你深度定制了开箱即用的服务端和客户端 Docker 镜像。

Resources

Stars

427 stars

Watchers

13 watching

Forks

Releases

Packages

Contributors

Languages