# Ifconfig

ifconfig, um acrônimo em inglês de "configuração de interface" (interface configuration) é um comando de UNIX e de sistemas operacionais tipo UNIX para configurar, controlar e visualizar informações sobre parâmetros TCP/IP de uma interface de rede. Esta ferramenta apareceu inicialmente no 4.2BSD, como parte das ferramentas TCP/IP BSD(BSD TCP/IP suite). Esse comando é análogo ao comando ipconfig do Sistema Operacional Windows.

## Utilização

A utilização do ifconfig inclui a configuração de um Endereço IP e máscara de rede em uma interface, e habilitar e desabilitar uma determinada interface. Durante a inicialização, vários sistemas operacionais tipo Unix configuram suas interfaces através de shell scripts que invocam o ifconfig. Como ferramenta interativa, administradores de sistema frequentemente utilizam o ifconfig para visualizar parametros das interfaces. A saída abaixo mostra o status de uma interface eth0 em um cliente Linux, e a interface ural0 no OpenBSD
As suas saídas são dividas das seguintes formas:
* Link encap: Qual encapsulamento está sendo usado pela rede, exemplo Ethernet.
* Hwaddr: Qual é o endereço do Media Access Control (MAC) da interface de rede, mostrado em forma hexadecimal. Essas sequências são únicas e já vem configurado de fábrica.
* inet addr: Mostra o endereço IP da interface de rede.
* Bcast: Mostra qual é o endereço de broadcast que a rede está conectado.
* Mask: Esse item identifica qual é a máscara de rede (netmask). Em sua maior parte é o 255.255.255.0
* MTU: Mostra o tamanho da Unidade Máxima de Transmissão e que defini o tamanho máximo que um pacote individual de dados pode possuir. Caso ele passe disso, ele será fracionado.
* RX: Esse item mostra as informações do tráfico de rede recebido.
* TX: Fornece os dados enviados. Quaisquer erros registrados nessa parte, mostra que possui algum problema com a rede.
* collisions: Caso dois sistemas de rede tentam conversar ao mesmo tempo, este dispositivo entrará em colisão que é necessário que eles retransmitam seus pacotes. Caso houver um algo indícios de conflitos, isso era um problema na rede.
* txqueuelen: O número padrão é o 1000 e raramente precisa de alguma mudança
* RX bytes, TX bytes: Mostra um resumo de bandas recebidas e enviadas pela interface de rede.

## Estado Atual

Sistemas operacionais descendentes de UNIX, BSD's (NetBSD, OpenBSD, e FreeBSD) continuam a desenvolver ativamente o ifconfig e extensões para cobrir a configuração de interfaces de redes sem fio, VLAN trunking, controle de funcionalidades de hardware como TSO ou checksumming de hardware e configuração de interfaces do tipo bridge e tunnel. O Solaris historicamente utilizou o ifconfig para todas as configurações de interface de rede, porém após a versão 10 a ferramenta dladm foi introduzida para executar configurações de Camada 2(Modelo OSI), reduzindo o ifconfig puramente a configuração de ip.
Em distribuições Linux mais antigas, o ifconfig e o comando route operavam junto para conectar um computador a uma rede, e definir rotas entre redes. O ifconfig para Linux faz parte do pacote net-tools, que ainda é mantido e tem como última versão a 1.60 de 15 de Abril de 2001.
O intuito em distribuições Linux modernas é o de descontinuar o ifconfig e o route como ferramentas padrão de configuração de redes, em prol do pacote iproute2, disponível desde 17 de Abril de 1999 par o Linux 2.2.4, baseado nos dados de tarballs do iproute2 em seu sítio de projeto(pois o histórico do git não chega tão antigamente). E apesar de tudo, muitas distribuições ainda falham em usar o iproute2 como pacote padrão de gerenciamento de redes. O iproute inclui suporte a todas as funcionalidades comuns dos pacotes ifconfig(8), route(8), arp(8) e netstat(1), e além disto, configuração de multicast, tunnel e gerenciamento de link virtual, controle de tráfego e configuração de nível mais baixo do IPsec.