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 ioctl
para 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). route
permite que você faça coisas estúpidas, como adicionar várias rotas para o mesmo destino, com a mesma métrica.
Adicionalmente:
ifconfig
não informa o endereço de hardware adequado para alguns dispositivos.- Você não pode configurar
ipip
túneis estáticos no kernel.sit
gre
l2tp
- Você não pode criar
tun
outap
dispositivos. - 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-tools
nenhum deles.
Veja tambémifconfig
é uma merda.
EDITAR: Removida a afirmação sobre net-tools
a cessação do desenvolvimento, já que esqueci onde cheguei para este post. net-tools
' foi trabalhado desde que iproute2
foi 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 ifconfig
comando não evolui há muito tempo. Ainda está perfeitamente bem para o que faz. Se você está usando ifconfig
para alguma coisa, não há motivo para parar.
O Linux também fornece o ip
comando doiproute2conjunto de ferramentas. O ip
comando combina vários comandos clássicos e muito mais, incluindo ifconfig
, route
e arp
. ip
pode fazer muito mais do que ifconfig
. Por outro lado, ip
nem 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 iproute2
utiliza esse mecanismo de soquete netlink full-duplex, enquanto ifconfig
depende de uma ioctl
chamada 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