Categories
Linux Tutoriais

Como ajustar o valor da MTU da interface de rede no Linux

Saiba como configurar a MTU de uma interface de rede no Linux e entenda como este processo pode tornar o uso do tráfego mais eficiente (ou não). Artigo com exemplos práticos.

O ajuste da MTU é um dos vários que podem ser feitos na sua rede. Este pode trazer ganhos significativos, em termos de eficiência de tráfego de dados, em uma rede estável.
A sigla MTU (Maximum Transmission Unit) corresponde a Unidade de Transmissão Máxima. Está relacionada a redes TCP/IP nos sistemas operacionais GNU Linux, BSD, UNIX etc.
network ethernet cable
A MTU se refere ao tamanho (em bytes) do maior datagrama (ou pacote) que uma determinada camada de um protocolo de comunicação pode passar por vez.
Usar pacotes de dados maiores, pode aumentar a eficiência do tráfego na interface. Em redes instáveis ou com problemas, isto pode não acontecer, contudo — uma vez que basta um bit estar com defeito para demandar que o pacote seja retransmitido.
Se você tiver interesse em saber mais sobre a MTU, pode encontrar informações neste artigo, no quadro de pesquisa do site ou nos links ao final do texto.
Você pode verificar o valor atual da MTU com o comando ifconfig, no Linux.
As instruções abaixo também podem ser aplicáveis ao seu smartphone Android, se você tiver um emulador de terminal instalado.
Veja alguns exemplos:

ifconfig

O resultado pode ser um pouco extenso, a depender da quantidade de interfaces de rede presentes no seu sistema:

docker0   Link encap:Ethernet  Endereço de HW 56:84:7a:fe:87:99  
          inet end.: 172.17.42.1  Bcast:0.0.0.0  Masc:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Métrica:1
          pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:0 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:0 
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  Endereço de HW 50:b7:c3:15:da:48  
          UP BROADCAST MULTICAST  MTU:1500  Métrica:1
          pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:0 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000 
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

lo        Link encap:Loopback Local  
          inet end.: 127.0.0.1  Masc:255.0.0.0
          endereço inet6: ::1/128 Escopo:Máquina
          UP LOOPBACK RUNNING  MTU:65536  Métrica:1
          pacotes RX:3763 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:3763 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:0 
          RX bytes:333273 (333.2 KB) TX bytes:333273 (333.2 KB)

wlan0     Link encap:Ethernet  Endereço de HW c4:85:08:a7:0b:aa  
          inet end.: 192.168.0.112  Bcast:192.168.0.255  Masc:255.255.255.0
          endereço inet6: fe80::c685:8ff:fea5:aaa/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:298331 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:216836 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000 
          RX bytes:425353002 (425.3 MB) TX bytes:21561532 (21.5 MB)

Se quiser, é possível combinar o ifconfig com o comando grep, para obter resultados mais objetivos.
Outra forma de obter informações sobre a MTU das suas interfaces de rede é a seguinte:

ip link list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 50:b7:c3:04:da:48 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether c4:85:08:a5:0a:aa brd ff:ff:ff:ff:ff:ff
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default 
    link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff
verificando configurações de rede no Android
Clique para ampliar.

O ifconfig é usado para configurar (e posteriormente manter) as interfaces de rede.
É usado durante o boot para configurar a maioria delas para um estado usável. Depois disto, é normalmente somente necessário durante depurações ou quando for necessária uma configuração fina do sistema.
(Manual do ifconfig)

Como alterar a MTU da interface de rede

Os comandos que seguem, necessitam ser executados com privilégios administrativos — uma vez que alteram as configurações de dispositivos importantes do seu sistema.
Só para deixar registrado, no Android, você precisa de um aparelho rooteado para poder fazer esta configuração.
Para alterar a MTU da interface eth0 para 1400, por exemplo, use o ifconfig da seguinte maneira:

sudo ifconfig eth0 mtu 1400

Para obter o mesmo resultado com o comando ip, proceda da seguinte forma:

sudo ip link set dev eth0 mtu 1400

Agora verifique se a alteração surtiu efeito com os comandos ifconfig ou ip link list.

Como alterar definitivamente a MTU da interface de rede

Para que as alterações sejam definitivas e permaneçam, mesmo que você desligue ou reinicie o sistema, é necessário editar alguns arquivos de configuração — que podem variar de acordo com o sistema operacional ou “sabor” do GNU/Linux em uso.
Nas distros baseadas no Debian (Ubuntu, Mint, Trisquel etc), edite o arquivo /etc/network/interfaces.
O exemplo, abaixo, mostra como configurar uma interface Ethernet. Adapte-o à sua realidade:

auto eth0
iface eth0 inet static
name Ethernet LAN card
address 192.168.0.2
netmask 255.255.255.0
broadcast 192.168.0.255
network 192.168.0.0
gateway 192.168.0.254
mtu 1400
post-up /etc/fw.start
post-down /etc/fw.stop

Feito isto, grave o arquivo e reinicie a interface de rede:

sudo /etc/init.d/networking restart

Nas distros baseadas no Red Hat (Fedora, CentOS etc), a configuração se dá no arquivo /etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
HWADDR=00:0F:EA:91:04:07
IPADDR=192.168.1.111
NETMASK=255.255.255.0
NETWORK=192.168.1.0
MTU=1400
ONBOOT=yes
TYPE=Ethernet

Após gravar e fechar o arquivo, reinicie o serviço de rede:

sudo service network restart

ou (funciona no Debian também)

sudo service networking restart

Possíveis erros ao tentar configurar a interface de rede

A maioria dos erros pode ocorrer por que você não está executando algum comando com os privilégios administrativos que ele possivelmente requer.
Outros erros podem advir de se estar tentando aplicar um ajuste além das limitações do próprio hardware: SIOCSIFMTU: Invalid argument. Neste caso, tente usar outros valores (mais baixos) na configuração da MTU.
Se você tiver quiser ler mais sobre configuração de rede, no site, use a caixa de busca para encontrar outros artigos do seu interesse.

Referências

Exemplos de uso do comando ifconfig: https://elias.praciano.com/2015/05/como-configurar-sua-interface-de-rede-com-o-ifconfig/.
Wiki Debian: https://wiki.debian.org/NetworkConfiguration#A.2Fetc.2Fnetwork.2Finterfaces.

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.