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

news2024/11/16 2:44:14

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

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

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

1. 关于内网穿透

1.1 什么是内网穿透

且看百度百科的说法:

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

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

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

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

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

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

1.2 如何实现内网穿透

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

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

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

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

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

  • 玩转云服务:手把手带你薅一台腾讯云服务器
  • 玩转云服务:Oracle Cloud甲骨文永久免费云服务器注册及配置指南

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

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

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 都需要在防火墙中放开,否则无法访问!

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

  • 玩转云服务:手把手带你薅一台腾讯云服务器
  • 玩转云服务:Oracle Cloud甲骨文永久免费云服务器注册及配置指南

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 使用门槛低,配置简单,非常适合新手玩家尝试。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1956579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI人工智能】文心智能体,00后疯感工牌生成器,低代码工作流的简单应用以及图片快速响应解决方案,干货满满,不容错过哦

背景 文心智能体平台,开启新一轮活动,超级创造营持续百日活动。 在AI 浪潮席卷的今天,如雨后春笋般丛生的 AI 应用,昭告着时代风口显然已随之到来。 如何能把握住时代红利,占据风口,甚至打造新风向&#x…

深入探讨单元测试:概念、作用及应用实例

目录 前言1. 单元测试的概念1.1 单元测试的特点1.2 单元测试的组成部分 2. 单元测试的主要作用2.1 确保代码正确性2.2 提高代码质量2.3 促进重构2.4 支持持续集成 3. 单元测试在整个测试中的地位3.1 单元测试 vs 集成测试3.2 单元测试 vs 系统测试3.3 单元测试 vs 验收测试 4. …

VulnHub靶机入门篇--Kioptrix4

1.环境配置 下载地址: https://download.vulnhub.com/kioptrix/Kioptrix4_vmware.rar 下载完解压之后是一个vdmk文件,我们需要先创建一个新的虚拟机,将vdmk文件导入就行了 先移除原先硬盘,然后再进行添加,网络连接为…

Computer Software Copyright Registration Certificate

Computer Software Copyright Registration Certificate 计算机软件著作权登记证书

项目实战--JUC之CompletableFuture温故

CompletableFuture温故 一、前言二、Future三、CompletableFuture3.1 CompletableFuture定义3.2 CompletableFuture使用场景3.3 CompletableFuture 常见操作3.3.1 创建CompletableFuture3.3.2 使用CompletableFuture3.3.3 异常处理3.3.4 注意事项 四、CompletableFuture处理工具…

51单片机嵌入式开发:21、STC89C52R控制抢答器+数码管+后台显示+LCD1602x显示

配套程序 STC89C52R控制抢答器数码管后台显示LCD1602x显示 STC89C52R控制抢答器数码管后台显示LCD1602x显示1 概述1.1 项目概述1.2 项目组成部分1.3 功能描述 2 开发环境2.1 支持设备2.2 硬件电路 3 软件代码工程4 演示Proteus仿真5 总结 配套程序 STC89C52R控制抢答器数码管后…

oracle登录报“ORA-27101: shared memory realm does not exist”

oracle登录报“ORA-27101: shared memory realm does not exist” 问题: 1、使用ip:1521/服务名方式连库报错" ORA-27101: shared memory realm does not exist Linux-x86_64 Error: 2: No such file or directory" 2、sqlplus XX/密码 可以登录数据库 …

linux下使用yum安装mysql

本文使用常规方式手动安装mysql 第一步 下载mysql的repo源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm第二步 安装mysql-community-release-el7-5.noarch.rpm包 rpm -ivh mysql-community-release-el7-5.noarch.rpm第三步 安装mysql-server yum -y…

一文步让成功搭建AI数字人直播系统!

随着AI数字人直播技术的不断成熟,越来越多的企业都开始使用或计划引入AI数字人直播,来实现直播板块的降本增效。这也让不少创业者看到了AI数字人直播所蕴含着的巨大市场需求和广阔收益空间,从而有了搭建AI数字人直播系统源码的想法。 ​不过&…

flask学习小结

背景 通过官方文档学习 quickstart 第一个app 代码 文件命名为hello.py windows执行set FLASK_APPhello,linux执行export FLASK_APPhello,然后执行flask run即可运行app 默认运行的app是127.0.0.1:5000,可通过-h -p参数改ip地址和端口。…

windows下定时执行bat脚本删除无用文件和文件夹

文章目录 1. 删除脚本编写2. 配置任务计划程序1.搜索任务计划程序2. 创建任务3. 触发器配置4. 创建任务–>操作5. 创建任务–>条件6. 创建任务–>设置7. 确定保存设置 1. 删除脚本编写 echo off REM 设置源目录和要删除的文件的天数阈值 SrcDirE:\xxx DaysAgo30REM 从…

二阶段测试

二阶段测试 1、部署框架前准备工作 服务器类型部署组件ip地址DR1调度服务器 主(ha01)KeepalivedLVS-DR192.168.168.21DR2调度服务器 备 (ha02)KeepalivedLVS-DR192.168.168.22web1节点服务器 (slave01)NginxTomcatMySQL 备MHA managerMHA node192.168.1…

【OpenCV C++20 学习笔记】图片融合

图片融合 原理实现结果展示完整代码 原理 关于OpenCV的配置和基础用法,请参阅本专栏的其他文章:垚武田的OpenCV合集 这里采用的图片熔合的算法来自Richard Szeliski的书《Computer Vision: Algorithms and Applications》(《计算机视觉&#…

【C++】循环结构-for循环

for 循环语法格式&#xff1a; for(起始表达式;条件表达式;末尾循环体) {循环语句} 注意&#xff1a;括号内的三者也可以写出来写在循环语句里&#xff0c;但使用for循环就是为了使循环更加简洁明了&#xff0c;因此不仅以这么做 下面是一个实例 #include<iostream> …

ROS安装key NO_PUBKEY F42ED6FBAB17C654

解决方案 可以手工添加。 ROS1云课→18一键配置_linux ros1配置-CSDN博客 下载ros.key&#xff0c;然后手工添加到对应位置。 ros2407.key master zhangrelay / ros_book GitCode 问题描述 ros2ros2-20l1a001cd:~$ sudo apt update Hit:1 http://ftp.sjtu.edu.cn/ubunt…

010 仿muduo实现高性能服务器组件_Http协议模块

​&#x1f308;个人主页&#xff1a;Fan_558 &#x1f525; 系列专栏&#xff1a;仿muduo &#x1f4d2;代码仓库&#xff1a; 项目代码 &#x1f339;关注我&#x1f4aa;&#x1f3fb;带你学更多知识 文章目录 前言Util模块设计意义整体设计代码如下 HttpRequest模块代码如下…

初始K8s

K8S 基本概念: K8S 的全称为 Kubernetes (K12345678S)&#xff0c;PS&#xff1a;“嘛&#xff0c;写全称也太累了吧&#xff0c;不如整个缩写”。 作用&#xff1a; 用于自动部署、扩展和管理“容器化&#xff08;containerized&#xff09;应用程序”的开源系统。 可以理解成…

web自动化6-pytest③实践测试用例-回归用例web自动化

# -*- coding: utf-8 -*- """ lemut_select - 业务受理 Author: duxiaowei Date: 2024/7/17 """ import timeimport allure import pytest from selenium.webdriver.common.by import By# 业务受理 allure.feature("业务受理") class …

SQL Date Functions | SQL Time Functions 概述

SQL Date Functions | SQL Time Functions 在SQL中&#xff0c;日期和时间函数是用于处理日期和时间数据的重要工具。 SQL Date Functions | SQL Time Functions函数可以从日期时间数据中提取特定的部分、执行日期计算、格式化日期时间等操作。 No.FunctionDescription描述1…

sql注入详解【从数据库架构分析】

文章目录 简介数据库的架构sql注入概念正常语句正常回显页面在页面中使用sql语句 跨库查询sql文件读写影响条件复现读写的路径的问题 sql注入请求分类sql注入请求类型sql注入请求方式&#xff1a;sql注入数据请求格式 数据库的增删改查数据库查询数据库添加数据库删除数据库修改…