Como alterar o endereço IP com o comando ip no Linux.

Já falei antes sobre comandos relacionados à configuração e obtenção de informações sobre a interface de rede, no Linux.
No post substituição do ifconfig pelo ip, apresentei o comando e como obter informações sobre uma interface de rede.
Neste texto, vamos demonstrar como alterar o endereço IP de uma interface, na CLI do Linux.
Este tipo de configuração pode ser melhor feito na GUI da sua distro (com a vantagem de ser permanente).
Mas há situações em que não temos acesso a um ambiente desktop gráfico, que nos permita fazer este tipo de ajuste.

Geralmente, este método não é recomendado, para alterar o endereço IP de uma interface de rede, uma vez que ele não é persistente.
Ou seja, a configuração que você fizer perderá efeito após reiniciar a máquina.

Para realizar alterações temporárias na sua interface de rede, o comando ip provê um método bastante cômodo como solução.
Como este comando requer privilégios administrativos, sugiro usar uma máquina virtual para fazer suas experiências — caso você esteja lendo este texto apenas para aprender.
Para obter uma relação das interfaces presentes, rode o comando ip assim:


ip a

Se executada, sem privilégios administrativos, a linha acima deve retornar algo parecido com o que se vê abaixo. No meu caso, são informações básicas sobre as 3 interfaces de rede disponíveis em meu sistema:

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0:  mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 50:b7:c3:04:da:48 brd ff:ff:ff:ff:ff:ff
3: wlp1s0:  mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether c4:85:08:a5:0a:aa brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.3/24 brd 192.168.100.255 scope global dynamic wlp1s0
       valid_lft 4233sec preferred_lft 4233sec
    inet6 fe80::8274:c9b8:688a:300a/64 scope link 
       valid_lft forever preferred_lft forever

Use a opção '-c' para obter uma saída colorida
Use a opção '-c' para obter uma saída colorida

Veja um exemplo de como adicionar um endereço IP à interface enp2s0:


ip a add 10.0.2.21 dev enp2s0

O que foi feito, acima:

  • a — abreviatura de address (endereço).
  • add — indica que faremos uma adição á configuração atual.
  • 10.0.2.21 — provê o novo endereço IP.
  • dev enp2s0 — informa a que dispositivo (device) de rede as mudanças se aplicam.

Ao rodar o comando 'ip a' novamente, vai ser possível ver que um endereço foi adicionado ao dispositivo em questão.
Também dá para especificar a máscara de (sub)rede – se você souber qual é, claro.
Veja 2 exemplos de como fazer isto:


ip a add 192.168.1.101/255.255.255.0 dev eth0

ou


ip a add 192.168.1.101/24 dev eth0

Tal como no ifconfig, é possível usar 'up' e 'down' para ativar ou desativar uma interface:


ip link set dev eth0 up

ou


ip link set dev eth0 down

Se quiser remover um endereço associado a uma interface, use a opção 'del' (delete):


ip a del 10.0.2.21 dev enp2s0

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Como substituir o comando ifconfig pelo ip

Usuários tradicionais do Linux podem ter se acostumado a usar o comando ifconfig para solucionar, diagnosticar problemas ou fazer ajustes relacionados à interface de rede no seu sistema.
A ferramenta faz parte do pacote net-tools (no Debian) e vem sendo descontinuada há algum tempo — ou, pelo menos, não vinha recebendo mais atualizações.

ethernet cable
Ethernet.

Clique nos links dentro do texto e no final, para obter mais informações.
Alguns usuários ficaram surpresos com o “sumiço” da ferramenta, nas versões mais atuais de seus sistemas operacionais favoritos.
Entretanto, quem fizer questão, pode facilmente instalar o ifconfig, da seguinte forma:


sudo apt install net-tools

Por curiosidade, a opção ‘show’ mostra que o ifconfig (em destaque) ainda consta entre os pacotes do net-tools:


apt show net-tools

Package: net-tools
Version: 1.60+git20161116.90da8a0-1
Priority: optional
Section: net
Maintainer: net-tools Team 
Installed-Size: 963 kB
Depends: libc6 (>= 2.14), libselinux1 (>= 1.32)
Conflicts: ja-trans (<= 0.8-2)
Replaces: ja-trans (<= 0.8-2), netbase (<< 4.00)
Homepage: http://sourceforge.net/projects/net-tools/
Tag: admin::configuring, implemented-in::c, interface::commandline,
 network::configuration, network::routing, network::vpn, protocol::ipv6,
 role::program, scope::utility, use::routing
Download-Size: 248 kB
APT-Sources: http://ftp.br.debian.org/debian stretch/main amd64 Packages
Description: conjunto de ferramentas para rede NET-3
 Este pacote inclui as importantes ferramentas para controlar o sub-sistema
 de rede do kernel do Linux. Ele inclui: arp, ifconfig, netstat, rarp,
 nameif e route. Adicionalmente, este pacote contém utilitários relacionados
 a tipos particulares de hardware de rede (plipconfig, slattach, mii-tool) e
 aspectos avançados de configuração IP (iptunnel, ipmaddr).
 .
 No pacote original (do autor), 'hostname' e outros estão incluídos.
 Esses não são instalados por este pacote, visto que existe um pacote
 especial "hostname*.deb".

Se você usar o comando apt changelog sobre o pacote ‘net-tools’, vai ver que a última atualização (patch) do ifconfig ocorreu em 2011.
Muitas águas rolaram por baixo desta ponte.
O ip é a ferramenta de configuração da rede, que vem ganhando força.
Se estiver disposta(o) a seguir em frente e experimentar o novo, me acompanhe.

Saiba mais sobre o comando ip, para configuração de redes no Linux

É importante enfatizar que o ip não é, simplesmente, uma substituição do ifconfig.
São usados para propósitos similares, mas são diferentes entre si, em suas estruturas.
Veja o que dá para fazer com o ip:

  • Descobrir quais interfaces estão configuradas no sistema.
  • Inquirir sobre o estado de uma interface de rede.
  • Configurar as interfaces de rede — o que inclui o loop-back local e a Ethernet.
  • Ativar ou desativar uma interface.
  • Gerenciar o roteamento estático e padrão.
  • Configurar o tunelamento sobre o IP.

No próximo tópico, veremos alguns exemplos aonde o ip pode ser usado como substituto do ifconfig, para exibir o estado das interfaces de rede.
Lembre-se que a ferramenta requer privilégios administrativos, de forma que você vai ter que usar ou o su ou o sudo, para executar o comando.
Não esqueça de adequar os exemplos deste texto, à realidade da sua rede, aí.

Como obter informações da rede

Sempre usei muito o ifconfig para obter dados sobre as interfaces de rede presentes em meu hardware.
Isto pode ser feito apenas invocando o comando, sem dar qualquer parâmetro, argumento ou opção.
Esta tarefa pode ser executada com o comando ip da seguinte forma:


ip a

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0:  mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 50:b7:c3:04:da:48 brd ff:ff:ff:ff:ff:ff
3: wlp1s0:  mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether c4:85:08:a5:0a:aa brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.3/24 brd 192.168.100.255 scope global dynamic wlp1s0
       valid_lft 6263sec preferred_lft 6263sec
    inet6 fe80::8274:c9b8:688a:300a/64 scope link 
       valid_lft forever preferred_lft forever

Você sempre pode acrescentar as opções ‘-color’ (ou apenas ‘-c’) e ‘-human’ (‘-h’), para obter a saída, com destaques importantes colorizados e em formato um pouco mais legível (por humanos). Veja um exemplo:


ip -c -h a

terminal resultado do comando ip
Use a opção ‘-4’, para exibir informações sobre a rede IPv4:


ip -4 a 

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
3: wlp1s0:  mtu 1500 qdisc mq state UP group default qlen 1000
    inet 192.168.100.3/24 brd 192.168.100.255 scope global dynamic wlp1s0
       valid_lft 5136sec preferred_lft 5136sec

Ou ‘-6’, para as informações de rede IPv6:


ip -6 a

1: lo:  mtu 65536 state UNKNOWN qlen 1
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
3: wlp1s0:  mtu 1500 state UP qlen 1000
    inet6 fe80::8274:c9b8:688a:300a/64 scope link 
       valid_lft forever preferred_lft forever

Quer restringir as informações a apenas uma das suas interfaces? Use o ‘show’ acompanhado do nome da interface de rede:


ip a show wlp1s0

3: wlp1s0:  mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether c4:85:08:a5:0a:aa brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.3/24 brd 192.168.100.255 scope global dynamic wlp1s0
       valid_lft 4818sec preferred_lft 4818sec
    inet6 fe80::8274:c9b8:688a:300a/64 scope link 
       valid_lft forever preferred_lft forever

Combine parâmetros e, sinta-se à vontade para incluir o comando grep, para filtrar melhor as informações exibidas:

ip -4 -c -h a show wlp1s0 | grep --color state

3: wlp1s0:  mtu 1500 qdisc mq state UP group default qlen 1000

Para ver apenas as interfaces de rede ativas, use o comando da seguinte forma:


ip -c link ls up

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0:  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: wlp1s0:  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

Como deixar sempre colorida a saída do comando ip

Note que gosto de acrescentar a opção ‘-c’, para colorizar a saída do comando — o que torna mais fácil a sua leitura.
Isto é opcional, claro.
Você pode incluir esta e outras opções automaticamente a cada nova entrada do comando, usando o alias:


alias ip='ip -c'

Se quiser torná-lo permanente, inclua esta linha ao final do arquivo .bashrc (do superusuário).

Referências

https://www.linux.com/learn/replacing-ifconfig-ip.

https://linuxconfig.org/how-to-install-missing-ifconfig-command-on-debian-linux.

IP aliasing no Linux

Este post mostra como aplicar o recurso de IP aliasing a uma interface de rede em uma máquina Linux — o que permite que uma única interface física tenha mais de um endereço IP (como se você tivesse várias placas de rede independentes no seu computador).
A maioria das distro Linux atuais tem o recurso de IP aliasing compilado no kernel. Se este não for o seu caso, você vai ter que carregar o módulo, via insmod
interfaces de rede

O recurso de IP aliasing consiste na associação de um ou mais endereços IP a uma única interface de rede física.
A partir daí, um nó da rede pode ter múltiplas conexões, cada qual servindo a um propósito diferente.
(Wikipedia).

Motivos para usar o recurso de IP aliasing

Há várias razões para alguém querer organizar seu sistema através do uso de várias interfaces lógicas de rede.
Com este recurso, o seu computador vai ficar parecendo “várias computadores” dentro da rede — um pode ser o servidor de impressão, outro o servidor de arquivos, um “terceiro” o servidor web etc.
Esta situação pode ser útil se você tem planos de realmente introduzir outra(s) máquina ao seu parque atual e deseja testar as configurações — basta, depois, transferir tudo pro novo servidor.
O caso contrário também é interessante — concentrar todas as funções de vários servidores em um único, mais parrudo, para poupar o trabalho de manutenção e administração.
Alguns usuários fazem uso do recurso para poder manter seu computador ligado a 2 (ou mais) subredes distintas, simultaneamente.

A vantagem que se sobressai no uso do IP aliasing é que não precisa ter um endereço IP para cada peça de hardware — pelo contrário, você pode gerar um pool de interfaces de rede virtuais (ou aliases) em um único dispositivo.

Como configurar IP aliasing com o ifconfig

A ferramenta ifconfig já foi abordada em outros artigos — recomendo, caso você tenha interesse, ver outros exemplos práticos de uso deste utilitário.
Imagine que tenhamos um interface Ethernet ‘eth0’ no endereço IP 192.168.0.150 e queremos criar um alias ‘eth0:0’ com o endereço 192.168.0.151. Para fazer isto, siga o exemplo:

sudo ifconfig eth0:0 192.168.0.151

Para testar, use o ping:

ping 192.168.0.151

ou use o próprio ifconfig:

ifconfig
...

eth0      Link encap:Ethernet  Endereço de HW 50:b7:c3:04:da:48  
          inet end.: 192.168.0.150  Bcast:192.168.0.255  Masc:255.255.255.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:1000 
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

eth0:0    Link encap:Ethernet  Endereço de HW 50:b7:c3:04:da:48  
          inet end.: 192.168.0.151  Bcast:192.168.0.255  Masc:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Métrica:1
...

Como criar interfaces de rede virtuais permanentes

Até agora, as alterações podem ser desfeitas com um simples reboot — ou seja, não são permanentes.
Para que elas persistam após a reinicialização, é necessário editar o arquivo (nas distribuições derivadas do Debian) /etc/network/interfaces.
Abra o arquivo com o seu editor favorito e acrescente (ou altere) de acordo com o exemplo a seguir:

auto eth0:0
iface eth0:0 inet static
name eth0 Alias
address 192.168.0.151
netmask 255.255.255.0
broadcast 192.168.0.255
network 192.168.0.0

Grave o arquivo /etc/network/interfaces e reinicie o serviço de rede do seu sistema:

sudo service networking restart

ou

sudo /etc/init.d/networking restart

Da mesma forma como você procedeu até aqui, pode continuar a criar novas interfaces lógicas de rede: eth0:1, eth0:2, eth0:3 … eth0:254.

Referências

O comando ifconfig, em exemplos práticos: https://elias.praciano.com/2015/05/como-configurar-sua-interface-de-rede-com-o-ifconfig/.
Penguintutor: http://www.penguintutor.com/linux/networking-ip-alias-tutorial.
Wikipedia – IP aliasing: http://en.wikipedia.org/wiki/IP_aliasing.
Yourownlinux: http://www.yourownlinux.com/2013/09/how-to-create-alias-for-network.html.

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

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.