segunda-feira, 30 de outubro de 2017

Substituindo ifconfig por ip Debian 8 e 9


jack-ip-1
Se você esteve no Linux por tempo suficiente, você sabe que as ferramentas vão e vem. Este foi considerado o caso em torno de 2009, quando a lista de discussão debian-devel anunciou planos de depreciação do pacote de ferramentas líquidas devido à falta de manutenção. Agora é 2015 e as ferramentas de rede ainda estão por aí. Na verdade, a partir do Ubuntu 14.10, você ainda pode emitir o comando ifconfig para gerenciar sua configuração de rede.
No entanto, em alguns casos (por exemplo, o recipiente Ubuntu Docker ), o conjunto de ferramentas de rede não está instalado por padrão. Isso significa que o comando ifconfig não está disponível. Embora você possa instalar net-tools com o comando
  sudo apt-get install net-tools 
é mais frequente recomendar avançar com o comando que substituiu ifconfig. Esse comando é ip, e faz um ótimo trabalho para entrar no ifconfig desatualizado.
A coisa é, ip não é uma substituição drop-in para ifconfig. Existem diferenças na estrutura dos comandos. Mesmo com essas diferenças, ambos os comandos são usados ​​para fins semelhantes.Na verdade, ip pode fazer o seguinte:
  • Descubra quais interfaces são configuradas em um sistema
  • Consulta o status de uma interface de rede
  • Configure as interfaces de rede (incluindo loopback local e Ethernet)
  • Traga uma interface para cima ou para baixo
  • Gerencie o roteamento padrão e estático
  • Configurar o túnel sobre IP
  • Configurar a entrada de cache ARP ou NDISC
Com tudo isso dito, vamos embarcar em substituir ifconfig por ip. Vou oferecer alguns exemplos de como o comando de substituição é usado. Compreenda que este comando exige privilégios de administrador (então você terá que su para criar ou fazer uso de sudo - dependendo da sua distribuição). Como esses comandos podem fazer alterações nas informações de rede da sua máquina, use-as com cautela.
NOTA: Todos os endereços usados ​​neste procedimento são exemplos. Os endereços que você usará serão ditados pela sua rede e seu hardware.
Agora, com o how-to.

Juntando informações

A primeira coisa que a maioria das pessoas aprende com o comando ifconfig é como descobrir qual endereço IP foi atribuído a uma interface. Isso geralmente é feito com o comando ifconfig e sem sinalizadores ou argumentos. Para fazer o mesmo com o comando ip, ele é executado como tal:
  ip a 
Este comando irá listar todas as interfaces com as informações associadas (Figura 1 acima).
Digamos que você só deseja ver as informações IPv4 (para maior clareza). Para fazer isso, emita o comando:
  ip -4 a 
Ou, se você quiser apenas ver informações IPv6:
  ip -6 a 
E se você quiser apenas ver informações sobre uma interface específica? Você pode listar informações para uma conexão sem fio com o comando:
 ip um show wlan0 
Você pode até se tornar mais específico com este comando. Se você quiser apenas ver IPv4 na interface wlan0, emita o comando:
  ip -4 um show wlan0 
Você pode até listar apenas a interface executando usando:
  ip link ls up 

Modificando uma interface

Agora entramos no coração do comando ... usando-o para modificar uma interface. Suponha que você quisesse atribuir um endereço específico à primeira interface ethernet, eth0. Com o comando ifconfig, isso pareceria:
  ifconfig eth0 192.168.1.101 
Com o comando ip, isso agora parece:
  ip a add 192.168.1.101/255.255.255.0 dev eth0 
Você poderia encurtar um pouco com:
  ip a add 192.168.1.101/24 dev eth0 
Claramente, você precisará saber a máscara de sub-rede do endereço que você está atribuindo.
E sobre como excluir um endereço de uma interface? Com o comando ip, você também pode fazer isso. Por exemplo, para excluir o endereço apenas atribuído ao eth0, emita o seguinte comando:
  ip a del 192.168.1.101/24 dev eth0 
E se você quiser simplesmente liberar todos os endereços de todas as interfaces? O comando ip tem coberto com este comando:
  ip -s -saf to 192.168.1.0/24 
Outro aspecto crucial do comando ip é a capacidade de abrir / desligar uma interface. Para reduzir o eth0, emita:
  ip link set dev eth0 down 
Para fazer backup do eth0, use:
  conjunto de links IP dev eth0 up 
Com o comando ip, você também pode adicionar e excluir gateways padrão. Isso é assim:
  ip route add default via 192.168.1.254 
Se você quiser se detalhar sobre suas interfaces, você pode editar a fila de transmissão. Você pode configurar a fila de transmissão para um valor baixo para interfaces mais lentas e um valor maior para interfaces mais rápidas. Para fazer isso, o comando pareceria:
  ip link set txqueuelen 10000 dev eth0 
O comando acima configuraria uma fila de transmissão elevada. Você pode brincar com esse valor para encontrar o que funciona melhor para o seu hardware.
Você também pode definir a unidade de transmissão máxima (MTU) da sua interface de rede com o comando:
  ip link set mtu 9000 dev eth0 
Depois de ter feito as alterações, use ip uma lista eth0 para verificar se as mudanças entraram em vigor.

Gerenciando a tabela de roteamento

Com o comando ip você também pode gerenciar as tabelas de roteamento do sistema. Este é um elemento muito poderoso do comando ip, e você deve usá-lo com cautela.
Suponha que você deseja visualizar todas as tabelas de roteamento. Para fazer isso, você emitiria o comando:
  ip r 
A saída deste comando será semelhante à mostrada na Figura 2.
jack-ip-2-crop
Agora, diga que deseja encaminhar todo o tráfego através do gateway 192.168.1.254 conectado via interface de rede eth0: Para fazer isso, emita o comando:
  ip route add 192.168.1.0/24 dev eth0 
Para excluir a mesma rota, emita:
  ip route del 192.168.1.0/24 dev eth0 
Este artigo deve servir como apenas uma introdução ao comando ip. Isso, é claro, não significa que você deve pular imediatamente do ifconfig. Como a desaprovação do ifconfig foi tão lenta, o comando ainda existe em várias distribuições. Mas, por ocasião de que o falecimento finalmente desapareça da visão, você estará pronto para fazer a transição com facilidade. Para obter informações mais detalhadas sobre o comando ip, dê uma olhada na página ip man emitindo o comando man ip a partir de uma janela de terminal.

Nenhum comentário: