我的家庭网络出现了一个奇怪的问题,一些 http POST 请求无法完成。到目前为止,我已经在 2 个网站上注意到了这个问题。当我尝试编辑维基百科页面时,编辑页面会加载,但当我点击发送时,发布请求没有得到回复,获取请求都返回 200。我在向 openstreetmap 提交编辑时也遇到了这个问题。
我在 reddit 或这里等其他网站上没有遇到这个问题。
我已经在我家网络上的几台计算机上测试了这一点,它们都存在同样的问题,但是我工作时的桌面并未受到影响(所有计算机都在运行 ubuntu)。
在我的家用桌面上,我通过 tor 浏览器向 opensteetmap 提交了一个更改,并且发送成功,但是当我在常规浏览器中尝试时失败了。
我不知道现在应该检查哪里,因为我不知道某些类型的请求如何工作,而有些请求在带有 https 的单个网站上会失败。
答案1
您的屏幕截图显示 20.4KiB POST 失败。查看小于 1KiB 的 POST 是否有效。如果有效,则您的网络上可能存在路径 MTU 发现黑洞。解决此问题的方法是将接口 MTU 设置为较低的值(例如 1KiB),然后将其逐渐调高,直到找到有效的最大值。
PMTUD 黑洞通常是由白痴管理的防火墙引起的,他们屏蔽了所有 ICMP,因为他们认为 ICMP 只用于 ping。有时,它们是由不知道如何正确处理 ICMP 的坏 NAT 网关引起的。有时,它们是由不知道如何正确处理 IP 报头的“不分段”位的坏路由器引起的。
答案2
原来这个问题是因为我的 MTU 设置。我测试了我的 MTU,ping -M do -s <size> <domain>
并不断增加大小直到失败,当我找到最大值时,我将设置从自动 MTU 切换到手动。