首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TCP网络通讯中断-没有收到SYN

TCP网络通讯中断-没有收到SYN
EN

Server Fault用户
提问于 2023-04-05 19:43:33
回答 1查看 83关注 0票数 0

给出了以下网络设置:

Debian斗牛眼主机(Proxmox ) -> OPNsense防火墙做NAT -> DSL调制解调器(通过PPPoE连接) ->互联网

主机无法与internet中的任何主机建立tcp连接。我试图访问不同的主机,也是一个服务器,在那里我可以捕获流量。

我捕获了一些流量使用端口镜像的DSL调制解调器交换机端口,确保我真的看到流量通过线路到互联网。

网络中使用相同拓扑的另一台debian计算机的流量看起来很好。

在这两台机器上,我执行了curl -4 http://ftp.de.debian.org/debiancurl -4 http://www.google.de,并比较了TCPSYN数据包。

他们在我看来是一样的,只是在

  • IP标识标头,因此IP标头校验和
  • TCP源端口
  • TCP序列号
  • TCP校验和
  • TCP时间戳值

这些差异是预料之中的。

下面是截图,捕捉DSL调制解调器端口的通信量。捕获包含从工作主机到包308的通信量。从数据包309开始的通信量来自已损坏的主机。

我过滤了具有SYN标志集的数据包,因为这些数据包只是相关的。

来自工作主机的数据包:

来自破碎主机的数据包:

如前所述,我还从服务器端获取了流量捕获。它看上去与屏幕上可见的一模一样(数据包309,310,320,.)。

附加信息:

  • 局域网内的TCP流量(例如,ssh到另一台主机)按预期工作。
  • 到因特网的UDP通信量(例如NTP流量)是可以的。
  • 互联网上的ICMP流量也很好。

是什么原因导致互联网主机不回答SYN的SYN数据包?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2023-04-06 17:33:55

简单回答:校验和计算不正确。在wireshark中启用校验和验证可以明显地做到这一点:

长答案:

OPNsense运行在Proxmox之上是虚拟化的,这是造成问题的原因。因此,我在/etc/网络/接口中禁用了NIC的一些卸载特性:

代码语言:javascript
运行
复制
[...]
pre-up ethtool -K enp0s20f1 gro off lro off gso off
post-up ethtool -K vmbr1 gro off lro off gso off

此代码段禁用一般接收卸载和大型接收卸载。这是为了防止NIC将多个TCP数据包重组为可能比MTU更大的数据包。当应该执行简单的路由时,修改数据包是个坏主意,这在许多情况下会导致连接问题。禁用通用分段偏移量可防止NIC将大数据包拆分为多个。

上面的片段必须包含tx off

代码语言:javascript
运行
复制
pre-up ethtool -K enp0s20f1 gro off lro off gso off tx off
post-up ethtool -K vmbr1 gro off lro off gso off tx off

执行软件校验和计算。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1128003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档