🖧 Постоянное изменение размера MTU на Linux |

🖧 Постоянное изменение размера MTU на Linux

Мануал

Обзор

Maximum Transmission Unit (MTU) – это максимальный размер пакета, который мы можем отправить по сети без фрагментации.

По умолчанию размер MTU для Ethernet составляет 1500 байт.

Иногда мы можем захотеть изменить размер MTU. Например, мы можем использовать джамбо-кадры с размером MTU 9000 байт в виртуальной локальной сети (VLAN), чтобы увеличить производительность.

В этом руководстве мы рассмотрим, как установить постоянный размер MTU сетевого интерфейса.

Мы увидим, что изменение размера MTU зависит от того, используем ли мы статическую или динамическую IP-адресацию.

Изменение размера MTU с помощью ip

Мы можем изменить размер MTU сетевого интерфейса с помощью команды ip.

Сначала проверим размер MTU используемых сетевых интерфейсов:

ip a | grep mtu
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

Команда ip a показывает IP-адреса всех сетевых интерфейсов.

Мы фильтруем вывод с помощью grep mtu, чтобы показать только строки, содержащие размеры MTU.

Наш хост содержит два сетевых интерфейса. Первый – это интерфейс loopback, lo, размер MTU которого составляет 65536 байт.

С другой стороны, второй интерфейс, enp0s3, имеет MTU размером 1500 байт.

Давайте увеличим размер MTU интерфейса enp0s3 до 9000 с помощью команды ip:

sudo ip link set dev enp0s3 mtu 9000

Изменение размера MTU требует привилегий root, поэтому мы используем команду ip вместе с командой sudo.

Команда ip link set изменяет атрибуты сетевого устройства. Имя устройства – сетевой интерфейсной карты – указывается с помощью dev enp0s3.

Наконец, мы указываем новый размер MTU с помощью mtu 9000.

Давайте еще раз проверим размер MTU для enp0s3:

ip a | grep mtu | grep enp0s3
2: enp0s3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 9000 qdisc fq_codel state DOWN group default qlen 1000

Как видно из вывода, нам удалось изменить размер MTU интерфейса enp0s3.

Мы также можем изменить размер MTU с помощью старой команды ifconfig на Linux:

sudo ifconfig enp0s3 mtu 9000 up

Хотя изменить размер MTU с помощью ip link set или ifconfig очень просто, мы теряем обновления при перезагрузке хоста.

Поэтому в нашем случае после перезагрузки размер MTU сохраняет значение по умолчанию 1500 для интерфейса enp0s3.

Изменение размера MTU на постоянной основе

Что делать, если мы хотим изменить размер MTU на постоянной основе?

Решение зависит от того, используем ли мы статическую или динамическую IP-адресацию.

Статическая IP-адресация

Когда мы назначаем хосту статический IP-адрес, он не меняется со временем, если мы не изменим его явно.

Мы можем настроить атрибуты сетевого интерфейса, отредактировав соответствующий файл конфигурации интерфейса (ifcfg).

На нашем хосте файл ifcfg для интерфейса enp0s3 находится в каталоге /etc/sysconfig/network-scripts/ifcfg-enp0s3.

Каталог, содержащий файлы ifcfg, может отличаться в разных дистрибутивах Linux.

Например, в RHEL это каталог /etc/sysconfig/network-scripts, а в Ubuntu – /etc/network/interfaces.

Давайте проверим, содержит ли каталог /etc/sysconfig/network-scripts/ifcfg-enp0s3 запись MTU, используя grep:

grep MTU /etc/sysconfig/network-scripts/ifcfg-enp0s3

Примечательно, что в нем нет записи о MTU.

Поэтому интерфейс enp0s3 использует стандартный размер MTU, равный 1500.

Давайте изменим размер MTU этого интерфейса на 9000, добавив MTU=9000 в конец файла ifcfg с помощью редактора типа vi.

Теперь размер MTU установлен на 9000:

grep MTU /etc/sysconfig/network-scripts/ifcfg-enp0s3
MTU=9000

Давайте проверим размер MTU после перезагрузки хоста:

ip a | grep mtu | grep enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc fq_codel state UP group default qlen 1000

Как видно из вывода, после перезагрузки размер MTU интерфейса enp0s3 составляет 9000.

Таким образом, мы успешно установили постоянный размер MTU интерфейса.

Динамическая IP-адресация

Динамический IP-адрес назначается хосту, когда он присоединяется к сети. Хост получает свою динамическую IP-конфигурацию с сервера. DHCP (Dynamic Host Configuration Protocol) – наиболее распространенный протокол, используемый для динамического назначения IP-адресов хостам в сети.

DHCP-клиент запрашивает динамический IP-адрес и другие параметры конфигурации, такие как размер MTU, у DHCP-сервера. dhclient – это DHCP-клиент по умолчанию. Он считывает информацию о конфигурации из файла /etc/dhcp/dhclient.conf.

Мы можем переопределить размер MTU, предоставляемый DHCP-сервером, добавив одно единственное утверждение в файл /etc/dhcp/dhclient.conf:

interface "enp0s3" {
supersede interface-mtu 9000;
}

Оператор supersede interface-mtu 9000 отменяет размер MTU, предоставленный DHCP-сервером, и устанавливает его равным 9000.

Мы используем оператор supersede, если хотим, чтобы клиент использовал локально настроенное значение, а не то, которое предоставил сервер.

Утверждение interface «enp0s3», с другой стороны, указывает, что эта конфигурация предназначена только для интерфейса enp0s3.

Изменив файл /etc/dhcp/dhclient.conf, мы можем сразу же применить изменение размера MTU для enp0s3 с помощью dhclient:

sudo dhclient enp0s3
ip a | grep mtu | grep enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc fq_codel state UP group default qlen 1000

Мы должны запускать dhclient автоматически при перезагрузке, чтобы сделать изменения постоянными.

Поэтому одним из способов сделать изменения постоянными является добавление команды dhclient enp0s3 в /etc/rc.d/rc.local с помощью редактора типа vi.

Для изменения /etc/rc.d/rc.local требуются привилегии root.

Затем мы должны дать разрешение на выполнение /etc/rc.d/rc.local с помощью chmod и включить службу rc-local с помощью systemctl:

sudo chmod 744 /etc/rc.d/rc.local
sudo systemctl enable rc-local >& /dev/null

После внесения этих изменений dhclient автоматически запускается при перезагрузке хоста и применяет размер MTU, указанный в файле /etc/dhcp/dhclient.conf.

Заключение

В этой статье мы рассмотрели, как установить постоянный размер MTU сетевого интерфейса.

Сначала мы увидели, что изменение размера MTU сетевого интерфейса с помощью команды ip не является постоянным.

Затем мы узнали, что можно использовать файлы ifcfg для обновления размера MTU в случае статической IP-адресации.

С другой стороны, мы должны обновить файл dhclient.conf, если мы используем DHCP для назначения динамических IP-адресов.

Кроме того, мы должны запустить dhclient при запуске хоста, чтобы применить изменения в dhclient.conf.

см. также:

 

 

 

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий