开源 Linux 服务器与中间件(十三)FRP服务器、客户端安装和测试

FRP内网穿透安装与测试

      文章的目的记录所使用的的Linux服务器和中间件的配置和使用,防止时间太长忘记,进行重复工作。

  相关链接:

开源 Linux 服务器与中间件(一)基本介绍

开源 Linux 服务器与中间件(二)嵌入式Linux服务器和中间件

开源 Linux 服务器与中间件(三)服务器--Nginx

开源 Linux 服务器与中间件(四)服务器--Tomcat

开源 Linux 服务器与中间件(五)服务器--Boa

开源 Linux 服务器与中间件(六)服务器--Lighttpd

开源 Linux 服务器与中间件(七)数据库--MySQL

开源 Linux 服务器与中间件(八)数据库--MariaDB

开源 Linux 服务器与中间件(九)数据库--SQLite3

开源 Linux 服务器与中间件(十)Mqtt协议和Emqx服务器安装测试

开源 Linux 服务器与中间件(十一)Emqx服务器消息的订阅和发送(mqtt测试)

推荐链接:

linux C 语言开发 (一) Window下用gcc编译和gdb调试

linux C 语言开发 (二) VsCode远程开发 linux

linux C 语言开发 (三) 建立云服务器

linux C 语言开发 (四) linux系统常用命令

linux C 语言开发 (五) linux系统目录结构

linux C 语言开发 (六) 程序的编辑和编译(vim、gcc)

linux C 语言开发 (七) 文件 IO 和标准 IO

linux C 语言开发 (八) 进程基础

linux C 语言开发 (九) 进程间通讯--管道

linux C 语言开发 (十) 进程间通讯--信号

linux C 语言开发 (十一) 进程间通讯--共享内存

linux C 语言开发 (十二) 进程间通讯--消息队列

Linux C到Android App开发推荐链接(入门十二章):

开源 java android app 开发(一)开发环境的搭建_csdn 开源 java android app-优快云博客

开源 java android app 开发(一)开发环境的搭建-优快云博客

开源 java android app 开发(二)工程文件结构-优快云博客

开源 java android app 开发(三)GUI界面布局和常用组件-优快云博客

开源 java android app 开发(四)GUI界面重要组件-优快云博客

开源 java android app 开发(五)文件和数据库存储-优快云博客

开源 java android app 开发(六)多媒体使用-优快云博客

开源 java android app 开发(七)通讯之Tcp和Http-优快云博客

开源 java android app 开发(八)通讯之Mqtt和Ble-优快云博客

开源 java android app 开发(九)后台之线程和服务-优快云博客

开源 java android app 开发(十)广播机制-优快云博客

开源 java android app 开发(十一)调试、发布-优快云博客

开源 java android app 开发(十二)封库.aar-优快云博客

linux C到.net mvc开发推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-优快云博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-优快云博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-优快云博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-优快云博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-优快云博客

内容:FRP服务器、客户端安装和测试

首先,明确一个概念:我们通常说的 “FRP 穿刺” 或 “内网穿透”,其正式名称是 “反向代理” 或 “NAT 穿透”。它的核心目的是让处于内网(没有公网IP)的设备能够被外网的设备轻松访问到

什么是 FRP?

FRP 是一个高性能的反向代理应用,可以帮助您轻松地将内网(例如家庭网络、公司局域网)的服务暴露到公网上,实现内网穿透。

工作原理

它采用 C/S(客户端-服务器)架构:

  1. 服务端:部署在具有公网 IP 的服务器上。它监听一个特定的端口(如 7000),等待客户端的连接。

  2. 客户端:部署在您内网的机器上。它会主动向公网的服务端发起一个持久的、稳定的连接,建立起一个安全的“隧道”。

  3. 通信过程

    • 当公网用户想访问内网服务时,他实际上访问的是 FRP 服务端的某个端口(例如,web 服务端口 8080)。

    • FRP 服务端收到请求后,通过之前建立好的“隧道”,将请求转发给内网的 FRP 客户端。

    • FRP 客户端再将请求发送给内网中指定的服务(例如,本机的 80 端口)。

    • 内网服务处理完请求后,响应数据沿着原路(客户端 -> 隧道 -> 服务端)返回给公网用户。

对于公网用户来说,他感觉就像是直接访问了那台公网服务器,完全感知不到背后复杂的内网结构。

目录

1.FRP服务器安装

2.FRP客户端安装

3.服务器和客户端联调测试

一、FRP服务器安装

1.1  服务器端使用了百度云的服务器,安装frp_0.53.2_linux_amd64.tar.gz

# 在服务端和客户端上分别执行
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz

解压并进入目录:

tar -xzf frp_0.52.3_linux_amd64.tar.gz
cd frp_0.52.3_linux_amd64

软件解压后,frps为服务器版本,frpc为客户端版本。服务器中删除掉frpc,客户端中删除frps防止误用。frps.toml和frpc.toml为配置文件。

1.2  编辑服务端配置文件 frps.toml

bindPort = 5000
webServer.port = 5500
webServer.addr = "0.0.0.0"
webServer.user = "admin"
webServer.password = "admin"

#vhostHTTPPort = 7500
#vhostHTTPSPort = 3002
log.to = "./frps.log"
log.level = "info"
log.maxDays = 3


auth.method = "token"
auth.token = "your token"

[web1]
listenport = 6002   #web1远程端口

[web2]
listenport = 6003  #web2远程端口

1.3  配置完成后,添加服务。

sudo vim /etc/systemd/system/frps.service

服务配置如下:

[Unit]
# 服务名称,可自定义
Description = frp client
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/zrh/frp_0.53.2_linux_amd64/frps -c /usr/zrh/frp_0.53.2_linux_amd64/frps.toml

[Install]
WantedBy = multi-user.target

操作

使用以下命令操作frps:

停止 systemctl stop frps

重启 systemctl restart frps

启动 systemctl start frps

查看 systemctl status frps

1.4  linux防火墙配置

配置完成后需要查看linux的防火墙规则,添加需要打开的tcp端口,否则公网无法使用。

sudo ufw status

打开需要使用的端口

sudo ufw allow 5000/tcp

注意:防火墙端口有2个地方配置,百度云需配置,linux防火墙也需要配置,否则无法连接。

所有需要用到的端口都需要这样配置。

二、FRP客户端安装

window10主机

2.1  Frpc.toml配置如下:

serverAddr = "x.x.x.x"
serverPort = 5000
auth.method = "token"
auth.token = "your token"
webServer.addr = "192.168.3.248"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"
loginFailExit = false
[[proxies]]
name = "frp_ui"
type = "tcp"
localIP = "192.168.3.248"
localPort = 7400
remotePort = 7400

[[proxies]]
name = "server"
type = "tcp"
localIP = "192.168.3.248"
localPort = 8880
remotePort = 11055

#[[proxies]]
#name = "http"
#type = "http"
#localIP = "192.168.3.248"
#localPort = 80
#customDomains = ["x.x.x.x"] # 不配置这个一直报错,md      

[[proxies]]
name = "web1"
type = "tcp"
localIP = "192.168.3.248" 
localPort = 80
remotePort = 6002

[[proxies]]
name = "web2"
type = "tcp"
localIP = "192.168.3.248"
localPort = 90
remotePort = 6003

2.2  使用命令启动(使用CMD命令)

三、服务器和客户端联调测试

3.1  通过登入服务器的管理页面测试

浏览器输入 x.x.x.x:5500可以登录服务器管理页面进行查看

可以看到服务器的Tcp连接已经成功,6002,6003端口,已经可以连接。

3.2  通过登入服务器的管理页面测试

在win10系统上输入127.0.0.1:7400也能登入客户端的管理页面

3.3  通过网络调试工具进行联调

打开网络助手设为tcp server 端口设为80,与frps的配置相同

再打开1个网络助手设为tcp client端口设为6002,ip设为公网服务器地址,点击连接,成功连接。

可以实现双向通讯。

这里的数据,就实现了内网对外网的通讯。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值