基于 frp 0.65 tcp 模式,实现web服务&ssh服务内网穿透

目录

  • 一、什么是frp
  • 二、实现场景
    • [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 配置防火墙](#5.3 配置防火墙)
    • [5.4 启动 frpc 服务](#5.4 启动 frpc 服务)
    • [5.5 配置 systemd 服务](#5.5 配置 systemd 服务)

一、什么是frp

frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

二、实现场景

基于frp的tcp模式实现将内网不同服务分别暴露到互联网,供用户访问应用系统。

2.1 环境说明

分类 说明
frp 服务端 阿里云服务器,必须要有公网IP
frp 客户端 openEuler服务器,nginx部署2个测试服务与ssh服务

三、下载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 = "web1"
# 连接类型
type = "tcp"
# web1 服务 ip
localIP = "127.0.0.1"
# web1 服务端口
localPort = 9001
# 自定义互联网访问端口
remotePort = 8100
#---------------------配置 web1 服务-------------------------#

#---------------------配置 web2 服务-------------------------#
[[proxies]]
# 服务名称(不可重复)
name = "web2"
# 连接类型
type = "tcp"
# web2 服务 ip
localIP = "127.0.0.1"
# web2 服务端口
localPort = 9002
# 自定义互联网访问端口
remotePort = 8200
#---------------------配置 web2 服务-------------------------#

#---------------------配置 ssh1 服务-------------------------#
[[proxies]]
# 服务名称(不可重复)
name = "ssh1"
# 连接类型
type = "tcp"
# ssh1 服务 ip
localIP = "127.0.0.1"
# ssh1 服务端口
localPort = 22
# 自定义互联网访问端口
remotePort = 8300
#---------------------配置 ssh1 服务-------------------------#
# =============================================================================

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

5.3 配置防火墙

配置阿里云防火墙

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

5.4 启动 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
# 访问 web 服务
打开浏览器通过 http://[server addr]:port 访问 web 界面


访问 Dashboard

Dashboard 显示的 tcp 服务如下:

5.5 配置 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
相关推荐
Kiyra2 小时前
LinkedHashMap 源码阅读
java·开发语言·网络·人工智能·安全·阿里云·云计算
A13247053122 小时前
防火墙配置入门:保护你的服务器
linux·运维·服务器·网络
汪碧康3 小时前
【k8s-1.34.2安装部署】六.企业级部署cilium-1.18.4网络插件
网络·云原生·容器·kubernetes·k8s·cilium·xkube
博语小屋3 小时前
TCP:协议、序列化与反序列化、JSON 数据和jsoncpp
linux·网络·网络协议·tcp/ip·json
咸鱼2.03 小时前
【java入门到放弃】网络
java·开发语言·网络
wniuniu_4 小时前
blob是啥
java·服务器·网络
秋深枫叶红4 小时前
嵌入式第四十篇——网络编程
linux·网络·学习
_F_y5 小时前
NAT技术、内网穿透、代理服务
网络·智能路由器
m0_555762905 小时前
linux开发——网络配置(含VM网络配置)
linux·运维·网络