CentOS 7 部署frp穿透内网

news2024/12/22 18:59:18

本文将介绍如何在CentOS 7.9上部署frp,并通过示例展示如何配置和测试内网穿透。

文章目录

    • (1)引言
    • (2)准备工作
    • (4)frps服务器端配置
    • (5)frpc客户端配置
    • (6)启动停止重启命令
    • (7)设置开机自启动
    • (8)使用openwrt作为frpc客户端连接

(1)引言

在家庭网络环境中,如果你想在外部访问到家里的局域网设备,通常情况下需要拥有公网IP。然而,由于IPv4地址资源有限,运营商很少会提供公网IP给家庭用户,除非你愿意支付额外费用。虽然IPv6可以解决这个问题,但需要互访的两端都是IPv6才能实现访问。

为了实现在外部随时访问家庭网络中的设备,我们可以选择使用frp来进行内网穿透。frp是一个开源的内网穿透工具,它可以将内网设备暴露给外部网络,从而实现远程访问。

(2)准备工作

在开始之前,你需要准备以下几项:

  1. 一台带有公网IP的云服务器,本文以CentOS 7.9为例。
  2. 家庭网络中需要访问的设备,例如家用群晖NAS。
  3. 了解云服务器的防火墙和安全组设置,以便进行相应的配置。

frp下载

1、GitHub文件地址:https://github.com/fatedier/frp/releases

2、根据所需下载需要的版本:

选择对应版本,右击复制下载链接,到服务器下载或直接下载都行。

在这里插入图片描述

3、服务器使用wget进行下载

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

(4)frps服务器端配置

1、防火墙和安全组设置

在部署frp之前,我们需要进行一些防火墙和安全组的设置,以确保frp能够正常运行并且安全可靠。

2、关闭云服务器防火墙

首先,我们需要关闭云服务器上的防火墙。在CentOS 7.9上,可以使用以下命令关闭防火墙并禁用其开机启动:

systemctl stop firewalld && systemctl disable firewalld

3、关闭SELinux

SELinux是一种安全增强机制,它可以限制进程的权限。为了简化配置过程,我们可以将SELinux设置为"Permissive"模式,或者完全禁用它。可以使用以下命令将SELinux设置为"Permissive"模式:

setenforce 0

4、开放安全组端口

在云服务器的安全组中,我们需要开放一些端口以允许frp的通信。具体需要开放的端口包括:

  • frp服务的绑定端口(默认为7000)
  • frp的仪表盘端口(默认为7001)
  • frp的HTTP虚拟主机端口(默认为10080)
  • frp的HTTPS虚拟主机端口(默认为10443)
  • DSM 应用服务端口(5000)
  • Openwrt端口(8120)

在这里插入图片描述

请根据你的实际情况在安全组中开放相应的端口。

5、安装frps

  1. 创建配置文件目录
mkdir -p /usr/local/frps
  1. 将frps解压到tmp目录下备用
tar zxvf frp_0.32.1_linux_amd64.tar.gz  -C /tmp
  1. 查看解压的配置文件内容
 ll /tmp/frp_0.32.1_linux_amd64
total 23000
-rwxrwxr-x 1 mysql mysql 10575872 Apr  3  2020 frpc
-rw-rw-r-- 1 mysql mysql     7575 Apr  3  2020 frpc_full.ini
-rw-rw-r-- 1 mysql mysql      126 Apr  3  2020 frpc.ini
-rwxrwxr-x 1 mysql mysql 12935168 Apr  3  2020 frps
-rw-rw-r-- 1 mysql mysql     4639 Apr  3  2020 frps_full.ini
-rw-rw-r-- 1 mysql mysql       26 Apr  3  2020 frps.ini
-rw-rw-r-- 1 mysql mysql    11358 Apr  3  2020 LICENSE
drwxrwxr-x 2 mysql mysql     4096 Apr  3  2020 systemd
  1. 复制frpsfrps.ini两个配置文件
cd /tmp/frp_0.32.1_linux_amd64
cp frps frps.ini /usr/local/frps
  1. 修改frp配置文件

现在,我们需要对frp进行配置,以便实现内网穿透。

使用文本编辑器vim打开frp的配置文件/usr/local/frps/frps.ini

vim /usr/local/frps/frps.ini

根据需要,修改以下配置项:

[common]
bind_port = 7000
dashboard_port = 7001
vhost_http_port = 10080
vhost_https_port = 10443
token = 123456789
dashboard_user = admin
dashboard_pwd = admin

#内网NAS
[dsm]
type = tcp
local_ip = 192.168.31.100
local_port = 5000
remote_port = 5000

#内网路由器
[openwrt]
type = tcp
local_ip = 192.168.31.120
local_port = 80
remote_port = 8120

上述配置是frp的配置文件,其中包含了以下几个部分:

  1. [common]:这是通用配置部分,包含了一些常用的配置项。

    • bind_port:指定frp服务器监听的端口号,这里设置为7000。
    • dashboard_port:frp的仪表板(dashboard)的端口号,用于管理frp服务,这里设置为7001。
    • vhost_http_port:虚拟主机的HTTP端口号,用于HTTP协议的内网穿透,这里设置为10080。
    • vhost_https_port:虚拟主机的HTTPS端口号,用于HTTPS协议的内网穿透,这里设置为10443。
    • token:用于验证客户端与服务器之间的身份验证令牌。
    • dashboard_user:仪表板的用户名,这里设置为"admin"。
    • dashboard_pwd:仪表板的密码,这里设置为"admin"。
  2. [dsm]:这是一个自定义的服务配置部分,用于将frp服务器上的TCP流量转发到本地的NAS服务。

    • type:指定服务类型为TCP。
    • local_ip:本地服务的IP地址,这里设置为192.168.31.100。
    • local_port:本地服务的端口号,这里设置为5000。
    • remote_port:frp服务器上的对外暴露的端口号,这里设置为5000。
  3. [openwrt]:这是另一个自定义的服务配置部分,用于将frp服务器上的TCP流量转发到本地的路由器。

    • type:指定服务类型为TCP。
    • local_ip:本地服务的IP地址,这里设置为192.168.31.120。
    • local_port:本地服务的端口号,这里设置为80。
    • remote_port:frp服务器上的对外暴露的端口号,这里设置为8120。

通过这样的配置,frp可以将来自frp服务器的流量转发到本地的NAS服务和路由器上,实现了内网穿透的功能。请确保配置文件中的IP地址、端口号等信息与实际情况相符,并确保frp服务器和本地服务的网络连通性。

(5)frpc客户端配置

frpc配置与frps服务端配置其实相差不大

1、下载frp

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

2、创建frpc软件目录

mkdir -p /usr/local/frpc

3、解压frpc配置文件

tar zxvf frp_0.32.1_linux_amd64.tar.gz  -C /tmp

3、复制配置文件frpc.ini和frpc

cd /tmp/frp_0.32.1_linux_amd64

cp frps frpc.ini /usr/local/frpc

4、编辑配置文件

[common]
server_addr = 服务器的IP
server_port = 7000
token = 123456789




[dsm]
type = tcp
local_ip = 192.168.31.100
local_port = 5000
remote_port = 5000



[openwrt] 
type = tcp
local_ip = 192.168.31.120
local_port = 80
remote_port = 8120

(6)启动停止重启命令

1、服务端启动:

nohup 为后台运行进程

cd /usr/local/frps
nohup ./frps -c frps.ini > /dev/null 2> /dev/null &

2、客户端启动:

cd /usr/local/frpc
nohup ./frpc -c frpc.ini > /dev/null 2> /dev/null

3、查看frps和frpc进程

ps aux | grep frps
root      3908  0.0  0.7 715756 13468 pts/0    Sl   13:12   0:00 ./frps -c frps.ini
root      4271  0.0  0.0 112812   980 pts/0    S+   13:18   0:00 grep --color=auto frps


ps aux | grep frpc
root     28639  0.2  0.0 712392  8792 pts/2    Sl   13:16   0:00 ./frpc -c frpc.ini
root     28698  0.0  0.0  23244  2224 pts/2    S+   13:16   0:00 grep --color=auto frpc

4、查看frps服务端监听的端口

 netstat -tnlp | grep frps

输出:

tcp6       0      0 :::10000                :::*                    LISTEN      3908/./frps         
tcp6       0      0 :::8120                 :::*                    LISTEN      3908/./frps                 
tcp6       0      0 :::7000                 :::*                    LISTEN      3908/./frps         
tcp6       0      0 :::7001                 :::*                    LISTEN      3908/./frps         
tcp6       0      0 :::10080                :::*                    LISTEN      3908/./frps         
tcp6       0      0 :::5000                 :::*                    LISTEN      3908/./frps         
tcp6       0      0 :::10443                :::*                    LISTEN      3908/./frps        

(7)设置开机自启动

1、关闭frps和frpc进程

查询进程id

 ps aux | grep frps

输出:

root      3908  0.0  0.6 715756 12644 pts/0    Sl   13:12   0:00 ./frps -c frps.ini

关闭进程

kill -9 3908

frpc依次操作。

2、创建服务单元启动frps

在服务器端操作:

1、创建一个 Systemd 服务单元文件

 vim /etc/systemd/system/frps.service

内容如下:

[Unit]
Description=FRP Client

[Service]
ExecStart=/usr/local/frps/frps -c /usr/local/frps/frps.ini

[Install]
WantedBy=multi-user.target

客户端也是如此操作,修改vim /etc/systemd/system/frpc.service,和配置文件ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini即可。

3、创建启动服务单元fpc

 vim /etc/systemd/system/frpc.service

内容:

[Unit]
Description=FRP Client

[Service]
ExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc.ini

[Install]
WantedBy=multi-user.target

3、启动命令

#开启服务 
systemctl start frps 或frpc
#开机自启动 
systemctl enable  frps 或frpc

#重新启动 
systemctl restart  frps 或frpc

#停止启动 
systemctl stop  frps 或frpc

打开DSM网页界面,成功

在这里插入图片描述
openwrt访问
在这里插入图片描述

下载文件测试
速度有点慢,我的服务器网络是1M的

在这里插入图片描述

(8)使用openwrt作为frpc客户端连接

访问openwrt后台,在服务->Frp 内网穿透

端口令牌参考->>/etc/frps/frps.ini配置文件

服务器:填frpc服务器IP
端口:frpc服务端口(bind_port)
令牌:填token
用户:admin
在这里插入图片描述

编辑添加服务列表
在这里插入图片描述

设置协议类型:tcp
远程端口:5000
内网主机:192.168.31.100
内网端口:5000
在这里插入图片描述

服务器添加:

在这里插入图片描述

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

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

相关文章

从零到一:influxdb时序性数据库的基本概念与操作指南

目录 ​编辑 引言 数据库(database) 创建数据库 删除数据库 进入数据库 展示influxdb中所有数据库 测量(measurement) 写入测量 展示测量 总结 引言 InfluxDB是一个开源的时序数据库,专门设计用于处理时间序列数据。它是由InfluxD…

052:vue重新发布,软件热更新方面的一点经验示例

第052个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

Excel: Python 如何干掉 VBA 系列 乙

以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/k2XtfXS3GUt4r2QhizMOVg 创建工作表格 创建表格 xlwings 就可以协助创建插入了宏的 excel 表格。 先找到一个心满意足的目录,一般我…

随记-nginx docker + SSL 配置 - 配置等资源挂宿主机

随记-Nginx docker SSL 配置 - 配置等资源挂宿主机等 笔者动手配置,随手写的笔者,保证可操作 话说现在padmon是不是已经有代替docker的趋势了,谁能告诉我一把? 配置前准备 # 拉取nginx镜像 docker pull nginx #启动(暂时) doc…

DevEco Studio 鸿蒙(HarmonyOS)项目结构

DevEco Studio 鸿蒙(HarmonyOS)项目结构 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、项目结构 创建简单的Hello World移动应用项目结构如下图 由上到下说明各个文件夹的作用 .hvigor:存…

【已解决】ModuleNotFoundError: No module named ‘tensorflow‘

问题描述 Traceback (most recent call last): File "dataset_tool.py", line 16, in <module> import tensorflow as tf ModuleNotFoundError: No module named tensorflow 如果直接pip install tensorflow&#xff0c;还会报错 解决办法 方法一 pip i…

【华为数据之道学习笔记】4-3信息架构建设核心要素:基于业务对象进行设计和落地

4.3.1 按业务对象进行架构设计 业务对象是指业务领域中重要的人、事、物对象。业务对象承载了业务运作和管理涉及的重要信息&#xff0c;是信息架构中最重要的管理要素。 业务对象同时还是业务和IT的关键连接点&#xff0c;也是实现IA&#xff08;信息架构&#xff09;、BA&…

IntelliJ IDEA 自带HTTP Client接口插件上传文件示例

如何使用IntelliJ IDEA自带的HTTP Client接口插件进行文件上传的示例。在这个示例中&#xff0c;我们将关注Controller代码、HTTP请求文件&#xff08;xxx.http&#xff09;&#xff0c;以及文件的上传和处理。 Controller代码 首先&#xff0c;让我们看一下处理文件上传的Co…

持续集成交付CICD:Jenkins使用GitLab共享库实现自动上传前后端项目Nexus制品

目录 一、实验 1.GitLab本地导入前后端项目 2.Jenkins新建前后端项目流水线 3.Sonarqube录入质量阈与质量配置 4.修改GitLab共享库代码 5.Jenkins手动构建前后端项目流水线 6.Nexus查看制品上传情况 7.优化代码获取RELEASE分支 8.优化Jenkins流水线项目名称 一、实验 …

SpringBoot对PDF进行模板内容填充、电子签名合并

1. 依赖引入–这里只包含额外引入的包 原有项目包不含括在内 <!-- pdf编辑相关--> <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.3</version> </dependency><de…

【ARM Trace32(劳特巴赫) 使用介绍 6 -- 通用寄存器查看与修改】

请阅读【Trace32 ARM 专栏导读】 文章目录 通用寄存器查看与修改Rester 命令语法Register.InitRegister.RELOAD高亮显示Register变化的值多核寄存器显示设置寄存器的值修改 通用寄存器查看与修改 在使用Trace32进行调试时&#xff0c;有时候需要查看并修改通用寄存器、PC指针、…

拼接不同文件夹中同名图片的方法

有时候为了方便对比不同文件夹中同名图片&#xff0c;需要拼接在一起&#xff0c;这里提供一个拼接方法&#xff0c;当然不同命文件也可以实现拼接&#xff0c;稍微改改就能实现 如下图&#xff0c;在文件夹中有五个文件夹中的图片需要拼接&#xff0c;拼接后的图片存放在img_…

TSINGSEE青犀基于opencv的安全帽/反光衣/工作服AI检测算法自动识别及应用

安全帽/反光衣/工作服自动识别检测算法可以通过opencvyolo网络对现场画面中人员穿戴着装进行实时分析检测&#xff0c;判断人员是否穿着反光衣/安全帽。在应用场景中&#xff0c;安全帽/反光衣/工作服检测应用十分重要&#xff0c;通过对人员的规范着装进行实时监测与预警&…

diag_service的GLINK_IST是怎么来的

背景 平台&#xff1a;SA8155,QA 1.2.1 8155上集成了很多IP核&#xff0c;其中有不少的IP本质上是arm M核或者R核&#xff0c;这些模块在开发或者使用过程中也是需要监控和诊断的&#xff0c;但是他们并没有外部的调试接口&#xff0c;高通设计了整套诊断框架通过APSS&#x…

GBASE南大通用携手宇信科技打造“一表通”全链路解决方案

什么是“一表通”&#xff1f; “一表通”是国家金融监督管理总局为发挥统计监督效能、完善银行保险监管统计制度、推进监管数据标准化建设、打破数据壁垒&#xff0c;而制定的新型监管数据统计规范。相较于以往的报送接口&#xff0c;“一表通”提高了对报送时效性、校验准确性…

【Linux服务器Java环境搭建】09 在CentOS系统中安装和配置clickhouse数据库

一、安装环境 CentOS7 二、官网安装参考文档 官网安装参考文档 不同系统请参考如下建议 从RPM软件包安装&#xff1a; 建议在CentOS、RedHat和所有其他基于rpm的Linux发行版上使用官方预编译的rpm软件包从DEB软件包安装&#xff1a; 建议在Debian或Ubuntu上使用官方预编译…

深圳移动与大富科技助力深圳人工智能教育高质量发展

12月12日&#xff0c;中国移动通信集团广东有限公司深圳分公司(以下简称“深圳移动”) 与大富科技&#xff08;安徽&#xff09;股份有限公司&#xff08;以下简称“大富科技”&#xff09;在中国移动深圳信息大厦签署“战略合作框架协议”&#xff0c;共同推进人工智能教育、I…

物联网与低代码:构建智能化的连接世界

物联网&#xff08;IoT&#xff09;是指通过互联网将各种物理设备、传感器、车辆等连接起来&#xff0c;从而实现数据交互和智能化控制的技术领域。而低代码开发平台则是一种快速构建应用程序的方法&#xff0c;通过简化开发过程&#xff0c;使开发人员能够更迅速地实现创意和创…

数据结构学习 快速幂

看了这一篇很好的文章&#xff1a;快速幂&#xff0c;学习了一下快速幂。如果你看到这篇文章想要学习快速幂&#xff0c;我建议你直接去看这篇文章吧&#xff0c;下面的都是我个人的笔记和碎碎念。 重拾我的考研线性代数&#xff0c;非常有趣呢&#xff01; 基本的快速幂&…

Flutter之Android Studio No connected devices found

看图1. 是有显示有Redmi虚拟机的。 看图2. 没有Redmi虚拟机可选择&#xff0c;继续往下看解决方案。 看图3.点开项目结构设置SDK确定。 看图4.它来了