标签: networking

Linux下丢包导致IP分片无法重组

我一直在使用发送大量 TCP/IP 流量的设备。

我正在尝试使用 Python 编程语言在我的 Linux 机器(Ubuntu 22.04.2 LTS)中捕获这些数据包。

但是,大多数情况下,无法从操作系统正确接收发送的数据包。

我可以看到其中一些数据包已由操作系统正确重新组装,但大多数数据包并非如此。

我可以清楚地看到 Wireshark 的内容。

以下是意外行为:

在此输入图像描述

在此输入图像描述

我主要看到的是碎片化的 IP 协议数据包,之后,我看到超出了生存时间(超出了碎片重组时间)。

以下是预期的行为:

在此输入图像描述

有没有办法纠正这种行为(放宽导致无法重组数据包的条件)以捕获所有数据包?

我在 Windows 10 中从未遇到过此问题。

在同一台客户端计算机上,当注销 Ubuntu 并登录 Win10 时,我看不到丢弃的数据包,并且所有传输的块都重新组装并发送到相应的端口。看起来,Linux 上有一些系统参数会影响丢包。

我在下面附上了 Wireshark 捕获文件:

https://drive.google.com/file/d/1GFtlHnKF619HE02JfuSUQpIGqSxRt6Yf/view?usp=sharing

这是输出sudo sysctl -a | grep ipfrag

net.ipv4.ipfrag_high_thresh = 4194304
net.ipv4.ipfrag_low_thresh = 3145728
net.ipv4.ipfrag_max_dist = 64
net.ipv4.ipfrag_secret_interval = 0
net.ipv4.ipfrag_time = 30
Run Code Online (Sandbox Code Playgroud)

我也尝试执行以下操作(上述设置的 10 倍):

sudo sysctl -w net.ipv4.ipfrag_time=300
sudo sysctl -w net.ipv4.ipfrag_high_thresh=41943040
sudo sysctl -w net.ipv4.ipfrag_low_thresh=31457280
sudo sysctl -w net.ipv4.ipfrag_max_dist=640
Run Code Online (Sandbox Code Playgroud)

还是没有运气。

谢谢。

linux networking ipv4

0
推荐指数
1
解决办法
932
查看次数

我的 linux pc 无法使用主机名 ping 通

在远程机器上,我可以通过 IP 地址 ping 我的计算机,但不能通过主机名 ping。我怎样才能使它的主机名也可以访问它?

networking ip dns hosts

-1
推荐指数
1
解决办法
1797
查看次数

是否有类似 ping 的程序会在数据包丢失时返回 false?

我正在尝试诊断家庭 LAN 上的网络不稳定情况——我的路由器和电缆调制解调器之间的连接丢失。在我的 shell 脚本中,我想通过调制解调器 ping 第一个 IP 地址,并在失败时返回 false,以便我可以在我的脚本中触发其他操作。

有没有人知道这样的野兽?

networking ping exit-status

-1
推荐指数
1
解决办法
276
查看次数

当 sysctl.conf 和 GRUB_CMDLINE_LINUX 不起作用时,如何在 Debian 中禁用 IPv6?

第一的,

如果我sysctl net.ipv6.conf.all.disable_ipv6=1在系统启动后从命令行发出,我会得到我想要的结果——IPv6 确实被禁用。

现在解决重新启动后使此行为持续存在的问题。

很容易找到如何执行此操作的建议,通常它们围绕将net.ipv6.conf.all.disable_ipv6=1文件放入/etc/sysctl.d/目录中或 sysctl 本身的配置文件中,即/etc/sysctl.conf. 提到的其他方法包括添加

GRUB_CMDLINE_LINUX="ipv6.disable=1"
Run Code Online (Sandbox Code Playgroud)

/etc/default/grub

例如,这里提到了这一点:

https://serverfault.com/questions/660979/how-to-disable-ipv6-support-in-linux-entirely

我已经尝试了所有这些,但它们不起作用。ifconfig清楚地表明该接口已启用 IPv6。同样,如果我只是在启动后执行手册sysctl,它会按预期禁用它。

sysctl -p对我没有任何作用,只需按上述方式逐字编写命令即可。

我还尝试将sysctl命令放入 中/etc/rc.local,通过观察我可以放在那里的其他命令,我知道该命令可以正确运行。然而,尽管执行了,但似乎并没有生效。

我还尝试了其他命令,而不仅仅是all.disable_ipv6,例如default.disable_ipv6and enp0s3.disable_ipv6(我已经验证 enp0s3 确实是我的以太网接口)。

对我来说,这似乎有点类似于https://bugs.launchpad.net/ubuntu/+source/linux/+bug/997605,但我不知道为什么会发生这种情况。我确信我在不同的系统上所要做的只是将其放入 /etc/sysctl.d/ 中的文件中。

除了我尝试过的之外,我已经知道禁用此功能的一种方法是在不支持 IPv6 的情况下手动重新编译内核。然而,这实在是太拼凑了,它不可靠,而且需要做和维护太多的工作。

networking debian ipv6

-1
推荐指数
1
解决办法
6626
查看次数

如何在命令行中通过代理运行“sudo apt-get update”?

在我的办公室,我想通过更新和下载wget,在这里他们使用代理。如何wget从命令行使用代理?

linux networking proxy

-2
推荐指数
1
解决办法
1万
查看次数

如何强制HTTP访问而不是HTTPS?

我想完成一些独特的事情,并使用 HTTP 而不是 HTTPS 来使用各种不同的网站,并且想知道是否有人对如何完成此壮举有任何想法。如今,互联网很难搜索,并且给出的结果类似于...使用 https 搜索!并且基本上无视我的要求。

我认为这很有趣,并且一直在寻找独特的方式来使用技术,为我们带来不同的好处。我认为 http 很有趣,因为我见过很多不同的网站进行奇怪的未经请求的连接,并且通常会进行许多偷偷摸摸的行为,因此通过 http,我们希望可以更详细地检查这些类型的连接,并更好地理解那些偷偷摸摸的行为随着时间的推移而演变。

任何人,我将继续研究这一思路,如果任何人在虚空中有一个想法输入,可能会有所帮助,那将是有帮助的。

谢谢

编辑:所以我正在挖掘并发现一些对我没有帮助的基本答案,例如使用 firefox 设置禁用 https 重定向。

browser.fixup.fallback-to-https false

(不改变现状)

/sf/ask/2137273001/

我认为我们的 dns 服务器,或者 Web 服务器本身会尝试强制我们所有人使用 https,所以也许唯一真正的解决方案是在本地主机上完全拒绝 https 协议本身,并且如果远程 Web 服务器拒绝通过 http 连接,我们可以安全地将它们视为不安全,并找到替代方案。

为了使这一策略取得成功,我们也可能需要独特的解决方案,而不是仅仅一种解决方案,因为技术将采用新的方法来不适当地对我们与远程 Web 服务器的交互施加限制。

因此,我正在继续解决这个问题并尝试不同的事情,以下是我如何使用 gufw 在本地主机上禁用 https(添加了一个简单的规则来拒绝传入/传出 https)[img] https://i.imgur.com/ LLdRltq.png [/img]

这是令人担忧的,因为我注意到我的浏览器会传入和传出未经请求的连接,并且无法知道是什么发起了这些交换,或者它们正在做什么。

在我自己的计算机上使用防火墙完全禁用 https 可防止 Firefox 访问许多网站.. 例如:unix.stackexchange.com 和 google。(他们尝试以无限循环加载)但是使用不同的网络浏览器 lynx,我可以立即使用 http 连接到 google。

[img] https://i.imgur.com/qsjpxET.png [/img]

linux networking protocols

-4
推荐指数
1
解决办法
149
查看次数

标签 统计

networking ×6

linux ×3

debian ×1

dns ×1

exit-status ×1

hosts ×1

ip ×1

ipv4 ×1

ipv6 ×1

ping ×1

protocols ×1

proxy ×1