基于 frp 0.65 stcp 模式,实现web服务的安全访问内网穿透

目录

  • [一、什么是frp stcp 模式](#一、什么是frp stcp 模式)
  • 二、实现场景
    • [2.1 环境说明](#2.1 环境说明)
  • 三、下载frp
    • [3.1 下载地址](#3.1 下载地址)
    • [3.2 在线下载(有网络)](#3.2 在线下载(有网络))
    • [3.3 离线下载(无网络)](#3.3 离线下载(无网络))
  • 四、服务端安装
    • [4.1 下载解压](#4.1 下载解压)
    • [4.2 配置 frps.toml](#4.2 配置 frps.toml)
    • [4.3 配置防火墙](#4.3 配置防火墙)
    • [4.4 启动 frps 服务](#4.4 启动 frps 服务)
    • [4.5 配置 systemd 服务](#4.5 配置 systemd 服务)
  • 五、客户端安装
    • [5.1 下载解压](#5.1 下载解压)
    • [5.2 配置 frpc.toml](#5.2 配置 frpc.toml)
    • [5.3 启动 frpc 服务](#5.3 启动 frpc 服务)
    • [5.4 配置 systemd 服务](#5.4 配置 systemd 服务)
  • 六、访问端安装
    • [6.1 下载解压](#6.1 下载解压)
    • [6.2 配置 frpc.toml](#6.2 配置 frpc.toml)
    • [6.3 创建启动文件](#6.3 创建启动文件)
    • [6.4 访问服务](#6.4 访问服务)

一、什么是frp stcp 模式

某些内网服务,如果直接暴露在公网上,可能存在安全风险。使用 stcp(secret tcp) 类型的代理可以让您安全地将内网服务暴露给经过授权的用户,这需要访问者也部署 frpc 客户端。

要求在被访问服务的机器上以及要访问的用户的机器上都部署上 frp 的客户端。被访问的服务所在机器叫做服务端,另一端叫做访问端。

二、实现场景

基于frp的stcp模式实现将内网web服务安全的暴露到互联网,供被授权用户访问应用系统。

2.1 环境说明

分类 说明
frp 服务端 阿里云服务器,必须要有公网IP
frp 客户端 openEuler服务器,nginx部署web测试服务
frp 访问端 授权用户win电脑

三、下载frp

3.1 下载地址

官网地址:https://github.com/fatedier/frp/releases

官方文档:https://gofrp.org/zh-cn/docs/

CSDN下载:https://download.csdn.net/download/m0_37048012/92508877

下载时,根据安装服务器的架构选择,x86架构选择amd,arm架构选择arm。

3.2 在线下载(有网络)

此处以server端举例,client端同理。

bash 复制代码
# 创建安装目录
[root@openeuler ~]# mkdir /opt/frp
[root@openeuler ~]# cd /opt/frp
# 下载frp
[root@openeuler frp]# sudo wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz

3.3 离线下载(无网络)

官网地址下载frp包。

在通过远程工具上传到指定服务器即可。

四、服务端安装

4.1 下载解压

bash 复制代码
# 创建目录
[root@openeuler ~]# mkdir /opt/frp
[root@openeuler ~]# cd /opt/frp
# 下载 frp
[root@openeuler frp]# sudo wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz
# 解压 frp
[root@openeuler frp]# sudo tar -zxvf frp_0.65.0_linux_amd64.tar.gz
[root@openeuler frp]# cd frp_0.65.0_linux_amd64/

4.2 配置 frps.toml

bash 复制代码
# 编辑 frps.toml,输入【i】编辑
[root@openeuler frp_0.65.0_linux_amd64]# vi /opt/frp/frp_0.65.0_linux_amd64/frps.toml 

# =============================================================================
# frps.toml(直接复制此文本):
#-----------------客户端和服务端绑定的端口-----------------#
# 将在控制端通过公网ip+此端口号的形式进行穿透访问
bindPort = 7000
#-----------------客户端和服务端绑定的端口-----------------#

#-----------------服务端 Dashboard 配置-----------------#
# 服务端 Dashboard 使用户可以通过浏览器查看 frp 的状态以及代理统计信息
# Dashboard 监听的地址,默认为 127.0.0.1,如果需要公网访问,需要修改为 0.0.0.0
webServer.addr = "0.0.0.0"
# 将通过公网ip+此端口号访问 Dashboard,打开浏览器通过 http://[server addr]:7500 访问 Dashboard 界面
webServer.port = 7500
# Dashboard 用户名密码,可选,默认为空
webServer.user = "admin"
webServer.password = "admin"
#-----------------服务端 Dashboard 配置-----------------#

#-----------------身份认证配置-----------------#
# 目前 frpc 和 frps 之间支持两种身份验证方式,token 和 oidc,默认为 token
# auth.method="token"
# auth.token:设置用于身份验证的共享密钥(Token)。客户端(frpc)连接服务端(frps)时,必须提供相同的 token,否则连接会被拒绝。这个值可以是任意字符串,但建议使用足够长且随机的字符串以提高安全性。
auth.token = "y7gc4j4FF7rJnNBE"
#-----------------身份认证配置-----------------#
#-----------------log 日志配置-----------------#
# 日志输出文件路径
log.to = "/opt/frp/frp_0.65.0_linux_amd64/frps.log"
# 日志级别,可选值为 trace, debug, info, warn, error,默认级别为 info。
# log.level = "info"
# 日志文件最多保留天数,默认为 3 天。
# log.maxDays = 3
#-----------------log 日志配置-----------------#
# =============================================================================

# 保存 frps.toml
按【esc】后,输入【:wq】保存并退出编辑。

4.3 配置防火墙

第一步:配置服务器防火墙

bash 复制代码
# 查询端口是否开放
[root@openeuler ~]# sudo firewall-cmd --query-port=7000/tcp
[root@openeuler ~]# sudo firewall-cmd --query-port=7500/tcp
# 开放端口(TCP协议)
[root@openeuler ~]# sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent
[root@openeuler ~]# sudo firewall-cmd --zone=public --add-port=7500/tcp --permanent
# 重新加载防火墙规则
[root@openeuler ~]# sudo firewall-cmd --reload
# 验证端口是否开放
[root@openeuler ~]# sudo firewall-cmd --zone=public --list-ports
# 查看所有端口
[root@openeuler ~]# sudo netstat -nlpt

第二步:配置阿里云防火墙

在阿里云控制台页面,进入安全组,配置出入规则。

4.4 启动 frps 服务

bash 复制代码
[root@openeuler ~]# cd /opt/frp/frp_0.65.0_linux_amd64/
# 临时启动服务
[root@openeuler frp_0.65.0_linux_amd64]# ./frps -c ./frps.toml


访问 Dashboard

4.5 配置 systemd 服务

在 Linux 系统下,使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。
1、安装 systemd (默认都有)

bash 复制代码
# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd
# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd

2、创建 frps.service 文件

使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。

bash 复制代码
# 创建自启动脚本
[root@openeuler ~]# sudo vi /etc/systemd/system/frps.service

# =============================================================================
# 复制粘贴以下内容:
[Unit]
Description = Frps Server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# ExecStart = /path/to/frps -c /path/to/frps.toml
ExecStart = /opt/frp/frp_0.65.0_linux_amd64/frps -c /opt/frp/frp_0.65.0_linux_amd64/frps.toml

[Install]
WantedBy = multi-user.target
# =============================================================================

# 保存退出
按【esc】后,输入【:wq】保存并退出编辑。

3、启动服务

bash 复制代码
# 注意:要保证 frps 后台服务未启动
# 设置开机自启
[root@openeuler ~]# sudo systemctl daemon-reload
[root@openeuler ~]# sudo systemctl enable frps
# 启动服务
[root@openeuler ~]# sudo systemctl start frps
# 停止服务
[root@openeuler ~]# sudo systemctl stop frps
# 重启服务
[root@openeuler ~]# sudo systemctl restart frps
# 查看服务状态
[root@openeuler ~]# sudo systemctl status frps

五、客户端安装

5.1 下载解压

bash 复制代码
# 创建目录
[root@openeuler ~]# mkdir /opt/frp
[root@openeuler ~]# cd /opt/frp
# 下载 frp
[root@openeuler frp]# sudo wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz
# 解压 frp
[root@openeuler frp]# sudo tar -zxvf frp_0.65.0_linux_amd64.tar.gz
[root@openeuler frp]# cd frp_0.65.0_linux_amd64/

5.2 配置 frpc.toml

bash 复制代码
# 编辑 frpc.toml,输入【i】编辑
[root@openeuler frp_0.65.0_linux_amd64]# vi /opt/frp/frp_0.65.0_linux_amd64/frpc.toml 

# =============================================================================
# frpc.toml(直接复制此文本):
#---------------------配置服务器连接服务---------------------#
# 阿里云服务器公网ip
serverAddr = "xx.xx.xx.xx"
# 连接到云服务器端口
serverPort = 7000
# 配置身份认证方式
# auth.method = "token"
# 配置 token 密钥
auth.token = "y7gc4j4FF7rJnNBE"
#---------------------配置服务器连接服务---------------------#

#---------------------配置 web1 服务-------------------------#
[[proxies]]
# 服务名称(不可重复)
name = "secret_web1"
# 连接类型
type = "stcp"
# web1 服务 ip
localIP = "127.0.0.1"
# web1 服务端口
localPort = 9001
# 重要:只有与此处设置的 secretKey 一致的用户才能访问此服务
secretKey = "w6XN5U6a"
#---------------------配置 web1 服务-------------------------#
# =============================================================================

# 保存 frpc.toml
按【esc】后,输入【:wq】保存并退出编辑。

5.3 启动 frpc 服务

bash 复制代码
[root@openeuler ~]# cd /opt/frp/frp_0.65.0_linux_amd64/
# 临时启动服务
[root@openeuler frp_0.65.0_linux_amd64]# ./frpc -c ./frpc.toml


访问 Dashboard

Dashboard 显示的 stcp 服务如下:

5.4 配置 systemd 服务

在 Linux 系统下,使用 systemd 可以方便地控制 frpc 客户端的启动、停止、配置后台运行以及开机自启动。
1、创建 frpc.service 文件

使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frpc.service 文件,用于配置 frpc 服务。

bash 复制代码
# 创建自启动脚本
[root@openeuler ~]# sudo vi /etc/systemd/system/frpc.service

# =============================================================================
# 复制粘贴以下内容:
[Unit]
Description = Frpc Server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# ExecStart = /path/to/frps -c /path/to/frps.toml
ExecStart = /opt/frp/frp_0.65.0_linux_amd64/frpc -c /opt/frp/frp_0.65.0_linux_amd64/frpc.toml

[Install]
WantedBy = multi-user.target
# =============================================================================

# 保存退出
按【esc】后,输入【:wq】保存并退出编辑。

2、启动服务

bash 复制代码
# 注意:要保证 frpc 后台服务未启动
# 设置开机自启
[root@openeuler ~]# sudo systemctl daemon-reload
[root@openeuler ~]# sudo systemctl enable frpc
# 启动服务
[root@openeuler ~]# sudo systemctl start frpc
# 停止服务
[root@openeuler ~]# sudo systemctl stop frpc
# 重启服务
[root@openeuler ~]# sudo systemctl restart frpc
# 查看服务状态
[root@openeuler ~]# sudo systemctl status frpc

六、访问端安装

6.1 下载解压

官网地址下载frp win 包(frp_0.65.0_windows_amd64.zip)后解压即可。

6.2 配置 frpc.toml

使用编辑器(Notepad++)打开 frpc.toml 文件后进行编辑。

bash 复制代码
# =============================================================================
# frpc.toml(直接复制此文本):
#---------------------配置服务器连接服务---------------------#
# 阿里云服务器公网ip
serverAddr = "xx.xx.xx.xx"
# 连接到云服务器端口
serverPort = 7000
# 配置身份认证方式
# auth.method = "token"
# 配置 token 密钥
auth.token = "y7gc4j4FF7rJnNBE"
#---------------------配置服务器连接服务---------------------#

#---------------------配置 web1 访问服务--------------------#
[[visitors]]
# 服务名称(不可重复)
name = "secret_web1_visitor"
# 连接类型
type = "stcp"
# 要访问的 stcp 代理的名字
serverName = "secret_web1"
secretKey = "w6XN5U6a"
# 绑定本地端口以访问 SSH 服务
bindAddr = "127.0.0.1"
# 此处需要与内网端口一致
bindPort = 9001
#---------------------配置 web1 访问服务--------------------#
# =============================================================================

6.3 创建启动文件

1、新建记事本,命名【start_frpc.bat】

2、使用编辑器(Notepad++)打开 start_frpc.bat 文件后进行编辑后保存。

bash 复制代码
frpc.exe -c frpc.toml

6.4 访问服务

1、双击【start_frpc.bat】启动文件。

2、打开浏览器输入【http://127.0.0.1:9001/】

按照预期出现页面,代表服务配置成功,反之亦然。

相关推荐
yuanmenghao2 小时前
车载Linux 系统问题定位方法论与实战系列 - 车载 Linux 平台问题定位规范
linux·运维·服务器·网络·c++
上海云盾安全满满4 小时前
高防IP线路质量重要吗
网络·网络协议·tcp/ip
hoududubaba5 小时前
ORAN共享小区的基本概念
网络·网络协议
山峰哥5 小时前
数据库工程核心:SQL调优让查询效率飙升的实战密码
网络·汇编·数据库·sql·编辑器
梁辰兴8 小时前
计算机网络基础:网络地址转换
网络·计算机网络·计算机·nat·计算机网络基础·梁辰兴·网络地址转换协议
Q16849645158 小时前
红帽Linux-进程、ssh、网络、软件包、文件系统
linux·运维·网络
tobias.b9 小时前
408真题解析-2009-39-网络-TCP拥塞控制
网络·网络协议·tcp/ip·计算机考研·408考研·408真题解析
数通工程师9 小时前
IPv4和IPv6 地址分配:从划分到工具全解析
网络·网络协议·tcp/ip·华为
小白电脑技术10 小时前
玩客云OneCloud插入内存卡之后,开机自动挂载教程
网络·电脑
南烟斋..10 小时前
嵌入式系统(51单片机)核心外设详解:UART通信与DS18B20温度采集
linux·运维·网络