Frp(内网穿透)服务部署

文章目录

Frp(内网穿透)服务部署

1.需求场景

为使得内网环境下的服务能正常被公网访问。将内网端口通过映射到公网机器上实现正常访问。

2.环境准备

  • 你需要有一台固定IP的公网服务器,建议使用固定带宽,因为内网穿透(非P2P模式)走的是公网流量,如果用按流量计费的服务器,内网服务器做网盘等应用会非常浪费流量。

  • 一台本地服务器,可以是windows、linux、macOS。

  • 公网服务器与本地服务器要打开相应的端口,才能使服务生效。

  • 公网服务器 IP:xx.xx.xx.xx

  • 内网服务器 IP:192.168.0.3

  • 系统:CentOS 7.9

注意: 若使用虚拟机则推荐桥接模式固定IP,可以省去很多麻烦。具体本文不多做阐述。

3.环境部署

a.资源包下载

下载地址:https://link.zhihu.com/?target=https%3A//github.com/fatedier/frp/releases

在此链接下找到各自机型的资源包进行下载上传到服务器上。(推荐最新版)我这里使用的是最新的0.51.3版本。

b.资源包介绍

  • 解压资源包为/usr/local/bin/frp
shell 复制代码
[root@frp ~]# tar -zxvf frp_0.51.3_linux_amd64.tar.gz -C /usr/local/bin/frp
  • 查看资源包内容
shell 复制代码
[root@frp ~]# tree /usr/local/bin/frp/
/usr/local/bin/frp/
|-- frpc
|-- frpc_full.ini
|-- frpc.ini
|-- frps
|-- frps_full.ini
|-- frps.ini
`-- LICENSE

0 directories, 7 files
[root@frp ~]# ll /usr/local/bin/frp/
total 30784
-rwxr-xr-x 1 1001 docker 14290944 Aug 14 12:04 frpc
-rw-r--r-- 1 1001 docker    12669 Aug 14 12:09 frpc_full.ini
-rw-r--r-- 1 1001 docker      132 Sep 21 23:37 frpc.ini
-rwxr-xr-x 1 1001 docker 17186816 Aug 14 12:04 frps
-rw-r--r-- 1 1001 docker     5933 Aug 14 12:09 frps_full.ini
-rw-r--r-- 1 1001 docker      134 Sep 22 00:02 frps.ini
-rw-r--r-- 1 1001 docker    11358 Aug 14 12:09 LICENSE

frps: 服务端启动文件

  1. frps_full.ini: frps_full.ini 是 frp 服务端的完整配置文件,其中包含了所有可用的配置选项和参数。这个文件通常用于整体配置 frp 服务器,包括绑定地址、端口、身份验证方式、通信加密等。使用 frps_full.ini,可以自定义 frp 服务器的行为以满足特定需求。
  2. frps.ini: frps.ini 是简化版的 frp 服务端配置文件,它只包含了最常用的配置项和参数,适用于一些简单的使用场景。相比于 frps_full.ini,它省略了某些高级功能和复杂配置,并提供了更为简洁的配置方式。如果只需进行基本的 frp 服务器配置,frps.ini 可能更适合。

frpc: 客户端启动文件

  1. frpc_full.ini: frpc_full.ini 是 frp 的完整配置文件,其中包含了所有可用的配置选项和参数。这个文件通常用于整体配置 frp 客户端,包括服务器地址、端口、身份验证方式、代理规则等。使用 frpc_full.ini,可以灵活地配置 frp 客户端以满足特定需求。
  2. frpc.ini: frpc.ini 是简化版的 frp 配置文件,它只包含了最常用的配置选项和参数,适用于一些简单的使用场景。相比于 frpc_full.ini,它省略了某些高级功能和复杂配置,并提供了更为简洁的配置方式。如果只需进行基本的 frp 配置,frpc.ini 可能更适合。

c.服务端部署

  • 下载解压资源包到公网服务器上解压步骤同上
  • 生成唯一token,将以下命令生成的随机token复制到下一步
shell 复制代码
[root@frp ~]# openssl rand -hex 16
  • 配置公网服务器的Frp文件
shell 复制代码
[root@frp ~]# vim /usr/local/bin/frp/frps.ini
[common]
bind_port = 7000
token = xxxxxxxxxxxxxxxxxxxxxx
dashboard_port = 7001
dashboard_user = admin
dashboard_pwd = admin

参数说明

bind_port:用于服务器用户接收客户端连接的端口

token:基于 Token 的身份验证方式比较简单,需要在 frpc 和 frps 的 [common] 段落中配置上相同的 token 参数即可。

dashboard_port:启用 Dashboard 监听的本地端口

dashboard_user:HTTP BasicAuth 用户名 (随意设置)

dashboard_pwd: HTTP BasicAuth 密码(随意设置)

dashboard 是用于监控FRP端口运行状态以及流量,设置好 dashboard 后可以通过 指定IP xx.xx.xx.xx:7001访问FRP的服务端仪表盘来查看运行状况。

  • 启动服务端

配置文件编写好后,进入FRP所在目录通过 ./frps -c ./frps.ini 启动服务端

至此,服务端搭建完成。

c.客户端部署

  • 下载解压资源包到内网服务器上解压步骤同上
  • 配置内网服务器的Frp文件
shell 复制代码
[root@Client ~]# vim /usr/local/bin/frp/frpc.ini
[common]
server_addr = xx.xx.xx.xx
server_port = 7000

token = xxxxxxxxxxxxxxxxxxxxxx

admin_addr = 192.168.0.3
admin_port = 7002
admin_user = admin
admin_pwd = admin 

[FRP-module]
type = tcp
local_ip = 192.168.0.3
local_port = 7002
remote_port = 7002

[HTTPD-module]
type = tcp
local_ip = 192.168.0.3
local_port = 80
remote_port = 8008

[SSH-Module]
type = tcp
local_ip = 192.168.0.3
local_port = 22
remote_port = 2022

参数说明

server_addr:连接服务端的地址

server_port:连接服务端的端口

token:鉴权使用的 token 值,需要和服务端设置一样的值才能鉴权通过

admin_addr:启用 AdminUI 监听的本地地址(本地服务器IP地址)

admin_port:启用 AdminUI 监听的本地端口

admin_user:HTTP BasicAuth 用户名

admin_pwd:HTTP BasicAuth 密码

以上的admin_*是开启本地服务器的管理web界面以及设置用户密码

frp-admin:仅在 frpc 中使用,用于配置单个代理的参数。代理名称必须唯一,不能重复(配置本地服务器管理 web界面 )

type = tcp:代理类型

local_ip = 192.168.0.3 :需要被代理的本地服务的 IP 地址,可以为所在 frpc 能访问到的任意 IP 地址

local_port = 7002 :本地服务端口,配合 local_ip

remote_port = 7002 :远程访问端口,用户访问此端口的请求会被转发到 local_ip:local_port

  • 启动客户端

配置文件编写好后,进入FRP所在目录通过 ./frps -c ./frpc.ini 启动服务端

至此,客户端搭建完成。

4.服务测试

浏览器访问公网IP:xx.xx.xx.xx:7001

由于之前对内网服务器做了关机操作,所以这里的指标为offline正常情况下(内网服务器开启状态),以下红框中的status状态为绿色的online

5.扩展

systemd接管frp服务端配置步骤

shell 复制代码
# 配置服务端自动启动文件
[root@frp ~]# vim /etc/systemd/system/frp.service
[Unit]
Description=Frp Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/frp/frps -c /usr/local/bin/frp/frps.ini
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

# 重新加载启动文件
[root@frp ~]# systemctl daemon-reload
# 启动frp服务
[root@frp ~]# systemctl start frp.service
# 设置开机自启动
[root@frp ~]# systemctl enable frp.service

systemd接管frp客户端配置步骤

shell 复制代码
# 配置服务端自动启动文件
[root@Client ~]# vim /etc/systemd/system/frp.service
[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/frp/frpc -c /usr/local/bin/frp/frpc.ini
ExecReload=/usr/local/bin/frp/frpc reload -c /usr/local/bin/frp/frpc.ini
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

# 重新加载启动文件
[root@Client ~]# systemctl daemon-reload
# 启动frp服务
[root@Client ~]# systemctl start frp.service
# 设置开机自启动
[root@Client ~]# systemctl enable frp.service

6.注意事项

  • 公网,内网服务器都需要做好防火墙配置,放行所需端口
  • 内网服务器上端口是存在且必须能正常访问
  • 内网服务器要能正常访问公网
相关推荐
荣--2 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森2 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜3 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB4 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode5 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220706 天前
如何搭建本地yum源(上)
运维
大树889 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠9 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质9 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工9 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信