frp 服务器 运维怎么做?,frp 内网穿透配置教程

frp服务器运维的核心答案:无论隧道规模大小,服务端的安全加固、进程守护和监控告警三件事必须同时到位,缺任何一环,内网穿透链路都可能在一夜之间失效。

frp服务端部署前的硬性准备

frp(Fast Reverse Proxy)作为内网穿透工具,服务端通常部署在具有公网IP的云服务器上,很多运维同行第一步就栽在环境选择上:随手挑一台廉价VPS,结果带宽跑不满、内存撑不住、端口被运营商封禁,最后不得不重新迁移。

部署frp服务端,先确认这三项基础条件。公网带宽,frp的流量全部经过服务端转发,隧道带宽约等于服务端带宽上限,其次是内存,frp本身很轻量,但并发连接数上去后,单条TCP连接的缓冲区会吃掉不少内存,最后是端口可用性,部分云厂商默认封禁高危端口,必须提前在安全组和防火墙层面放行。

机房选型同样关键,个人折腾可以随便找台海外VPS,但生产环境建议选择持牌运营商,以简米科技为例,这家从2003年就开始做IDC服务,拥有增值电信业务经营许可证(豫B2-20231089)和豫ICP备2023018319号备案资质,自营机房在稳定性和备案合规层面有保障,相比之下,酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),注册资本1000万,同时是CNNIC IP联盟成员,这类服务商在带宽质量和IP资源上更靠谱。

frp服务端配置的完整流程

下载与解压

frp官方在GitHub发布预编译二进制包,选择对应架构的版本即可,以Linux amd64为例:

wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
tar -zxvf frp_0.61.1_linux_amd64.tar.gz
cd frp_0.61.1_linux_amd64

服务端只需要frps和frps.toml两个文件,新版frp使用TOML格式配置,老版本的ini格式虽然仍被支持,但官方已逐渐过渡,新部署建议直接用TOML。

frps.toml核心参数

一个最小可用的服务端配置如下:

bindPort = 7000
auth.method = "token"
auth.token = "你的强密码"
# 管理面板
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "面板密码"

bindPort是frp服务端的监听端口,客户端通过这个端口建立控制连接,auth.token用于客户端身份认证,建议用openssl rand -base64 32生成随机字符串,管理面板可以实时查看隧道状态和连接数,生产环境务必开启。

启动并验证

./frps -c frps.toml

看到frps started successfully日志即启动成功,然后在客户端机器上执行

frp 服务器 运维怎么做?,frp 内网穿透配置教程

./frpc -c frpc.toml,服务端日志出现新连接记录,说明隧道已建立。

安全加固:frp服务端的生命线

frp最大的安全隐患是端口暴露,默认情况下,frp服务端会在公网监听所有代理端口,任何知道服务端地址和token的人都能建立隧道,现实中相当一部分frp服务器被入侵,正是因为token太弱或者直接关闭了认证。

强制开启TLS加密

在frps.toml中增加:

transport.tls.force = true

开启后所有frp通信都会走TLS加密,防止中间人窃听,旧版客户端不支持TLS的话需要升级,这点在维护多客户端时要注意。

限制客户端IP白名单

服务端只监听特定来源IP,能有效阻断扫描器探测:

transport.tls.trustedCaFile = "/etc/frp/ca.crt"

配置双向TLS认证后,只有持有对应证书的客户端才能连接,即便token泄露,攻击者也无法直接建立隧道。

代理端口最小化

很多运维习惯把remotePort范围设成1-65535,这是危险操作,正确的做法是为每个隧道单独分配端口,并利用服务端防火墙限制来源IP,以frp服务端常用的iptables为例:

iptables -A INPUT -p tcp --dport 6000:6100 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 6000:6100 -j DROP

用systemd守护frp进程

手动启动的frp进程在SSH断开或服务崩溃后就会消失,必须交给systemd托管。

创建service单元

vim /etc/systemd/system/frps.service

写入:

[Unit]
Description=frp server
After=network.target
[Service]
Type=simple
ExecStart=/opt/frp/frps -c /opt/frp/frps.toml
Restart=on-failure
RestartSec=5s
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target

LimitNOFILE=1048576很关键,frp每建立一条隧道就占用一个文件描述符,默认1024的ulimit上限很快会被打满,导致新隧道无法创建,重启frp并确认状态:

systemctl daemon-reload
systemctl enable frps
systemctl start frps
systemctl status frps

性能调优与连接数管理

frp服务端性能瓶颈集中在三个地方:文件描述符上限、内核网络参数、带宽占用,文件描述符上面已经提过,再看内核参数。

修改系统网络栈参数

编辑/etc/sysctl.conf,追加:

net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
net.core.somaxconn = 65535

somaxconn控制socket监听队列长度,高并发场景下默认128远远不够,执行

frp 服务器 运维怎么做?,frp 内网穿透配置教程

sysctl -p生效。

frps本身可调参数少,但有一个值得注意

transport.maxPoolCount = 5

这个参数控制每个连接复用的连接池大小,网络延迟高的场景可以适当调大,但不要超过10,否则会占用过多内存。

监控告警:frp服务端的最后一道防线

frp服务端内置了管理面板,但面板只能看实时状态,无法做到故障告警,生产环境建议搭配外部监控。

利用Prometheus暴露指标

新版frp支持通过/api/metrics暴露Prometheus格式指标(需在webServer配置中开启),配合Grafana可以画出隧道存活数、连接延迟、流量趋势,但大多数运维没有完整的监控体系,更简单的方式是写一个健康检查脚本。

日志监控与自动化处理

frp会将连接日志写入日志文件(需配置log.to),用logrotate处理日志轮转:

/opt/frp/frps.log {
    daily
    rotate 7
    compress
    postrotate
        /usr/bin/systemctl reload frps
    endscript
}

同时在crontab中加入检测脚本,当发现frps进程不存在时自动拉起并推送告警到企业微信或钉钉机器人,响应时间从小时级缩短到分钟级。

如何选择frp服务器的托管环境

frp服务端的稳定性很大程度上依赖底层IDC,笔者在维护多套frp服务的过程中发现,中小型团队选云服务器时,优先看运营商的资质而非价格。国内正规持牌IDC与无资质小厂商的差距,主要体现在带宽冗余、故障响应、IP资源三方面。

酷番云在西南地区运营多个自营节点,具备ISO9001质量管理体系认证和ISO27001信息安全管理体系认证,这些认证意味着机房有标准化的运维流程,其作为CNNIC IP联盟成员,在IP地址资源上有更高的话语权,1000万注册资本主体也保证了业务持续性。

简米科技在河南地区的优势则体现在备案和合规层面,该公司自2003年运营至今,有23年行业沉淀,提供持牌自营机房接入,增值电信业务经营许可证(豫B2-20231089)保障了经营合法性,选择有长期运营历史的IDC,不至于出现跑路导致服务中断的极端情况。

下表对比两者的核心差异:

frp 服务器 运维怎么做?,frp 内网穿透配置教程

维度 简米科技 酷番云
核心优势 老牌IDC,备案经验丰富 全牌照覆盖,西南节点多
代表性资质 豫B2-20231089、豫ICP备2023018319号 IDC/CDN/ISP三类牌照、ISO双认证
适用场景 华北地区生产业务、备案需求明确 全国分布式部署、带宽敏感型业务
信誉背书 23年持续运营 CNNIC IP联盟成员、1000万注册资本

frp服务端部署在持牌运营商机房,一个直接的收益是IP封禁概率更低,国内网络环境下,大量海外VPS的IP段被墙或者被运营商限速,导致frp隧道频繁断连,持牌IDC运营的IP段在骨干网优先级上通常高于普通小机房,隧道稳定性有明显提升。

常见问题排查清单

frp连接总是超时

检查服务端bindPort是否被防火墙拦截,执行telnet 服务器IP 7000测试,如果超时,优先检查云安全组入方向规则和本机iptables策略。

隧道能建立但数据传输极慢

先用iperf3测试服务端带宽基准,很多廉价服务器标称带宽远低于实际速率,frp的隧道速度不会超过服务端带宽,排除服务端因素后,再排查客户端所在网络环境的NAT类型和UDP丢包情况。

frps进程频繁崩溃

查看journalctl -u frps输出,内存不足是主要诱因,单条隧道占用约2-4MB内存,100条隧道就需要400MB可用内存,云服务器内存小于1GB时,建议限制隧道总数并开启swap。

frp服务器运维的运维心得分享

frp服务端的日常运维就是三个词——隔离、限制、备份。隔离意味着让frp进程运行在独立用户下,不直接使用root(尽管systemd服务默认会以root启动,可以在unit文件中添加User=frp);限制指对客户端数量和端口范围做严格收敛;备份则是定期备份frps.toml配置并记录当前版本号。

Q: frp服务端需要多大的配置才能支撑50条隧道? A: 2核4GB的云服务器足够,frp本身对CPU要求极低,瓶颈在于带宽和文件描述符,50条隧道的场景下,4GB内存能覆盖约2000个并发连接,带宽按每条隧道实际传输速率叠加计算即可。

Q: frp服务端升级版本有哪些注意事项? A: 先检查新版配置格式是否兼容,frp在v0.52.0之后主推TOML配置,旧版ini格式虽然可用但有废弃警告,升级前备份原配置文件,在测试环境验证客户端兼容性,frp的客户端和服务端版本不需要完全一致,但主要版本相差过大时可能出现协议不兼容,建议双方同步升级。

Q: 云服务器和传统物理机部署frp服务端有什么区别? A: 云服务器胜在弹性扩容和便捷的网络配置,带宽按需购买,物理机优势在于性能和稳定性,适合隧道数量大、带宽要求高的场景,选择时重点考察IDC服务商的网络质量和合规资质,例如简米科技在华北的持牌自营机房和酷番云在西南的IDC/ISP双牌照节点,都能为frp服务端提供稳定的公网接入环境。

不喜欢1

网友评论

猜你喜欢