无法通过 PPPoE 访问 Linux 上的选定 https 站点

Mus*_*oon 21 networking ip internet http

我的互联网连接曾经是到我的提供商的直接 LAN 连接。那时,一切都会在 Windows 和 Ubuntu(双启动)上正常加载。然而,不久前他们开始需要我使用用户名和密码拨号(PPPoE)。网关、子网掩码、IP、DNS 服务器都保持不变。但是从那以后,我无法在 Ubuntu 上浏览某些网站,即使在 Windows 上没有出现此类问题。一些示例网站是 - Ovi 的登录页面(尽管 share.ovi.com 加载正常,nokia.com 加载正常)、Live Mail(适用于 Chrome(ium) 和 Opera,但不适用于 Firefox(3.6 和 4))Mozilla插件网站和其他随机网站。

一些未加载的网站会显示超时消息,而对于某些网站(如 moz 插件),浏览器将继续尝试无休止地加载(我已经这样放置了几个小时,但没有注意到任何不同之处发生)。

我尝试将 DNS 服务器更改为公共服务器。我什至尝试从 Fedora LiveCD 启动,然后将 DNS 更改为那些(甚至是 OpenDNS 的),但发生了完全相同的事情。导致此问题的 Linux 本身中的某些配置本身可能有什么问题?

有谁知道为什么会发生这种情况以及如何解决?

注意:此问题已在 SU 上交叉发布,但未得到任何回复。

更新:刚刚在这里看到其他人遇到了类似的问题,并通过将NetworkManager.conf文件放入/etc/NetworkManager. 该文件中需要包含哪些内容?

Gil*_*il' 27

您有MTU问题的症状:一些 TCP 连接冻结,对于给定的命令或 URL 或多或少可重现,但没有容易辨别的整体模式。一个明显的症状是交互式 ssh 会话运行良好,但文件传输几乎总是失败。此外,pppoe 是家庭用户 MTU 问题的第一名。所以我开了一个 MTU 检查。

它是什么? 所述aximumransmission Ú尼特是分组通过网络链路的最大大小。MTU 因传输介质而异,例如,有线以太网和 wifi (802.11) 具有不同的 MTU,而ATM链路(构成大部分长距离基础设施)各自具有自己的 MTU。 PPPOE是一种封装协议,这意味着每个数据包都由几个字节的标头组成,然后是底层数据包 - 因此它通过标头的大小降低了最大数据包大小。 如果路由器检测到数据包对于下一跳来说太大,IP允许它们对数据包进行分段,但这并不总是有效。理论上应该发现合适的 MTU自动,但这也并不总是有效。特别是谷歌搜索表明网络管理器并不总是正确地处理从 MTU 发现中获得的 MTU 信息,但我不知道哪些版本受到影响或有问题的用例是什么。

如何测量它。 如果您使用tracepath的是 Linux iputils,请运行tracepath 8.8.8.8以查看 Google DNS 服务器路径上的 MTU。如果您的版本traceroute--mtu选项,请运行traceroute -n --mtu 8.8.8.8. 有关更多选项,请参阅发现我和目标 IP 之间的 MTU

缺乏自动化工具,您可以手动测量。尝试将给定大小的 ping 数据包发送到响应它们的外部主机,例如ping -c 1 -s 42 8.8.8.8(在 Linux 上;在其他系统上,查找您的ping命令的文档)。您的数据包应该通过足够小的 42 值(如果 42 不起作用,则某些东西阻止了 ping。)。对于较大的值,数据包将无法通过。如果基础设施的限制部分是您的本地以太网,则 1464 是典型的最大值。如果幸运的话,当您发送过大的数据包时,您会看到类似Frag needed and DF set (mtu = 1492). 如果您不走运,请继续尝试该值,直到找到最大值,然后添加 28(-s指定有效负载大小,除此之外还有 28 个字节的标头)。也可以看看如何在 Ubuntu 论坛上使用 MTU 和 RWIN 优化您的 Internet 连接

如何设置(用您确定的 MTU 和eth0您的网络接口名称替换 1454 )

  • 作为一次性(Linux):运行 ifconfig eth0 mtu 1454
  • 永久(Debian 和衍生产品,如 Ubuntu,如果不使用网络管理器):编辑/etc/network/interfaces. 在您的网络接口条目之后(在iface eth0 …指令之后),添加一行pre-up ifconfig $IFACE mtu 1454. 或者,如果您的 IP 地址是静态的,您可以将mtu 1454参数添加到iface eth0 inet static指令中。
  • 永久(Debian 和 Ubuntu 等衍生产品,带或不带网络管理器):创建一个/etc/network/if-pre-up.d/mtu包含以下内容的脚本,并使其全球可执行 ( chmod a+rx):

    #!/bin/sh
    ifconfig $IFACE mtu 1454
    
    Run Code Online (Sandbox Code Playgroud)

更多资源

  • @Santi 我认为是“ip link set eth0 mtu 1454”,但我不是“ip”专家,请查看手册。 (2认同)