MTU (сокращение от Maximum Transmission Unit) – это максимальный размер пакета, который может быть передан через сетевой интерфейс. Все устройства, включая серверы и коммутаторы/маршрутизаторы, участвующие в обмене данными, должны иметь одинаковый размер MTU. Большой размер MTU имеет меньше накладных расходов, в то время как меньший размер MTU имеет меньшую задержку.
Размер MTU по умолчанию в большинстве сетей Ethernet составляет 1500 байтов. Однако вы можете изменить его в соответствии с требованиями. В этой статье мы объясним, как изменить размер MTU в Linux.
Предпосылки
- Система Ubuntu 20.04
- Пользователь с привилегиями sudo
Просмотреть текущий размер MTU
Чтобы просмотреть текущий размер MTU вашего интерфейса Ethernet, используйте команду ifconfig следующим образом:
$ ifconfig | grep mtu
Приведенные ниже выходные данные показывают, что текущий размер MTU интерфейса ens33 составляет 1500.
В качестве альтернативы вы также можете использовать команду ip с параметром a для просмотра текущего размера MTU:
$ ip a | grep mtu
Временное изменение размера MTU – с помощью команды ifconfig
Мы можем использовать команду ifconfig, чтобы изменить размер MTU сетевого интерфейса системы. Однако помните, что это изменение сохраняется после перезагрузки и возвращается к значению по умолчанию, то есть 1500.
Чтобы изменить размер MTU интерфейса, используйте следующий синтаксис:
$ ifconfig <Interface_name> mtu <mtu_size> up
Например, чтобы изменить размер MTU интерфейса с именем ens33 на 1000 байт, команда будет выглядеть так:
$ ifconfig ens33 mtu 1000 up
После выполнения указанной выше команды размер MTU мгновенно изменяется. Это изменение даже не требует перезапуска службы.
Вы можете проверить новый размер MTU, выполнив следующую команду в Терминале:
$ ifconfig | grep mtu
Из вышеприведенного вывода вы можете убедиться, что размер MTU теперь изменился до 1000 байт. Однако, как упоминалось ранее, это изменение не сохранится после перезагрузки. Размер MTU вернется к своему значению по умолчанию 1500 после перезагрузки.
Постоянное изменение размера MTU
Команда ifconfig мгновенно изменяет размер MTU, но это изменение не сохраняется после перезагрузки системы. В следующем разделе мы увидим, как навсегда изменить размер MTU.
При динамической IP-адресации размер MTU устанавливается DHCP. Поэтому потребуется настроить файл конфигурации DHCP, расположенный в /etc/dhcp/dhclient.conf . Для статического IP-адреса мы внесем изменения в файл конфигурации сетевого интерфейса, расположенный в /etc/network/interfaces.
Использование файла /etc/dhcp/dhclient.conf
Если в вашей системе работает DHCP-сервер и сетевые интерфейсы настроены на получение от него IP-адресов, используйте файл /etc/dhcp/dhclient.conf для изменения размера MTU.
Отредактируйте nano /etc/dhcp/dhclient.conf, используя следующую команду:
$ sudo nano /etc/dhcp/dhclient.conf
Затем добавьте следующие строки под “send host-name = gethostname ();” в строку:
default interface-mtu <mtu_size>; supersede interface-mtu <mtu_size>;
Например, чтобы установить размер MTU равным 1400, мы добавим:
default interface-mtu 1400; supersede interface-mtu 1400;
Если у вас несколько интерфейсов и вы хотите изменить размер MTU только для одного интерфейса, заключите его в фигурные скобки следующим образом:
interface "interface_name" { default interface-mtu <mtu_size>; supersede interface-mtu <mtu_size>; }
После того, как вы настроили файл, сохраните и закройте его. Теперь перезапустите сетевую службу, используя следующую команду в терминале:
$ sudo service networking restart
Также вызовите интерфейс, используя следующую команду:
$ sudo ifup <interface_name>
Обязательно замените <interface_name> фактическим сетевым интерфейсом в вашей системе, например, ens33, eth0, eth1 и т. д.
В нашем случае это будет:
$ sudo ifup ens33
Теперь введите следующую команду в Терминале, чтобы проверить, успешно ли изменился размер MTU.
$ sudo ifconfig | grep mtu
Из выходных данных вы можете видеть, что размер MTU был изменен на 1400.
Использование файла /etc/network/interfaces
Если ваш сетевой интерфейс настроен на получение статического IP-адреса, вы можете изменить размер MTU, настроив файл / etc / network / interfaces .
Отредактируйте файл /etc/network/interfaces с помощью следующей команды в Терминале:
$ sudo nano /etc/network/interfaces
Добавьте в файл следующую строку:
post-up /sbin/ifconfig <interface-name> mtu <mtu_size>
Обязательно замените <interface-name> фактическим именем интерфейса, а <mtu_size> размером MTU, который вы хотите установить на сетевом интерфейсе.
Например, чтобы изменить размер MTU интерфейса с именем ens33 на 1300 байт, команда будет выглядеть так:
post-up /sbin/ifconfig ens33 mtu 1300 up
После того, как вы настроили файл, сохраните и закройте его.
Теперь перезапустите сетевые службы, используя следующую команду в Терминале:
$ sudo service networking restart
Также вызовите интерфейс, используя следующую команду:
$ sudo ifup <interface_name>
Обязательно замените <interface_name> фактическим сетевым интерфейсом в вашей системе, например, ens33, eth0, eth1 и т. Д.
В нашем случае это будет:
$ sudo ifup ens33
Теперь введите следующую команду в Терминале, чтобы проверить, успешно ли изменился размер MTU.
$ ip a | grep mtu
Из выходных данных видно, что размер MTU был изменен на 1300. Это изменение останется постоянным и не изменится даже после перезагрузки.
Вот и все! Следуя описанным выше процедурам, вы можете временно или навсегда изменить размер MTU сетевого интерфейса в вашей системе Linux. Надеемся это поможет!