【保姆级教程】免费内网穿透,手把手搭建,三步搞定

在内网部署的一个应用,想分享给外网的小伙伴玩玩?

学校实验室有一台高性能服务器,在外网就无法使用?

来吧,内网穿透,了解一下?

1. 关于内网穿透

1.1 什么是内网穿透

且看百度百科的说法:

内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。

说人话:通过一台公网服务器,把你的内网服务穿透出去,使得别人在公网也能访问你的服务。

下面这张图,很好解释了内网穿透的基本原理:

用户访问我们的内网服务,本质上是通过了公网服务器这个桥梁。

因为这个公网服务器是有公网IP的,而公网服务器和内网的服务器持久保持联系。

所以,当用户有请求发送时,公网服务器将请求转发到我们的内网,内网再将响应回复给公网服务器公网服务器将响应回复给用户。

1.2 如何实现内网穿透

如果你在百度搜索内网穿透,会找到花生壳、ngrok、FRP 等一些商业化工具,不过这些工具通常需要收费,免费的往往会限速。

当然,也有免费的开源工具,对于有一定开发基础的小伙伴,还是很容易上手的。

传送门:https://github.com/ffay/lanproxy

今天,就带着大家实操一番。

前段时间,带着大家申请了两台云服务器:

这次刚好拿它们来做实验,带大家快速跑通流程。

  • 甲骨文云服务器:作为服务端
  • 腾讯云服务器:作为客户端

2. 公网服务端配置

2.1 服务端启动

为了降低部署门槛,开源社区已经有小伙伴做好了 docker 镜像。

所以,服务端我们直接采用 docker 启动。

首先,新建项目文件夹:

mkdir lanproxy
cd lanproxy

然后,编写 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

解释下上面几个端口:

  • 8090:用于服务端 web 界面,方便对多个客户端进行管理
  • 9000-9100:用于配置多个客户端,进行端口映射

最后,启动服务:

docker-compose up -d

启动成功后,在宝塔面板中查看状态,如果启动失败。管理这里进去可以查看容器日志:

服务端配置成功!

2.2 打开防火墙

注意:上述端口:8090、4900、4993、9000-9100 都需要在防火墙中放开,否则无法访问!

有不了解的小伙伴可参考这两篇:

2.3 打开 Web 管理界面

打开 web 应用,也就是公网服务器的 IP + 端口号,例:your_ip:8090。登陆账号和密码,在 docker-compose.yml 中有配置,默认都是 admin。

进来后,我们先添加一个客户端,注意这里的密钥,会在后面客户端配置时需要用到。

3. 内网客户端配置

3.1 安装 Java 环境

比如我们要装稳定版 Java 1.8,命令行一键安装:

sudo apt install openjdk-8-jre-headless

当然,也可以直接在宝塔面板中进行安装:

上图中给出了 JDK 的地址,我们需要将其加入到环境变量中:

echo "export PATH=$PATH:/www/server/java/jdk1.8.0_371/bin/" >> ~/.bashrc
# 让更改立即生效
source ~/.bashrc

再看下是否安装成功:

java -version

3.2 安装客户端

下载:

git clone https://github.com/frank-lam/lanproxy-client.git

修改配置文件:

distribution/proxy-client-0.1/conf/config.properties 中进行修改.m默认只需要填入 client.keyserver.host

# 这里是在lanproxy后台配置的密钥
client.key=刚刚在 2.2 拿到的客户端密钥

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

# 公网服务器ip,也支持域名
server.host=xx.xx.xx.xx

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

启动客户端服务:

sh start.sh

如果需要关闭服务:

# 查看客户端运行状态
sh status.sh
# 停止客户端
sh stop.sh

回到客户端管理界面,发现当前客户端状态,已经变更为 在线

4、添加端口映射

回到客户端管理界面,在 配置管理这里,添加一个端口映射:

  • 代理名称:随便填
  • 公网端口:9000-9100 中任意一个,用于映射到内网服务
  • 内网主机 IP:找到内网主机的 IP,以及你要映射出来的服务的端口号

按照上述步骤,我为当前客户端添加了两个映射关系:

所以,服务端和客户端的映射关系应该是:

  • 公网服务端的 IP:9000 对应 101.33.210.166:3001
  • 公网服务端的 IP:9001 对应 101.33.210.166:3000

其中 3000 端口是我们上篇中配置的 OneAPI, 我们打开来看看:

代理成功后,后台还支持查看流量数据:

至此,你就可以愉快地采用公网 IP + 9000-9100 端口号去访问内网服务了~

写在最后

本文通过一场实操带大家走完了内网穿透的全部流程~

作为一款开源免费的服务,lanproxy 使用门槛低,配置简单,非常适合新手玩家尝试。

如果本文对你有帮助,欢迎点赞收藏备用!

大家都在用哪些内网穿透服务,欢迎评论区告诉我~

  • 25
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值