0

0

Linux syn cookies / tcp_tw_recycle / tcp_tw_reuse 的防 SYN flood 配置风险

舞姬之光

舞姬之光

发布时间:2026-03-02 14:17:03

|

762人浏览过

|

来源于php中文网

原创

开启syncookies后丢包是因为其仅在syn队列溢出时触发,若somaxconn或应用backlog过小,syn包会在触发前被直接丢弃;同时syncookies禁用tcp扩展选项,可能导致部分客户端握手失败。

linux syn cookies / tcp_tw_recycle / tcp_tw_reuse 的防 syn flood 配置风险

syn cookies 开启后为什么反而丢包?

开启 net.ipv4.tcp_syncookies=1 是应对 SYN flood 的常规操作,但它只在内核判定“SYN 队列溢出”时才激活——不是一开就全程启用。如果服务器本身连接数高、net.core.somaxconn 或应用层 listen backlog 设得太小,SYN 包还没到 syncookies 触发阈值就被直接丢弃,现象看起来像“开了没用”甚至更差。

  • 确认是否真触发:抓包看是否有大量 SYN 发出但无 SYN+ACK 回复,同时 netstat -s | grep -i "syn"Syncookies sent 计数是否上升
  • 必须同步调大:net.core.somaxconn(内核级)和应用 listen() 的 backlog 参数(如 Nginx 的 listen ... backlog=4096),否则 syncookies 根本没机会介入
  • 注意:syncookies 会禁用 TCP 扩展选项(如时间戳、SACK),若客户端依赖这些(如某些 NAT 后的移动设备),可能握手失败或吞吐下降

tcp_tw_recycle 已被彻底移除,别再配它

net.ipv4.tcp_tw_recycle=1 在 Linux 4.12+ 内核中已被删除,任何尝试写入该参数的操作都会报错 Invalid argument。它曾试图通过快速回收 TIME-WAIT 连接缓解端口耗尽,但严重依赖客户端 IP 时间戳单调递增,在 NAT 环境下会导致连接被静默拒绝——这是历史坑,不是配置技巧。

  • 检查是否还在用:运行 sysctl net.ipv4.tcp_tw_recycle,返回 error: permission denied 或直接报错即说明内核已移除
  • 替代方案只有两个:调大本地端口范围(net.ipv4.ip_local_port_range)、缩短 TIME-WAIT 持续时间(net.ipv4.tcp_fin_timeout,但不推荐低于 30 秒)
  • 如果看到文档或脚本里还写这行,一律删掉,它现在只起反作用

tcp_tw_reuse 不是万能开关,得看场景

net.ipv4.tcp_tw_reuse=1 允许内核将处于 TIME-WAIT 状态的 socket 重用于新 outgoing 连接,但仅限于客户端场景(即本机主动发起连接),且要求对端时间戳严格递增。它对服务端监听连接完全无效。

Pinokio
Pinokio

Pinokio是一款开源的AI浏览器,可以安装运行各种AI模型和应用

下载
  • 生效前提:必须搭配 net.ipv4.tcp_timestamps=1(默认开启),否则直接忽略
  • 典型适用:本机作为 HTTP 客户端高频调用外部 API,且后端支持时间戳——此时可减少端口耗尽风险
  • 典型失效:本机是 Web 服务器,用户浏览器连你,tcp_tw_reuse 对这些 incoming 连接不起作用
  • 副作用:在有多个出口 NAT 或负载均衡的环境里,不同客户端时间戳可能冲突,导致连接被拒绝(错误常表现为 Connection refused 或超时)

真正有效的 SYN flood 防御组合

单靠 sysctl 参数无法根治 SYN flood,它们只是内核层面的缓冲策略。攻击流量到达网卡后,已经消耗了中断、软中断和内存资源。关键在于把过滤点前移到更早环节。

  • 硬件/网络层优先:在交换机或云厂商 SLB 上开启 SYN proxy 或连接数限制(如 AWS Security Group 的 connection tracking 限速)
  • 主机防火墙兜底:用 iptables 做速率限制,例如 iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 50 -j DROP
  • 避免滥用 tcp_syncookies:它应是最后防线,而不是日常配置;长期高并发下,更应优化应用连接池、升级 TLS 握手复用(如 TLS 1.3 early data)

TIME-WAIT 和 syncookies 的行为高度依赖具体内核版本和网络拓扑,同一配置在 IDC 物理机、K8s Pod、云函数里效果可能完全不同——别背参数,先看 ss -snetstat -s 输出的实际连接状态分布。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

245

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

519

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

588

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

244

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

628

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3613

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

53

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

67

2026.01.13

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

43

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10万人学习

Git 教程
Git 教程

共21课时 | 4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号