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)准备工作
在开始之前,你需要准备以下几项:
- 一台带有公网IP的云服务器,本文以CentOS 7.9为例。
- 家庭网络中需要访问的设备,例如家用群晖NAS。
- 了解云服务器的防火墙和安全组设置,以便进行相应的配置。
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
- 创建配置文件目录
mkdir -p /usr/local/frps
- 将frps解压到tmp目录下备用
tar zxvf frp_0.32.1_linux_amd64.tar.gz -C /tmp
- 查看解压的配置文件内容
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
- 复制
frps
和frps.ini
两个配置文件
cd /tmp/frp_0.32.1_linux_amd64
cp frps frps.ini /usr/local/frps
- 修改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的配置文件,其中包含了以下几个部分:
-
[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"。
-
[dsm]
:这是一个自定义的服务配置部分,用于将frp服务器上的TCP流量转发到本地的NAS服务。type
:指定服务类型为TCP。local_ip
:本地服务的IP地址,这里设置为192.168.31.100。local_port
:本地服务的端口号,这里设置为5000。remote_port
:frp服务器上的对外暴露的端口号,这里设置为5000。
-
[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
服务器添加:
相关文章:
CentOS 7 部署frp穿透内网
本文将介绍如何在CentOS 7.9上部署frp,并通过示例展示如何配置和测试内网穿透。 文章目录 (1)引言(2)准备工作(4)frps服务器端配置(5)frpc客户端配置(6&#…...
高效网络爬虫:代理IP的应用与实践
💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台🤟 代理 IP 推荐:👉品易 HTTP 代理 IP 💅 想寻找共同学习交流的小伙伴,…...
java设计模式-工厂方法模式
1.工厂方法(FactoryMethod)模式的定义 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。 2.工厂方法模式的主要优缺点 优点: 用户只需要知道具体工厂的名称…...
Python实验项目9 :网络爬虫与自动化
实验 1:爬取网页中的数据。 要求:使用 urllib 库和 requests 库分别爬取 http://www.sohu.com 首页的前 360 个字节的数据。 # 要求:使用 urllib 库和 requests 库分别爬取 http://www.sohu.com 首页的前 360 个字节的数据。 import urllib.r…...
实验三:指令调度和延迟分支
一、实验目的 加深对指令调度技术的理解。加深对延迟分支技术的理解。熟练掌握用指令调度技术来解决流水线中的数据冲突的方法。进一步理解指令调度技术对CPU性能的改进。进一步理解延迟分支技术对CPU性能的改进。 二、实验内容和步骤 首先要掌握MIPSsim模拟器的使用方法。见…...
【Oracle】PL/SQL语法、存储过程,触发器
一、Oracle数据类型 Orcle数据类型说明类比MySQL数据类型字符型CHAR固定长度的字符类型CHAR字符型VARCHAR2可变长度的字符类型VARCHAR字符型LONG大文本类型,最大2G数值型NUMBER数值类型,整数小数都可以,number(5)表示长度5的整数,…...
2020年第九届数学建模国际赛小美赛C题亚马逊野火解题全过程文档及程序
2020年第九届数学建模国际赛小美赛 C题 亚马逊野火 原题再现: 野火是指发生在乡村或荒野地区的可燃植被中的任何不受控制的火灾。这样的环境过程对人类生活有着重大的影响。因此,对这一现象进行建模,特别是对其空间发生和扩展进行建模&…...
保姆级 Keras 实现 YOLO v3 三
保姆级 Keras 实现 YOLO v3 三 一. 分配 anchor box二. 正负样本匹配规则三. 为每一个 anchor box 打标签3.1 anchor box 长什么样?3.2 每一个 anchor box 标签需要填充的信息有哪些?3.3 ( Δ x , Δ y , Δ w , Δ h ) (\Delta x, \Delta y, \Delta w, \Delta h) (Δx,Δy,…...
HPM6750系列--第十篇 时钟系统
一、目的 上一篇中《HPM6750系列--第九篇 GPIO详解(基本操作)》我们讲解了HPM6750 GPIO相关内容,再进一步讲解其他外设功能之前,我们有必要先讲解一下时钟系统。 时钟可以说是微控制器系统中的心脏,外设必须依赖时钟才…...
【简单总结】中断类型号 中断向量 中断入口地址
通过中断类型号可以计算出中断向量的地址。 然后根据该地址可以在中断向量表中取出中断服务程序的入口地址(中断向量)。 而中断向量就是中断服务程序入口地址。 做个不严谨的图: 1:通过中断类型号找到中断向量 2:通…...
【Python百宝箱】从传感器到云端:深度解析Python在物联网中的多面应用
迈向智能未来:Python与物联网生态系统的完美融合 前言 随着物联网技术的不断发展,Python作为一种灵活且强大的编程语言,逐渐成为物联网开发的重要工具之一。本文将深入探讨物联网领域中常用的Python库和框架,涵盖了从轻量级通信…...
weston 1: 编译与运行傻瓜教程(补充)
系统kubuntu23.10 git clone https://gitlab.freedesktop.org/wayland/wayland.git 86588fbdebe7f6ac9363d98f524e4ae14bd4b019 meson build/ --prefix$WLD ninja -C build/ install git clone https://gitlab.freedesktop.org/wayland/wayland-protocols.git c4f559866f13…...
微服务保护--线程隔离(舱壁模式)
一、线程隔离的实现方式 线程隔离有两种方式实现: 线程池隔离 信号量隔离(Sentinel默认采用) 如图: 线程池隔离:给每个服务调用业务分配一个线程池,利用线程池本身实现隔离效果 信号量隔离:…...
集群监控Zabbix和Prometheus
文章目录 一、Zabbix入门概述1、Zabbix概述2、Zabbix 基础架构3、Zabbix部署3.1 前提环境准备3.2 安装Zabbix3.3 配置Zabbix3.4 启动停止Zabbix 二、Zabbix的使用与集成1、Zabbix常用术语2、Zabbix实战2.1 创建Host2.2 创建监控项(Items)2.3 创建触发器&…...
K8S(七)—污点、容忍
目录 污点、容忍污点(Taints):容忍(Tolerations):如何一起使用污点和容忍:操作符(Equal、Exists)例子基于污点的驱逐基于节点状态添加污点 污点、容忍 官网地址…...
新视野大学英语1 词组 12.17
embarrassment和awkwardness的区别以及各自的组词。 "Embarrassment" 和 "awkwardness" 都可以用来描述一种尴尬或不舒服的感觉,但它们有一些微妙的区别。 "Embarrassment" 指的是由于尴尬、困窘或难堪的情况而产生的感觉。 这种感觉…...
springboot实战项目之使用AOP技术实现各种角色的鉴权功能
前言 项目开发需求,会员有不同的角色,不同的角色被赋予不同的权限,这就需要对会员的操作进行鉴权处理。 方案 采用aop,可实现满足这种需求,创建匿名类。对外提供接口的时候都会拦截,这种会有弊端&#x…...
华为配置基本QinQ示例
组网需求 如图1所示,网络中有两个企业,企业1有两个分支,企业2有两个分支。这两个企业的各办公地的企业网都分别和运营商网络中的SwitchA和SwitchB相连,且公网中存在其它厂商设备,其外层VLAN Tag的TPID值为0x9100。 现…...
【漏洞复现】系列集合
该篇文章仅供学习网络安全技术参考研究使用,请勿使用相关技术做违法操作 Apache Apache_HTTPD_未知后缀名解析Apache_HTTPD_换行解析(CVE-2017-15715)Apache_HTTPD_多后缀解析Apache_HTTP_2.4.50_路径穿越(CVE-2021-42013)Apache_HTTP_2.4.49_路径穿越(CVE-2021-41…...
TCP报文头(首部)详解
本篇文章基于 RFC 9293: Transmission Control Protocol (TCP) 对TCP报头进行讲解,部分内容会与旧版本有些许区别。 TCP协议传输的数据单元是报文段,一个报文段由TCP首部(报文头)和TCP数据两部分组成,其中TCP首部尤其重…...
第4章-第1节-初识Java的数组
1、数组 属于Java内存层面的一款容器(crud操作)。 概念: 内存中的一块存储区域(空间),内部有一组连续的小区域(元素空间),有数据类型的限定,可以存入一组匹配类型的数据,并且根据需要可以改动元素空间中的数据内…...
大数据技术10:Flink从入门到精通
导语:前期入门Flink时,可以直接编写通过idea编写Flink程序,然后直接运行main方法,无需搭建环境。我碰到许多初次接触Flink的同学,被各种环境搭建、提交作业、复杂概念给劝退了。前期最好的入门方式就是直接上手写代码&…...
IDEA中工具条中的debug按钮不能用了显示灰色
IDEA中工具条中的debug按钮不能用了显示灰色 1. 问题描述 IDEA上的DEBUG按钮突然变成了灰色: 2. 解决办法 一通搜索,终于找到解决办法 点击 File -> Project Structure如下图操作 3. 重启,解决 4. 参考 https://www.cnblogs.com…...
【MySQL内置函数】
目录: 前言一、日期函数获取日期获取时间获取时间戳在日期上增加时间在日期上减去时间计算两个日期相差多少天当前时间案例:留言板 二、字符串函数查看字符串字符集字符串连接查找字符串大小写转换子串提取字符串长度字符串替换字符串比较消除左右空格案…...
C++相关闲碎记录(14)
1、数值算法 (1)运算后产生结果accumulate() #include "algostuff.hpp"using namespace std;int main() {vector<int> coll;INSERT_ELEMENTS(coll, 1, 9);PRINT_ELEMENTS(coll);cout << "sum: " << accumulate(…...
18、vue3(十八):菜单权限,按钮权限,打包,发布nginx
目录 一、菜单权限和路由拆分 1.思路分析 2.深拷贝插件 3.代码实现 4.效果展示...
04 在Vue3中使用setup语法糖
概述 Starting from Vue 3.0, Vue introduces a new syntactic sugar setup attribute for the <script> tag. This attribute allows you to write code using Composition API (which we will discuss further in Chapter 5, The Composition API) in SFCs and shorte…...
vite+ts——user.ts——ts接口定义+axios请求的写法
import axios from axios; import qs from query-string; import {UserState} from /store/modules/user/types;export interface LoginData{username:string;password:string;grant_type?:string;scope?:string;client_id?:string;client_secret?:string;response_type?:…...
环境搭建及源码运行_java环境搭建_mysql安装
书到用时方恨少、觉知此时要躬行;拥有技术,成就未来,抖音视频教学地址: 1、介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle旗下产品。MySQL是最…...
Android camera的metadata
一、实现 先看一下metadata内部是什么样子: 可以看出,metadata 内部是一块连续的内存空间。 其内存分布大致可概括为: 区域一 :存 camera_metadata_t 结构体定义,占用内存 96 Byte 区域二 :保留区&#x…...
九龙坡区建设二校的网站/神马seo教程
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git视频观看 百问网驱动大全 I2C接口触摸屏驱动分析 参考资料: Linux 5.x内核 Documentation\de…...
怎么在服务器中安装WordPress/南京seo优化推广
我们在做接口测试时,除了常见的http接口,还有一种比较多见,就是socket接口,今天讲解下怎么用Python进行websocket接口测试。现在大多数用的都是websocket,那我们就先来安装一下websocket的安装包。pip install websock…...
yfcmf做网站/百度平台电话多少
以Oracle用户登录服务器,命令行中输入dbca,弹出数据库配置助手窗口,如下图: 点击"Next"按钮,进入下一步: 选择“Create a Database”创建数据库,并点击"Next"按钮进入下一步: 选择"Custome Database&quo…...
如何免费做网站详细点说/网站推广一般多少钱
链接: Eclipse如何设置自动提示?...
百度云 免费 网站主机/搜狗seo排名软件
shutdownshutdown指令以安全的方式来关闭系统,所有已经登录的用户都会被告知系统将要关闭。并且在最后五分钟内,新的登录将被阻止。过了指定的time后,关机会向init(8)守护进程发送一个请求,以便将系统降至适当的运行级别。这是通过…...
专业营销型网站建设公司/优化防控举措
SqlServer中的数据类型UniqueIdentifier 2007-08-30 11:23:00 vipxiaotian 阅读数 36033 文章标签: sqlserverapiinsert服务器go脚本 更多 分类专栏: SQL SqlServer中的数据类型UniqueIdentifier到底是什么东东? 该类型一般用来做为主键使…...