我如何才能永久更改 MTU 大小?

我如何才能永久更改 MTU 大小?

我进入此文件/etc/dhcp/dhclient.conf并在请求行之前添加了以下两行:

default interface-mtu 1200;

supercede interface-mtu 1200;

在我重新启动并且系统启动后,我运行它ifconfig并显示我的MTU尺寸是 1280。为什么?我怎样才能将其更改为精确的 1200?

更新

cat /etc/resolv.conf

lrwxrwxrwx 1 root root 29 Mar 19 13:05 /etc/resolv.conf -> ../run/resolvconf/resolv.conf

文件resolv.conf

nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 2606:4700:4700::1111
nameserver 127.0.0.53
options edns0

输出resolvectl为:

Current DNS Server: 1.1.1.1
     DNS Servers: 1.1.1.1
                  8.8.8.8
                  2606:4700:4700::1111
      DNSSEC NTA: 10.in-addr.arpa

输出dpkg -l *dnsmasq*为:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig- 
aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                   Version          Architecture     
Description
+++-======================-================-================- 
==================================================
un  dnsmasq                <none>           <none>           (no 
description available)
ii  dnsmasq-base           2.79-1           amd64            Small 
caching DNS proxy and DHCP/TFTP server
un  dnsmasq-base-lua       <none>           <none>           (no 
description available)

答案1

要确定正确的 MTU 设置,请从所有 MTU 设置 = 1500 和 VPN = 关闭开始。(VPN 需要不同的测试)。

注意:首先删除您的模块/etc/dhcp/dhclient.conf并重新启动。

在终端:

ping [-c count] [-M do] [-s packet_size] [host]

使用的选项是:

  • c count:ping 次数
  • M hint:选择路径 MTU 发现策略。可以是do(禁止碎片,即使是本地碎片),want(进行 PMTU 发现,当数据包大小较大时在本地进行碎片),或dont(不设置 DF 标志)。
  • s packet_size:指定要发送的数据字节数。

您应该始终从 1472 开始,然后每次减少 10。一旦收到回复,就增加 1,直到收到碎片数据包。取该值(最后一个好值)并将 28 添加到该值以考虑各种 TCP/IP 标头。例如,假设 1452 是合适的数据包大小(您第一次收到对 ping 的 ICMP 回复)。实际的 MTU 大小将是 1480,这是我们正在使用的网络的最佳值。

ping -c 4 -M do -s 1472 8.8.8.8 # this will probably show fragmentation

ping -c 4 -M do -s 1462 8.8.8.8 # may show fragmentation

ping -c 4 -M do -s 1452 8.8.8.8 # no fragmentation?

ping -c 4 -M do -s 1453 8.8.8.8 # still no fragmentation?

参考:如何使用 ICMP ping 确定适当的 MTU 大小

更新#1:

我建议您删除您添加的 3 个额外名称服务器,/etc/resolvconf/resolv.conf.d/head并让 systemd-resolved 正确管理/etc/resolv.conf。这应该可以更好地与 VPN 配合使用。

更新 #2:

您还可以设置不同的有线/无线连接配置文件,仅用于 VPN,将 MTU 硬连线为 1200。在 中terminal,输入nm-connection-editor,然后您可以使用以下方式自定义仅用于 VPN 的配置文件自动连接最大传输单元

在此处输入图片描述 在此处输入图片描述

答案2

您可以使用tracepath(来自iputils-tracepath包)来确定路径 MTU:

walt@bat:~(0)$ dpkg -S $(type -p tracepath)
iputils-tracepath: /usr/bin/tracepath
walt@bat:~(0)$ tracepath primus.ip4.torontointernetxchange.net
 1?: [LOCALHOST]                                         pmtu 1500
 1:  spark3y                                               0.525ms 
 1:  spark3y                                               0.497ms 
 2:  spark3y                                               0.465ms pmtu 1492
 2:  dsl-xxx-xxx-xxx-xxx.tor.primus.ca                    32.701ms 
 3:  10.201.117.2                                         34.726ms asymm  5 
 4:  bb1.tor.primus.ca                                    39.238ms 
 5:  primus.ip4.torontointernetxchange.net                33.295ms reached
     Resume: pmtu 1492 hops 5 back 4 

答案3

您可以按照脚本中的建议,在 VPN 启动时自动设置 VPN 端口的 mtu /etc/NetworkManager/dispatcher.d/01-ifupdowndispatcher.d文件夹中的脚本以端口和事件作为参数进行调用。

因此,在文件夹中创建一个dispatcher.d包含以下内容的脚本(如果您愿意mtu 1200):

#!/bin/sh  

#info : pre-up and pre-down are not implemented in network-manager

if [ "$2" = "vpn-up" ]; then  
    /sbin/ifconfig "$1" mtu 1200  
fi  

(脚本的名称并不重要。)然后使用 使其可执行chmod +x <script>

答案4

我知道这是一个老话题,但是为了以防其他人遇到这个问题(因为我在其他地方找不到答案)。

具体解决设置 MTU 的问题/etc/dhcp/dhclient.conf;不解决这是否理想或如何检查适当的 MTU 值。仅解决设置值的机制。

OP 拼错了“supersede”语句。下面这行是正确的语法,已使用 isc-dhclient-4.4.1 进行了测试。注意:其他服务可能会对 MTU 应用自己的更改,但就 dhclient 而言,这会更改设置。

supersede interface-mtu 1200;

相关内容