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

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

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

"ifconfig está obsoleto 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?

Responder1

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

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

Adicionalmente:

  • ifconfignão informa o endereço de hardware adequado para alguns dispositivos.
  • Você não pode configurar ipiptúneis estáticos no kernel.sitgrel2tp
  • Você não pode criar tunou tapdispositivos.
  • A forma de adicionar vários endereços a uma determinada interface também possui uma semântica ruim.
  • Você também não pode configurar o sistema de controle de tráfego Linux usando net-toolsnenhum deles.

Veja tambémifconfigé uma merda.

EDITAR: Removida a afirmação sobre net-toolsa cessação do desenvolvimento, já que esqueci onde cheguei para este post. net-tools' foi trabalhado desde que iproute2foi lançado, embora seja principalmente correção de bugs e pequenas melhorias e recursos, como internacionalização.

Responder2

ifconfigé um comando tradicional para exibir informações sobre interfaces de rede e alterar algumas configurações. Em particular, pode ativar e desativar interfaces. Existe na maioria das variantes Unix.

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

O Linux também fornece o ipcomando doiproute2conjunto de ferramentas. 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 que não sejam Linux).

A saída da análise ifconfigé meio ruim. A saída da análise ipé meio ruim. Nenhum vencedor aí.

Responder3

Apenas para acrescentar alguns detalhes à resposta de Pilona. Por volta de 2005, foi introduzido um novo mecanismo para controlar a pilha de rede -soquetes de rede.

Para configurar a interface de rede iproute2utiliza esse mecanismo de soquete netlink full-duplex, enquanto ifconfigdepende de uma ioctlchamada de sistema. Aqui estão 2 artigos principais sobremotivação por trás do netlinkeuso do rtnetlink.

Responder4

Na minha experiência, encontrei a saída deifconfigmais fácil de digerir quando comparado comip-*comandos, que IMO visualmente deixam um pouco a desejar. No meu uso típico, preciso apenas de um subconjunto do que é fornecido, por exemplo, interface, status, endereço IP e, nesse sentido,ifconfigé mais fácil de ler.

ifconfig:

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 297454  bytes 14872700 (14.1 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 297454  bytes 14872700 (14.1 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.10  netmask 255.255.255.0  broadcast 10.0.0.255
    ether aa:aa:aa:aa:aa:aa  txqueuelen 1000  (Ethernet)
    aa:aa:aa:aa:aa:aabytes 596277 (582.3 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 9083  bytes 738309 (721.0 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.20  netmask 255.255.255.0  broadcast 10.0.0.255
    ether aa:aa:aa:aa:aa:aa  txqueuelen 1000  (Ethernet)
    aa:aa:aa:aa:aa:aabytes 596277 (582.3 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 9083  bytes 738309 (721.0 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Comparado com o endereço IP:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
inet 10.0.0.10/24 brd 10.0.0.255 scope global eth0
   valid_lft forever preferred_lft forever
3: eth1 <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
inet 10.0.0.20/24 brd 10.0.0.255 scope global eth1
   valid_lft forever preferred_lft forever

informação relacionada