weixin_42620796 2024-03-29 10:38 采纳率: 0%
浏览 9
已结题

云服务Linux系统TCP-MSS值修改?

云服务Linux系统TCP-MSS值修改?

我在云服务器上利用scapy来实现TCP/IP堆栈的自定义返回。包括Option参数,seq值等。通过wireshark抓包发现云服务器返回的(SYN,ACK)包的MSS值为1424,在这里我已经修改了网卡的mtu为1600,MSS值一直无法调高。但是如果我的MSS自定义值小于1424就可以成功修改。有什么具体的办法可以让自定义的MSS值高于系统默认的1424吗?修改路由和iptables的方法我也试过了,都没有用。网上给的参考教程都是将MSS值调小,很少有调大的情况。但是我在另一台云服务器中有实现MSS的调大(从1424到1460)

img

  • 写回答

22条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-29 10:38
    关注
    获得0.80元问题酬金

    引自免费微信小程序:皆我百晓生

    在云服务Linux系统中,TCP Maximum Segment Size (MSS) 的值通常是根据路径上的最大传输单元 (MTU) 来动态计算的,以确保数据分片最小化。对于您遇到的问题,即使已经将网卡的MTU设置为1600,但TCP MSS仍被限制在1424,这可能是因为某些网络设备(例如交换机、路由器)对MSS进行了限制,或者内核本身在网络层做了类似的限制。

    要尝试解决这个问题,您可以按照以下步骤进行操作:

    1. 检查并配置TCP全局MSS值: 编辑 /etc/sysctl.conf 文件,并添加或修改以下行以增加全局的TCP MSS值:

      net.ipv4.tcp_mtu_probing = 1 # 开启路径MTU发现
      net.ipv4.tcp_base_mss = 1460 # 设置基本MSS大小
      

      然后执行 sysctl -p 使其生效。

    2. 针对特定接口设置TCP MSS clamping: 您可以尝试使用 ip route 命令针对特定的路由接口手动设置TCP MSS clamp值,例如:

      ip route add default via <gateway_ip> dev <interface_name> proto static tcp-mtu-clamp 1460
      
    3. 检查及调整iptables规则: 尽管您已尝试过iptables,但仍需确认是否有关于TCP MSS的MASQUERADE或MANGLE规则在起作用。移除或修改相关规则,确保它们不会影响MSS值。

    4. 内核模块配置: 如果上述方法无效,可能是由于特定的内核模块或特性限制了MSS。检查您的Linux内核是否有类似于TCP Segmentation Offload (TSO) 或 Generic Receive Offload (GRO) 这样的功能启用,这些功能有时会影响TCP MSS的设置。可以尝试禁用相关的offload特性看是否有所改善。

    5. 自定义TCP响应时指定MSS: 在您的Scapy脚本中,确保在构造SYN+ACK响应包时正确设置了MSS选项。虽然您已经在示例代码中尝试设置MSS为1450,但根据您的描述,似乎没有达到预期效果。确保在构造TCP选项时,MSS值能够按需传递出去。

    6. 与云服务商联系: 如果是云服务环境,可能存在由云服务商实施的平台层面的限制,此时您可能需要与服务商的技术支持部门取得联系,了解其平台上关于TCP MSS的具体策略以及是否可以调整。

    以上是一些可能的解决方案,但在实际应用中,请谨慎操作,以免对网络性能产生不利影响。同时,请始终依据RFC标准和最佳实践进行配置更改。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 创建了问题 3月29日

悬赏问题

  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”