Diferença entre os comandos 'ifconfig' e 'ip'

19

Li alguns artigos / tutoriais sobre o comando 'ifconfig', a maioria deles incluía uma declaração comum -

"ifconfig foi descontinuado pelo comando ip"

e sugeriu aprender o comando ip. Mas nenhum deles explicou como o comando 'ip' é mais poderoso que o 'ifconfig'.

Qual é a diferença entre os dois?

Mandar Shinde
fonte

Respostas:

21

ifconfigé de net-tools, que não consegue acompanhar completamente a pilha de rede Linux há muito tempo. Ele também ainda usa ioctlpara configuração de rede, que é uma maneira feia e menos poderosa de interagir com o kernel.

Muitas mudanças no código de rede do Linux e muitos novos recursos não são acessíveis usando net-tools: roteamento de caminhos múltiplos, roteamento de políticas (consulte o RPDB). routepermite que você faça coisas idiotas, como adicionar várias rotas ao mesmo destino, com a mesma métrica.

Além disso:

  • ifconfig não relata o endereço de hardware adequado para alguns dispositivos.
  • Não é possível configurar ipip, sit, gre, l2tp, etc. túneis estáticos no kernel.
  • Você não pode criar tunou tapdispositivos.
  • A maneira de adicionar vários endereços a uma determinada interface também tem pouca semântica.
  • Você também não pode configurar o sistema de controle de tráfego Linux usando net-toolsqualquer um.

Veja também ifconfigé péssimo .

EDIT : Removida a afirmação sobre net-toolscessar o desenvolvimento, que até agora eu esqueci onde cheguei para este post. net-tools'foi trabalhado desde que iproute2foi lançado, embora seja principalmente a correção de bugs e pequenas melhorias e recursos, como internacionalização.

pilona
fonte
NET-3 net-tools não é o único ifconfig. Há um diferente nos inetutils do GNU, por exemplo. E isso não é tudo. unix.stackexchange.com/a/504084/5132
JdeBP 03/03
7

ifconfigé um comando tradicional para exibir informações sobre interfaces de rede e alterar algumas configurações. Em particular, ele pode trazer interfaces para cima e para baixo. Existe na maioria das variantes unix.

No Linux, o ifconfigcomando não evoluiu há muito tempo. Ainda está perfeitamente bem para o que faz. Se você estiver usando ifconfigalguma coisa, não há motivo para parar.

O Linux também fornece o ipcomando do conjunto de ferramentas iproute2 . O ipcomando combina vários comandos clássicos e muito mais, incluindo ifconfig, routee arp. ippode fazer muito mais do que ifconfig. Por outro lado, ipnem sempre está presente, especialmente em sistemas embarcados (e nunca em variantes unix além do Linux).

ifconfigA saída da análise é meio ruim. ipA saída da análise é meio ruim. Nenhum vencedor lá.

Gilles 'SO- parar de ser mau'
fonte
Eu sempre achei ipa saída da análise bastante simples e certamente muito mais simples do que ifconfig. Também adoro que, em muitos casos, a saída de um ipcomando possa ser usada como entrada para outro ipcomando com pouca ou nenhuma modificação (por exemplo, toda linha de ip route showpode ser usada como argumento para ip route add).
Patrick
1
O @Patrick analisando o ip routee a ip rulesaída é bastante clara e fácil de analisar. Mas ip link, ou ip addré uma dor. Eu realmente gostaria que alguém enviasse um patch ou algo para ip addrimprimir as instruções exatas, talvez com um switch, que você usaria na configuração atual, como você obtém ip route show.
Zoredache
5

Apenas para adicionar alguns bits à resposta de pilona. Por volta de 2005, foi introduzido um novo mecanismo para controlar a pilha de rede - soquetes netlink .

Para configurar a interface de rede, iproute2use esse mecanismo de soquete netlink full-duplex, enquanto se ifconfigbaseia em uma ioctlchamada do sistema. Aqui estão dois documentos principais sobre motivação por trás do netlink e uso do rtnetlink .

Boris Burkov
fonte