赞
踩
在内网部署的一个应用,想分享给外网的小伙伴玩玩?
学校实验室有一台高性能服务器,在外网就无法使用?
来吧,内网穿透,了解一下?
且看百度百科的说法:
内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。
说人话:通过一台公网服务器,把你的内网服务穿透出去,使得别人在公网也能访问你的服务。
下面这张图,很好解释了内网穿透的基本原理:
用户访问我们的内网服务,本质上是通过了公网服务器
这个桥梁。
因为这个公网服务器
是有公网IP的,而公网服务器
和内网的服务器持久保持联系。
所以,当用户有请求发送时,公网服务器
将请求转发到我们的内网,内网再将响应回复给公网服务器
,公网服务器
将响应回复给用户。
如果你在百度搜索内网穿透
,会找到花生壳、ngrok、FRP 等一些商业化工具,不过这些工具通常需要收费,免费的往往会限速。
当然,也有免费的开源工具,对于有一定开发基础的小伙伴,还是很容易上手的。
今天,就带着大家实操一番。
前段时间,带着大家申请了两台云服务器:
这次刚好拿它们来做实验,带大家快速跑通流程。
为了降低部署门槛,开源社区已经有小伙伴做好了 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
解释下上面几个端口:
最后,启动服务:
docker-compose up -d
启动成功后,在宝塔面板中查看状态,如果启动失败。管理
这里进去可以查看容器日志:
服务端配置成功!
注意:上述端口:8090、4900、4993、9000-9100 都需要在防火墙中放开,否则无法访问!
有不了解的小伙伴可参考这两篇:
打开 web 应用,也就是公网服务器的 IP + 端口号,例:your_ip:8090
。登陆账号和密码,在 docker-compose.yml 中有配置,默认都是 admin。
进来后,我们先添加一个客户端,注意这里的密钥,会在后面客户端配置时需要用到。
比如我们要装稳定版 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
下载:
git clone https://github.com/frank-lam/lanproxy-client.git
修改配置文件:
在 distribution/proxy-client-0.1/conf/config.properties
中进行修改.m默认只需要填入 client.key
和 server.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
回到客户端管理界面,发现当前客户端状态,已经变更为 在线
:
回到客户端管理界面,在 配置管理
这里,添加一个端口映射:
按照上述步骤,我为当前客户端添加了两个映射关系:
所以,服务端和客户端的映射关系应该是:
其中 3000 端口是我们上篇中配置的 OneAPI, 我们打开来看看:
代理成功后,后台还支持查看流量数据:
至此,你就可以愉快地采用公网 IP + 9000-9100 端口号去访问内网服务了~
本文通过一场实操带大家走完了内网穿透
的全部流程~
作为一款开源免费的服务,lanproxy 使用门槛低,配置简单,非常适合新手玩家尝试。
如果本文对你有帮助,欢迎点赞收藏备用!
大家都在用哪些内网穿透服务,欢迎评论区告诉我~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。