linux内核网络参数tcp_tw_recycle 和 tcp_tw_reuse 你搞清楚了吗?
Docker 技术鼻祖系列
原文链接:https://blog.csdn.net/u010278923/article/details/102663535
今天在生产环境遇到了一个奇怪的网络现象,通过抓包发现,SYN
包没有 ACK
。可以 ping 通,防火墙开放的情况下,基本确定对方服务器问题。
首先排除端口是否已经耗尽,发现仍有很多富余
那么可能就是 linux 内核网络参数 tcp_tw_recycle
捣鬼。登录对方主机发现这个参数的确被设置成 1。
$ sysctl -a|grep tcp_tw_recycle
net.ipv4.tcp_tw_recycle = 0
很多人对 tcp_tw_recycle
和 tcp_tw_reuse
区别不是很清楚。下面详细介绍一下。测试之前我们先将客户端的端口号范围限制一下
$ sysctl -w "net.ipv4.ip_local_port_range=32768 32768"
net.ipv4.ip_local_port_range = 32768 32768
只开放一个端口,然后访问任意一个服务,在 tcp_tw_reuse
和 tcp_tw_recycle
都关闭的情况下,可以看到服务只能访问一次,再次访问便报错。
如果开启 tcp_tw_reuse
,那么便可以重复利用处于 time_wait
状态的连接。
而 tcp_tw_recycle
这个参数有点尴尬,4.x
内核版本之后这个参数已经被废弃了,可见这个参数有点鸡肋甚至是危险。这个参数表明尽快的回收处于 time_wait
状态的连接,不用等两个 MSL
就关闭连接。但它的副作用是会拒绝所有比这个客户端时间戳更靠前的网络包。如果大家没有理解,我举个例子,如果服务器记录了 10.10.10.10
这个机器发过来最新的数据包是 10:41
那么如果从 10.10.10.10
过来数据包是这个时间之前是话,这个包将会被拒绝。那么好奇的读者又会问,这个包不应该是递增的吗?通常应该不会有问题,是这样,但如果是 NAT
的环境,你很难保障后端所有的机器的时钟是同步的,那么就会出现部分数据包被服务端拒绝的情况。所以这个参数请谨慎使用,不建议开启!!!
你可能还喜欢
点击下方图片即可阅读
只有 4000 行代码的 WireGuard 不权威指南:理论篇
云原生是一种信仰 ????
扫码关注公众号
后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具,只需一条命令,连 ssh 都不需要!
点击 "阅读原文" 获取更好的阅读体验!
❤️给个「在看」,是对我最大的支持❤️
linux内核网络参数tcp_tw_recycle 和 tcp_tw_reuse 你搞清楚了吗?相关推荐
- Linux 实例常用内核网络参数介绍与常见问题处理
查看和修改 Linux 实例内核参数 方法一.通过 /proc/sys/ 目录 查看内核参数:使用 cat 查看对应文件的内容,例如执行命令 cat /proc/sys/net/ipv4/tcp_tw ...
- Linux服务器内核网络参数优化
net.core.netdev_max_backlog = 400000 #该参数决定了,网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目.net.core.optm ...
- Linux内核网络栈1.2.13-route.c概述
参考资料 <<linux内核网络栈源代码情景分析>> route路由表概述 在IP协议的实现中,只要发送数据包都要查询路由表,选择合适的路由选项,确定下一站的地址,并构造MAC ...
- Linux内核网络栈1.2.13-tcp.c概述
参考资料 <<linux内核网络栈源代码情景分析>> af_inet.c文件中调用函数在协议层的实现 本文主要根据在af_inet.c文件中根据初始化不同的协议,来调用不同的协 ...
- Linux内核网络栈1.2.13-af_inet.c概述
参考资料 <<linux内核网络栈源代码情景分析>> socket常用函数继续调用分析 根据socket提供的常用库函数,socket.read和write等函数,继续往下一层 ...
- Linux内核网络栈1.2.13-socket.c函数概述
参考资料 <<linux内核网络栈源代码情景分析>> socket常用函数概述 根据socket提供的常用的库函数,socket,read,write等函数, 执行的过程 in ...
- Linux内核网络栈1.2.13-网卡设备的初始化流程
参考资料 <<linux内核网络栈源代码情景分析>> 网卡设备的初始化 本文主要描述一下网卡设备的整个初始化的过程,该过程主要就是根据设备的硬件信息来获取与传输网络数据,注册相 ...
- Linux内核网络栈1.2.13-有关tcp/ip协议的基础入门
参考资料 <<linux内核网络栈源代码情景分析>> Linux内核网络栈的基础内容 主要分析tcp/ip相关的基本构成,概述了socket的系统调用进入内核的一个流程,并了解 ...
- 深入Linux内核网络堆栈
前一段时间看到这篇帖子,确实很经典,于是翻出了英文原版再读,顺便再翻译出来供大家学习,这篇文章的中文版也早都有了,不过出于完全理解的目的,我还是将它翻译了出来,加进了自己的代码,虽然在上一周的翻译过程 ...
最新文章
- 2020 Kaggle年度报告发布:美国公司最容易「人均百万」,90%数据科学家坚持终生学习...
- 2008年北大核心有效期 计算机类核心(2011-01-31 15:02:46)
- 「学习笔记」多项式相关
- matlab连续信号离散化_MATLAB开发自动驾驶第八课-控制信号帧的回放以进行标签化处理...
- 如何防止通过url攻击_什么是XSS攻击?如何防御XSS攻击?
- Map 的Properties集合存储IO流对象
- python输出字典的前十项,从字典列表中获取前5个值?
- AliOS Things SIG BLE Mesh网络的介绍和搭建
- 2017-2018-1 20155338 加分项目——PWD的实现
- JDK1.8 HashMap 深入理解
- 反编译工具ILSpy下载
- python 网易云音乐uc缓存转换mp3
- 毕设查重,避免雷区【划重点!!!】
- office 兼容包下载地址
- TransCAD划分交通小区及求PA的问题
- 积极响应号召,ModStart支持用户主动注销账号功能
- 黑莓7290无信号问题
- TMI 202107论文速递(IEEE Transactions on Medical Imaging)
- ImageLoader(UIL)自定义HTTP Header信息
- js中文汉字按拼音排序