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_recycletcp_tw_reuse 区别不是很清楚。下面详细介绍一下。测试之前我们先将客户端的端口号范围限制一下

$ sysctl -w "net.ipv4.ip_local_port_range=32768 32768"
net.ipv4.ip_local_port_range = 32768 32768

只开放一个端口,然后访问任意一个服务,在 tcp_tw_reusetcp_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 你搞清楚了吗?相关推荐

  1. Linux 实例常用内核网络参数介绍与常见问题处理

    查看和修改 Linux 实例内核参数 方法一.通过 /proc/sys/ 目录 查看内核参数:使用 cat 查看对应文件的内容,例如执行命令 cat /proc/sys/net/ipv4/tcp_tw ...

  2. Linux服务器内核网络参数优化

    net.core.netdev_max_backlog = 400000 #该参数决定了,网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目.net.core.optm ...

  3. Linux内核网络栈1.2.13-route.c概述

    参考资料 <<linux内核网络栈源代码情景分析>> route路由表概述 在IP协议的实现中,只要发送数据包都要查询路由表,选择合适的路由选项,确定下一站的地址,并构造MAC ...

  4. Linux内核网络栈1.2.13-tcp.c概述

    参考资料 <<linux内核网络栈源代码情景分析>> af_inet.c文件中调用函数在协议层的实现 本文主要根据在af_inet.c文件中根据初始化不同的协议,来调用不同的协 ...

  5. Linux内核网络栈1.2.13-af_inet.c概述

    参考资料 <<linux内核网络栈源代码情景分析>> socket常用函数继续调用分析 根据socket提供的常用库函数,socket.read和write等函数,继续往下一层 ...

  6. Linux内核网络栈1.2.13-socket.c函数概述

    参考资料 <<linux内核网络栈源代码情景分析>> socket常用函数概述 根据socket提供的常用的库函数,socket,read,write等函数, 执行的过程 in ...

  7. Linux内核网络栈1.2.13-网卡设备的初始化流程

    参考资料 <<linux内核网络栈源代码情景分析>> 网卡设备的初始化 本文主要描述一下网卡设备的整个初始化的过程,该过程主要就是根据设备的硬件信息来获取与传输网络数据,注册相 ...

  8. Linux内核网络栈1.2.13-有关tcp/ip协议的基础入门

    参考资料 <<linux内核网络栈源代码情景分析>> Linux内核网络栈的基础内容 主要分析tcp/ip相关的基本构成,概述了socket的系统调用进入内核的一个流程,并了解 ...

  9. 深入Linux内核网络堆栈

    前一段时间看到这篇帖子,确实很经典,于是翻出了英文原版再读,顺便再翻译出来供大家学习,这篇文章的中文版也早都有了,不过出于完全理解的目的,我还是将它翻译了出来,加进了自己的代码,虽然在上一周的翻译过程 ...

最新文章

  1. 2020 Kaggle年度报告发布:美国公司最容易「人均百万」,90%数据科学家坚持终生学习...
  2. 2008年北大核心有效期 计算机类核心(2011-01-31 15:02:46)
  3. 「学习笔记」多项式相关
  4. matlab连续信号离散化_MATLAB开发自动驾驶第八课-控制信号帧的回放以进行标签化处理...
  5. 如何防止通过url攻击_什么是XSS攻击?如何防御XSS攻击?
  6. Map 的Properties集合存储IO流对象
  7. python输出字典的前十项,从字典列表中获取前5个值?
  8. AliOS Things SIG BLE Mesh网络的介绍和搭建
  9. 2017-2018-1 20155338 加分项目——PWD的实现
  10. JDK1.8 HashMap 深入理解
  11. 反编译工具ILSpy下载
  12. python 网易云音乐uc缓存转换mp3
  13. 毕设查重,避免雷区【划重点!!!】
  14. office 兼容包下载地址
  15. TransCAD划分交通小区及求PA的问题
  16. 积极响应号召,ModStart支持用户主动注销账号功能
  17. 黑莓7290无信号问题
  18. TMI 202107论文速递(IEEE Transactions on Medical Imaging)
  19. ImageLoader(UIL)自定义HTTP Header信息
  20. js中文汉字按拼音排序

热门文章

  1. CGAL 基础知识(学习笔记)
  2. 文本聚类分析算法_读书笔记(8)kmeans聚类算法及应用
  3. 月薪2万的Java工程师简历是这样的
  4. 浏览github等学术网站太卡?推荐使用steam ++(别名Watt Tookit)
  5. 三维分析之等值线分析
  6. 客户成功,一定要看懂 8 个指标
  7. java使用DFA算法实现敏感词过滤
  8. JavaScript学习笔记 Day1
  9. 软件缺陷和软件缺陷种类
  10. TKmapper的更新方法updateByPrimaryKey()与updateByPrimaryKeySelective()