frp内网穿透云服务器。云服务器映射多个家庭局域网内网端口。家庭Windows主机内网运行多个web程序

devtools/2024/12/24 11:30:40/

这篇文章最终要实现的效果是,把云服务器的公网IP绑定到自己本地局域网上的主机一样的效果。相当于局域网主机有了一个自己的公网IP地址。

FRP (Fast Reverse Proxy) 是一个用 Go 语言编写的高性能反向代理应用程序,主要用于内网穿透。它允许位于 NAT 或防火墙后的内网服务通过在公共网络上部署一个 frp 服务器(通常称为 frps)来对外提供服务。通过在客户端(frpc,即 frp 客户端)配置相应的代理规则,外部网络上的用户可以访问这些被防火墙或 NAT 限制的内部资源。

核心功能
  • 内网穿透:FRP 可以帮助内网服务穿透 NAT 和防火墙,使得这些服务可以从外部网络访问。
  • 反向代理:支持 TCP、UDP、HTTP、HTTPS 等多种协议的反向代理。
  • 负载均衡:FRP 支持通过配置多个入口节点来实现简单的负载均衡。
  • 加密传输:FRP 支持通过自定义设置使用加密传输,确保数据在传输过程中的安全性。
  • 身份验证:FRP 服务端和客户端支持多种身份验证方式,保证连接的安全性。
  • 访问控制:可以通过配置文件限制访问权限,管理不同客户端的访问规则。
组件说明
  1. frps(FRP Server)

    • 部署在具有公网 IP 地址的服务器上。
    • 负责接收来自 FRP 客户端的连接请求,并将请求转发到后端的具体服务。
    • 可以配置多种监听端口,支持不同的服务和协议。
  2. frpc(FRP Client)

    • 部署在内网环境中,需要进行穿透的服务器上。
    • 负责将内网服务通过建立到 FRP 服务器的连接暴露给外部网络。
    • 可以配置多个代理规则,以支持多个内网服务的穿透。
配置实例

以下是一个基本的 FRP 服务器和客户端配置的示例:

FRP 服务器配置(frps.ini)

[common]
bind_port = 7000

FRP 客户端配置(frpc.ini)

[common]
server_addr = x.x.x.x  # 替换为 FRP 服务器的公网 IP
server_port = 7000[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

在此配置中,FRP 客户端将本地的 SSH 服务(通常运行在端口 22)通过 FRP 服务器暴露在公网的 6000 端口上。这意味着,任何能访问 FRP 服务器 IP 地址在 6000 端口的用户都可以通过这个端口连接到内网的 SSH 服务。

使用场景

FRP 非常适合以下使用场景:

  • 内网的 Web 服务需要暴露到互联网上。
  • 访问部署在内网的 API 或数据库服务器
  • 远程办公时,访问公司内部网络资源。
  • IoT 设备远程管理和数据访问。

总之,FRP 是一个功能强大且灵活的内网穿透和反向代理工具,适用于多种网络穿透和服务暴露需求。

实际操作

1.配置服务器

## 准备一个云服务器,具有公网Ip的服务器,建议使用香港服务器,免域名备案

输入wget命令下载frp服务器

wget https://github.com/fatedier/frp/releases/download/v0.41.0/frp_0.41.0_linux_amd64.tar.gz

1.下载完成后的文件夹执行以下命令
在这里插入图片描述

tar -zxvf frp_0.41.0_linux_amd64.tar.gz

2.生成对于文件夹

cd frp_0.41.0_linux_amd64

3.查看所有文件

ll

在这里插入图片描述

vim frps.ini

4.配置服务端的文件,dashboard_port是web控制面板的端口号
在这里插入图片描述
5.执行命令,运行服务端,日志文件会输出在nohop.out中

nohup ./frps -c ./frps.ini &

6.查看日志,若是输出successful表示启动成功

cat nohup.out

在这里插入图片描述
7.访问web控制面板。地址为,ip:7500。若出现以下界面,表示服务器配置成功
在这里插入图片描述

windowsgithubwindowsv041_119">2.配置windows,自己的主机。去github下载对应windows的压缩包。找到v0.41版本

windows_122">2.1.下载frp的windows压缩包

https://github.com/fatedier/frp/releases?page=3

请添加图片描述

2.2.解压到一个文件夹

在这里插入图片描述

2.3.配置fprc.ini

type一定要选择tcp的方式,并且指定local 和remote端口,否则remote的端口会随机生成
[common]
server_addr =x.x.x.x
server_port = 7000[local_80]
type = tcp
local_port = 80
remote_port=80
[local_3000]
type = tcp
local_port = 3000
remote_port=8080

在这里插入图片描述

这里我将本地的80端口映射到了远程服务器上也是80端口,本地的3000端口映射到远程的8080端口。当我访问远程主机 ip:80后会映射到我本地的localhost:80端口。访问远程的ip:8080端口会映射到我本地开启的localhost:3000端口。这样就实现的内网穿透

在这里插入图片描述

2.4.cmd进入控制框,执行 frpc.exe文件

一定要使用cmd的方式执行exe文件,否则执行运行不了。

在这里插入图片描述
在这里插入图片描述

这里是我已经开启了,所以会报错error。到此,服务器就完成了外网映射内网。

2.5查看服务器web端的tcp注册界面,显示online表示注册成功。地址为,ip:7500

在这里插入图片描述

2.6输入服务器ip地址+端口号访问测试。成功!

windows_174">这里就实现了访问远程服务器—》远程服务器转发----》内网windows主机

在这里插入图片描述

3.购买域名,完成自定义域名功能

3.1阿里云或者腾讯购买一个非常便宜的域名,我买好了8RMB一年。然后配置dns解析

在这里插入图片描述

配置域名解析

在这里插入图片描述
在这里插入图片描述

点击确定后就完成了自定义域名绑定。可以使用域名访问内网的应用了,绑定后稍微等1min。因为阿里云要解析同步数据。在这里插入图片描述

查看远程web控制面板,有数据。

在这里插入图片描述

猜测一下为什么不用http,要使用tcp呢?

HTTP(超文本传输协议)和 TCP(传输控制协议)都是网络通信的重要协议,它们在网络中扮演着不同但互补的角色。理解它们之间的关系,有助于更好地把握现代网络通信的工作原理。

TCP - 传输控制协议

TCP 是一种传输层协议,它为上层应用提供了一种可靠的数据传输服务。TCP 确保数据可以在网络中从一端可靠地传输到另一端,即确保数据的完整性和正确性。TCP 主要的特点包括:

  • 面向连接:在数据开始传输之前,TCP 需要源和目标之间建立连接。
  • 可靠传输:TCP 通过序号、确认应答、重传机制等确保数据正确无误地到达目标地。
  • 流控制和拥塞控制:TCP 有机制来调整数据的发送速率,以匹配接收方的处理速度和网络的当前状态。
  • 有序传输:TCP 保证数据按照发送顺序到达接收端。
HTTP - 超文本传输协议

HTTP 是一种应用层协议,用于分布式、协作式、超媒体信息系统。HTTP 是 Web 上使用的主要协议,用于在 Web 浏览器和服务器之间传输网页和其他数据。HTTP 主要特点包括:

  • 无状态协议:HTTP 协议自身不保存之前的请求记录,每次请求之间是独立的。
  • 基于请求-响应模式:客户端发送请求后,服务器回送响应。
  • 可扩展:HTTP 允许传输任意类型的数据对象,通过 MIME 类型标识数据的格式。
它们之间的联系

HTTP 和 TCP 之间的主要联系是,HTTP 建立在 TCP 提供的服务之上。HTTP 作为应用层协议,使用 TCP 在网络中传输数据,依赖 TCP 提供可靠性和顺序性保证。

  • 依赖关系:HTTP 依赖于 TCP 来确保数据包的可靠性、顺序和错误检测。当你通过浏览器访问一个网站时,浏览器(HTTP 客户端)首先与服务器建立一个 TCP 连接,然后通过这个连接发送和接收 HTTP 消息。
  • 性能影响:TCP 的性能(如连接建立的延迟、重传等)可以直接影响 HTTP 的响应时间和效率。

总结来说,HTTP 和 TCP 是现代互联网通信的基石,它们共同协作,使得网络通信既可靠又高效。HTTP 利用 TCP 的传输服务在用户和网络服务之间高效地交换信息。

大胆猜测为什么使用tcp连接也能实现http访问内网应用。(若有错误请鸽鸽告知)

http在应用层,而tcp在运输层。故frp只会解析到tcp层后,就会把数据包转发给内网的主机。这里frp不需要解析到http层,因为frp作为一个中转站,只是负责转发数据而已,更简单点说,frp也可以是一个运行在网络层的路由器。只负责报文的存储转发和路由而已。故可以不使用http层与内网进行通信。
当内网应用接收到tcp的连接后,交给程序,最后封装好数据再次返回给frp,frp拿到数据后返回给客户端。

在这里插入图片描述

以下对于网络模型进行讲解

五层网络模型,又称为TCP/IP五层模型,是用来描述计算机网络通信的一种模型。这个模型从下到上分为物理层、数据链路层、网络层、传输层和应用层。这些层次定义了网络通信的不同方面,并且各自负责不同的功能。下面详细介绍每一层的功能和相关协议:

1. 物理层

物理层负责在物理媒体(如电缆、光纤等)上进行原始的数据传输,不关心数据的含义和结构。物理层的任务主要是确保原始数据可靠地在网络介质上进行传输。物理层包括的设备有网线、光纤、调制解调器等,以及相关的接口标准,如RJ45、100BASE-T等。

2. 数据链路层

数据链路层的主要任务是将原始比特流转换成逻辑的结构化数据包,称为帧。这一层提供介质访问和错误检测功能,确保数据在网络设备间准确无误地传输。此层的协议包括以太网(Ethernet)、PPP(Point-to-Point Protocol)等。数据链路层设备包括交换机、网桥等。

3. 网络层

网络层负责在多个网络间转发数据包,这包括决定数据的路径和路由。网络层使用的协议主要是IP协议,包括IPv4和IPv6。此层的设备有路由器,它用来连接不同的网络,确保数据包能找到从源头到目的地的最佳路径。

4. 传输层

传输层负责提供端到端的数据传输服务,这包括建立、管理和终止会话。传输层确保数据的完整性和正确顺序传输到目的地。这一层的主要协议有TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供可靠的连接,确保数据无误并顺序到达;UDP则提供更快但不可靠的连接。

5. 应用层

应用层是最靠近用户的一层,负责处理特定的应用服务细节。这一层的协议包括HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等。应用层直接为用户的应用程序(如网页浏览器、电子邮件客户端)提供服务。

总结

五层网络模型为网络设计和开发提供了一种结构化的方式,使得网络通信的每一个方面都能被逐一考虑和实现。每一层都执行其特定的功能,同时支持上层的服务并利用下层的服务。通过这种方式,网络的设计和管理变得更为模块化和清晰。
在这里插入图片描述


http://www.ppmy.cn/devtools/144963.html

相关文章

常用的缓存技术都有哪些

在计算机科学和软件开发领域,缓存技术是提高系统性能和响应速度 1. 本地缓存(Local Cache): • 存在于应用程序本地内存中的缓存,用于存储频繁访问的数据,以减少对外部存储(如数据库&#xff09…

常用类晨考day15

1.基本数据类型以及对应包装类 Byte Short Integer Long Float Double Boolean Character 2.什么是自动拆箱和装箱,jdk版本有什么要求?代码举 例并标明 Integer a 100; // 装箱 int b a; // 拆箱 从JDK1.5才开始支持 3.NumberFormatException是什么异常…

Retrofit源码分析:动态代理获取Api接口实例,解析注解生成request,线程切换

目录 一,Retrofit的基本使用 1.定义api接口 2.创建Retrofit实例 3.获取api接口实例发起请求 二,静态代理和动态代理 1,静态代理 2,动态代理 三,动态代理获取Api接口实例 四,解析接口方法注解&…

html在线转换工具集合大全

HTML转JS工具为您提供TML转JS,在线Html和Js代码互相转换工具:Js转Html,Javascript转Html,HTML转为Js,Html拼接为Js,Js脚本转为Html代码,Html代码转换,Js基本转换为HTML,Js在线转换,Html和Js脚本在线互转 Js转Html代码工具为您提供在线Js转为HTML代码,Html转为Js脚本,Js转为HTM…

拒绝 Helm? 如何在 K8s 上部署 KRaft 模式 Kafka 集群?

首发:运维有术 今天分享的主题是:不使用 Helm、Operator,如何在 K8s 集群上手工部署一个开启 SASL 认证的 KRaft 模式的 Kafka 集群? 本文,我将为您提供一份全面的实战指南,逐步引导您完成以下关键任务&a…

<论文>初代GPT长什么样?

一、摘要 今天我们聊一下论文《Improving Language Understanding by Generative Pre-Training》以及它所提出来的预训练模型——GPT1。我们知道Bert在出道那会儿红极一时,但实际上GPT1比Bert还要早几个月就出道了,而且同样刷新了当时的多个任务记录。GP…

ECharts柱状图-柱图38,附视频讲解与代码下载

引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个柱状图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供…

问题:解决将网页内容导出为PDF时部分内容被遮挡的问题

问题:解决将网页内容导出为PDF时部分内容被遮挡的问题 在日常工作和学习中,我们经常需要将网页内容保存为PDF格式以便于分享和打印。然而,使用主流浏览器的【打印】选项将网页另存为PDF时,常常会遇到页面顶部内容被遮挡、显示不全…