1 前言
frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。可用于游戏联机,远程控制本地设备,网络映射。
2 教程所需工具
1.用于提供映射服务的具有公网IP的linux服务器(如阿里云,腾讯云,具有公网IP的本地设备)
2.被映射的无公网IP的设备
3.对应系统的frp压缩包
(1).查看本地设备与服务器的架构
cat /proc/version
(2).下载对应版本
https://github.com/fatedier/frp/releases
amd64别称X86_64--arm64别称AArch64
3 部署
服务器端
在服务器root目录下新建frp文件夹
mkdir /root/frp
将压缩包解压后内容上传到frp文件夹下,保证frp文件下为下图文件(推荐使用winscp上传)
frp文件下内容
编辑frps.ini内容
vim /root/frp/frps.ini
根据自己需求如下更改内容(可直接覆盖后修改)
[common]
#此为服务器监听端口
bind_port = 7000 #默认为7000可更改你所需端口,记得防火墙放行此端口
保存后退出
启动frps服务确保在frp文件夹下运行命令
./frps -c ./frps.ini
(如果需要在后台运行,请往下翻阅关于后台运行的部分。)
客户端****
********在本地设备root目录下新建frp文件夹
mkdir /root/frp
将压缩包解压后内容上传到frp文件夹下,保证frp文件下为下图文件(推荐使用winscp上传)
frp文件下内容
编辑frps.ini内容
vim /root/frp/frpc.ini
根据自己需求如下更改内容(可直接覆盖后修改)
[common]
server_addr = 123.123.123.123 #此为服务器的公网ip
server_port = 7000 #服务器端监听的端口
[next] #需要映射的服务名称可以自定义不可重复
type = tcp
local_ip = 127.0.0.1 #本地回环地址
local_port = 5700 #本地服务端口
remote_port = 7001 #映射到服务器的端口
[ssh] #需要映射的服务名称可以自定义不可重复,此为映射ssh
type = tcp
local_ip = 127.0.0.1 #本地回环地址
local_port = 22 #本地服务端口
remote_port = 7002 #映射到服务器的端口
[XXX] #支持映射多个按照此格式添加
type = tcp
local_ip = 127.0.0.1 #本地回环地址
local_port = XX #本地服务端口
remote_port = XX #映射到服务器的端口
保存后退出
启动frps服务确保在frp文件夹下运行命令
./frpc -c ./frpc.ini
(如果需要在后台运行,请往下翻阅关于后台运行的部分。)
3 配置fcp开机启动
****如Linux上没有安装 systemd,可以使用 yum 或 apt 等命令安装 systemd(本地设备同理)
# yum
yum install systemd
# apt
apt install systemd
使用vim 创建并编辑 frps.service 文件。此处的文件名称决定了服务的名称。****
服务器端为frps
本地设备为frpc
服务器端使用
vim /etc/systemd/system/frps.service
本地设备端使用
vim /etc/systemd/system/frps.service
编辑服务端
[Unit]
#服务描述
Description=frpc service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#执行命令
ExecStart=/root/frpc/frps -c /root/frpc/frps.ini
ExecStop=/bin/kill $MAINPID
Restart=always #监控服务是否成功启动,未启动等待5分钟后从新启动
RestartSec=5 #等待时间
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
编辑本地设备端
[Unit]
#服务描述
Description=frpc service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#执行命令
ExecStart=/root/frpc/frpc -c /root/frpc/frpc.ini
ExecStop=/bin/kill $MAINPID
Restart=always #监控服务是否成功启动,未启动等待5分钟后从新启动
RestartSec=5 #等待时间
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
以下命令双端都需运行
更新systemctl
systemctl daemon-reload
配置 frps 开机自启
systemctl enable frps
到此frp部署完成
linux下systemd常用命令
使用 systemd 命令,管理 frps
# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps
linux下FRP常用命令
后台运行frp
#定位至frp文件所在位置
#服务端:
nohup ./frps -c frps.ini >/dev/null 2>&1 &
#客户端:
nohup ./frpc -c frpc.ini >/dev/null 2>&1 &
查看frp进程
``
ps -aux|grep frp| grep -v grep
``
结束frp进程
kill -9 12345(找到的进程号)