CentOS 7 部署frp穿透内网

本文将介绍如何在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_amd64cp 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 frpsps 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.mzph.cn/news/219536.shtml

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

相关文章

【Linux】进程和环境变量

我们启动一个软件,本质就是启动一个进程 在Linux下,运行一条命令,运行的时候,其实就是在系统层面创建了一个进程 而Linux系统管理大量进程则是先描述,再组织 进程 对应的代码和数据 进程等对应的PCB结构体 PCB包含了…

深度优先搜索LeetCode979. 在二叉树中分配硬币

给你一个有 n 个结点的二叉树的根结点 root ,其中树中每个结点 node 都对应有 node.val 枚硬币。整棵树上一共有 n 枚硬币。 在一次移动中,我们可以选择两个相邻的结点,然后将一枚硬币从其中一个结点移动到另一个结点。移动可以是从父结点到…

postman接口测试系列: 时间戳和加密

在使用postman进行接口测试的时候,对于有些接口字段需要时间戳加密,这个时候我们就遇到2个问题,其一是接口中的时间戳如何得到?其二就是对于现在常用的md5加密操作如何在postman中使用代码实现呢? 下面我们以一个具体的…

【ZeroMQ(ZMQ)】高速并发通信框架学习笔记(C风格、C++风格都有哦)

目录 官方文档: ZeroMQ An open-source universal messaging library 前言 ☘️ ZeroMQ——基于消息队列模式的Socket库 框架提供的套接字可以满足在多种协议之间传输原子信息,如线程间、进程间、TCP、广播等。 ZMQ将消息通信分成 4 种模型&#xff0c…

JavaEE之多线程编程:2.创建线程及Thread类常见方法(超全!!!)

一、创建线程 Java中创建线程的写法有很多种!!!这里介绍其中5种。 方法1:继承Thread类,重写run 创建一个类,让这个类继承自Thread父类,再重写我们的run方法就可以了。 使用Thread类&#xff…

MYsql第三次作业

目录 问题: 解答 1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息 4.从student表中查询计算机系和…

智能优化算法应用:基于鸽群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于鸽群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于鸽群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鸽群算法4.实验参数设定5.算法结果6.参考文献7.MA…

EdgeYOLO: anchor-free,边缘部署友好

简体中文 1 Intro 2 Updates 3 Coming Soon 4 Models 5 Quick Start \quad 5.1 setup

物奇平台MIC配置与音频通路关系

物奇平台MIC配置与音频通路关系 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 1 255代表无效&am…

uni-app 一些实用的页面模板

时间倒计时 <!-- 时间倒计时 --> <template><view class"container"><view class"flex-row time-box"><view class"time-item">{{ laveTimeList[0] }}</view><text>天</text><view class&qu…

Java笔记草稿——已完成

导航&#xff1a; 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客 推荐学习视频&#xff1a; 黑马程序员全套Java教程_哔哩哔哩 尚硅谷Java入门视频教程_哔哩哔哩 目录 零…

[BUUCTF 2018]Online Tool1

提示 利用nmap上传文件 首先进行代码分析&#xff1a; 首先是进行判断http信息头里是否在HTTP_X_FORWARDED_FOR并且是否有参数 $_SERVER[“HTTP_X_FORWARDED_FOR”] 的值才是客户端真正的IP&#xff08;如果是多层代理&#xff0c;该值可能是由客户端真正IP和多个代理服务…

二十五、图形视图框架

二十五、图形视图框架 我们将要用到三个类&#xff0c;QGraphicsView&#xff08;视图类&#xff09;、QGraphicsScene&#xff08;场景类&#xff09;、QGraphicsItem&#xff08;图元类&#xff09;。 QGraphicsView&#xff08;视图类&#xff09; 继承QWidget类&#xf…

玩转Docker(一):容器生态系统

文章目录 一、核心技术二、平台技术三、支持技术 本文结构如下&#xff1a; 一、核心技术 容器核心技术是指能够让Container在host上运行起来的那些技术。 &#xff08;1&#xff09;容器规范 容器不光是Docker&#xff0c;还有其他容器&#xff0c;比如CoreOS的rkt。为了保证…

网络推理之深度学习推理框架

如何选择深度学习推理框架&#xff1f; PyTorch vs LibTorch&#xff1a;网络推理速度谁更快&#xff1f; 高质量C进阶[2]&#xff1a;如何让线性代数加速1000倍&#xff1f; TensorRT: ONNX:

微服务--07--Sentienl中使用的限流算法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Sentienl中使用的限流算法1、计数器固定窗口算法2、计数器滑动窗口算法----&#xff08;默认&#xff09;3、漏桶算法----&#xff08;排队等待&#xff09;4、令牌…

node.js 启一个前端代理服务,代码直接改一改拿来用

文章目录 前言一、分析技术二、操作步骤2.1、下载依赖2.2、创建一个 serve.js 文件2.3、js 文件中写入以下代码 三、运行&#xff1a; node serve四、结果展示五、总结六、感谢 前言 有时候我们需要做一些基础的页面时&#xff0c;在研发过程中需要代理调用接口避免浏览器跨域…

AI全栈大模型工程师(二十六)如何选择 GPU 和云服务厂商

&#x1f4a1; 这节课会带给你 如何选择 GPU 和云服务厂商&#xff0c;追求最高性价比 如何部署自己 fine-tune 的模型&#xff0c;向业务提供高可用推理服务 如何控制内容安全&#xff0c;做好算法备案&#xff0c;确保合规 开始上课&#xff01; 硬件选型 当我们为模型训练及…

电子学会C/C++编程等级考试2022年12月(五级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:漫漫回国路 2020年5月,国际航班机票难求。一位在美国华盛顿的中国留学生,因为一些原因必须在本周内回到北京。现在已知各个机场之间的航班情况,求问他回不回得来(不考虑转机次数和机票价格)。 时间限制:1000 内存限制:655…

Ajax原理以及优缺点

Ajax原理 1.Ajax的原理简单来说是在用户和服务器之间加了—个中间层(AJAX引擎)&#xff0c;通过XmlHttpRequest对象来向服务器发异步请求&#xff0c; 2.从服务器获得数据&#xff0c;然后用javascript来操作DOM而更新页面。使用户操作与服务器响应异步化。 3.这其中最关键的一…