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
[root@frp ~]# tar -zxvf frp_0.51.3_linux_amd64.tar.gz -C /usr/local/bin/frp
  • 查看资源包内容
[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复制到下一步
[root@frp ~]# openssl rand -hex 16
  • 配置公网服务器的Frp文件
[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文件
[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服务端配置步骤

# 配置服务端自动启动文件
[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客户端配置步骤

# 配置服务端自动启动文件
[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.注意事项

  • 公网,内网服务器都需要做好防火墙配置,放行所需端口
  • 内网服务器上端口是存在且必须能正常访问
  • 内网服务器要能正常访问公网
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭不戳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值