在主流Linux发行版部署frp最新版
说明
使用编译后的软件部署frp。支持主流操作系统。
frp分为server和client。server提供统一服务,client连接server请求网络端口转发。
缺点:frp client的端口及端口名字必须全局唯一。frp server无法查询frp client配置的端口信息,需人工配置后统一记录管理。
场景介绍
无EIP的服务器希望将指定端口暴露在互联网,可借助frp工具,通过一台带EIP的服务器作为出口,实现端口转发暴露在互联网。
演示环境说明
操作系统Ubuntu24 LTS
frp server部署在带有EIP的系统。frp client部署在无EIP的系统。
参考资料
https://gofrp.org/zh-cn/docs/features/common/ssh/
https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml
https://github.com/fatedier/frp
https://gofrp.org/zh-cn/docs/reference/proxy/
https://gofrp.org/zh-cn/docs/reference/server-configures/
网络检查
frp server应当允许frp client及被许可的访问者通过互联网访问。许可ipv4和ipv6及全部端口。常见安全组,防火墙,系统内防火墙拦截。特殊情况,宝塔及类似管理软件,或额外加一层安全拦截,也需要配置网络白名单。
查询frp client的出口IP,添加到frp server的安全配置白名单。
curl ipinfo.io
curl myip.ipip.net
curl ifconfig.me
下载frp
浏览器访问https://github.com/fatedier/frp/releases下载软件包。选择最新版本,选择正确CPU架构的软件包。
将文件上传至frp server和frp client。均执行以下命令,此处以当前最新版为例,
解压文件
cd /opt
tar -zxf frp_0.65.0_linux_amd64.tar.gz
mv frp_0.65.0_linux_amd64 frp
在client操作,
cd frp
rm -rf frps*
在server操作
cd frp
rm -rf frpc*
配置任意端口的转发
可配置任意端口的转发。若异常,大多是配置文件错误或者网络阻塞。
注意,不同系统发行版,配置文件路径及语法可能有差异。
frp server
修改文件frps.toml配置如下,需删掉注释,
完整配置参考https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml
# frp组件之间建立联系的专用端口,可改为任意其他端口。
bindPort = 7000
# 控制台
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
# 配置认证令牌
auth.method = "token"
# 令牌。生成令牌使用命令openssl rand -hex 32
auth.token = "265eaf96cc381f189e8872a64a97e52196051a57cf4e8a4311036616b4f7d4de"
临时启动软件,验证服务有正常启动。
./frps -c ./frps.toml
配置服务持久化,编辑文件/etc/systemd/system/frps.service,配置如下,需删掉注释
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为frp文件的绝对路径
ExecStart = /opt/frp/frps -c /opt/frp/frps.toml
[Install]
WantedBy = multi-user.target
重启,使配置生效,
systemctl daemon-reload
systemctl enable frps
systemctl start frps
# 注意,需重启系统验证有效性,若已有业务运行,可以以后验证,
reboot
重启系统后,查看frp是否正常启动
systemctl status frps
若未自动启动,修改文件/etc/systemd/system/frps.service,改为以下配置,需删掉注释
[Unit]
Description = frp server
# 确保网络真正可用后再启动
After = network-online.target syslog.target
# 强化网络就绪的依赖关系
Wants = network-online.target
[Service]
Type = simple
# 启动frp的命令,需修改为frp绝对路径
ExecStart = /opt//frps -c /opt/frp/frps.toml
# 启动失败时自动重启(如网络临时未就绪)
Restart = on-failure
# 重启间隔3秒,避免频繁重试
RestartSec = 3
# 设置启动超时时间,防止卡死
TimeoutStartSec = 30
[Install]
WantedBy = multi-user.target
修改后,重启,使配置生效
systemctl daemon-reload
systemctl enable frps
systemctl start frps
reboot
重启系统后,查看frp是否正常启动
systemctl status frps
frp client
编辑配置文件frpc.toml,删掉注释后使用,
完整配置参考https://github.com/fatedier/frp/blob/dev/conf/frpc_full_example.toml
# frp server 的EIP
serverAddr = "EIP"
# frp server提供服务的专用端口
serverPort = 7000
# 配置认证令牌
auth.method = "token"
# 令牌。与frp server配置的必须一致。
auth.token = "265eaf96cc381f189e8872a64a97e52196051a57cf4e8a4311036616b4f7d4de"
# 复制此段,可配置转发不同端口
[[proxies]]
# 必须在frp server全局唯一。
name = "app1-tcp-30000"
# UDP端口写udp
type = "tcp"
# frp client的系统IP,也可填写127.0.0.1
localIP = "172.16.0.14"
# 需被访问的内部端口。
localPort = 30000
# frp server端转发后的端口,必须在frp server全局唯一。
remotePort = 91
临时启动软件,验证可连接server,需看到success字样的日志,
./frpc -c frpc.toml
配置服务持久化。
修改文件/etc/systemd/system/frpc.service,配置如下,需删掉注释,
[Unit]
Description = frp client
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为frp的绝对路径
ExecStart = /opt/frp/frpc -c /opt/frp/frpc.toml
[Install]
WantedBy = multi-user.target
重启,使配置生效
systemctl daemon-reload
systemctl enable frpc
systemctl start frpc
reboot
重启系统后,查看frp是否正常启动
systemctl status frpc
若未自动启动,则修改配置文件/etc/systemd/system/frpc.service,改为以下配置,需删掉注释
[Unit]
Description = frp client
# 确保网络真正可用后再启动
After = network-online.target syslog.target
# 强化网络就绪的依赖关系
Wants = network-online.target
[Service]
Type = simple
# 启动frp的命令,需修改为frp绝对路径
ExecStart = /opt//frpc -c /opt/frp/frpc.toml
# 启动失败时自动重启(如网络临时未就绪)
Restart = on-failure
# 重启间隔3秒,避免频繁重试
RestartSec = 3
# 设置启动超时时间,防止卡死
TimeoutStartSec = 30
[Install]
WantedBy = multi-user.target
修改后,重启,使配置生效
systemctl daemon-reload
systemctl enable frpc
systemctl start frpc
reboot
重启系统后,查看frp是否正常启动
systemctl status frpc
访问测试
在互联网访问frp server的IP:转发后的端口,注意,访问者应当在frp server的网络访问白名单。
常用参考
若忘记记录frp client的端口配置,可在frp server查询占用的端口,
ss -tulnp | grep frp
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)