Guia de comandos: iproute2
Esse post vai ser para ajudar a galera de RD2 do curso de FORTIC do ISTCC-P.
Os sistemas Linux-based GNU systems (apelidados de GNU/Linux, para simplificar – e erroneamente chamados de Linux) utilizam as ferramentas ifconfig
e route
do pacote tcpip
para configurar recursos de IP.
No entanto existe outro pacote, chamado iproute2
, que traz os mesmos recursos de forma bem mais flexível e inteligível, além de ter um uso similar ao do IOS (não idêntico!).
Esse pacote traz as seguintes ferramentas:
ip
(exibe e manipula roteamento, dispositivos, políticas e tunelamento)tc
(exibe e manipula configurações de controle de tráfego)ss
(exibe conexões ativas)- Outras ferramentas:
arpd
nstat
rtmon
ifstat
routef
routel
rtacct
rtstat
Aqui o foco será
ip
, que manipula recursos de IP.O formato desta ferramenta é:
ip [opções] objeto [comando]
Não vou entrar em detalhes sobre as
opções
(que podem ser omitidas); para tais detalhes, veja o manual. Então vamos ao objeto
!Objetos
Os objetos são:
link
– exibe e manipula detalhes sobre a interface;addr
– exibe e manipula detalhes sobre o(s) endereço(s) de IP;route
– exibe e manipula rotas;rule
– regras de política de roteamento;neigh
– entrada de cache de ARP;tunnel
– tunelamento sobre IP;maddr
– exibe e manipula detalhes sobre endereço(s) multicast;mroute
– entrada de cache de roteamento multicast;monitor
– monitora os objetos;xfrm
– esse sinceramente não faço a menor idéia do que faz… Google nele!
Um comando muito interessante é
help
. Por exemplo, para listar todas as opções da ferramenta:ip help
Para listas as opções do objeto
link
:ip link help
Para listas as opções do comando
state
do objeto xfrm
(sei lá o que isso faz):ip xfrm state help
Vejam que é equivalmente ao
?
do IOS.Este artigo se limitará aos objetos
link
, addr
e route
(apesar de o objeto tunnel
ser extremamente interessante, mas deixa pra próxima).Objeto link
Este objeto manipula atributos da interface. Para exibir os atributos da interface
eth0
:ip link show eth0
Caso a interface esteja caída, para levantar a interface:
ip link set eth0 up
E para derrubá-la:
ip link set eth0 down
Há diversos atributos nas interfaces, mas os mais interessantes são:
allmulticast
– diz se a interface receberá ou não a pacotes endereçados a endereços de multicast;promisc
– ativa ou desativa o modo promíscuo.
Por exemplo, para habilitar o recebimento de multicast e ativar o modo promíscuo (necessário para sniffar uma rede com Ethereal):
ip set eth0 almulticast on promisc on
Objeto addr
Este objeto manipula os endereços IP associados a uma interface lógica. Os comandos mais importantes são:
show
– exibe os endereços associados a uma interface;add
– associa um novo endereço a uma interface, se já houver um endereço associado, o novo endereço será associado como secundário (equivalente asecondary
no IOS);del
– remove um endereço associado de uma interface.
Todos os comandos devem ser seguidos da opção
dev
, que informa a interface.Por exemplo, para exibir todos os endereços associados à interface
eth0
:ip addr show dev eth0
Para adicionar o endereço 10.2.3.4, máscara 255.0.0.0, à interface:
ip addr add 10.2.3.4/8 dev eth0
Para remover esse endereço:
ip addr del 10.2.3.4/8 dev eth0
Observação: o objeto
addr
tem dificuldade em calcular o endereço de broadcast de subclasses, então é preciso informá-lo:ip addr add 192.198.11.17/30 broadcast 192.168.11.19 dev eth0
Objeto route
Este objeto manipula as rotas.
Não é preciso criar rotas para as redes dos endereços associados às interfaces, pois o objeto
addr
já faz isso automaticamente!Os comandos mais importantes são:
list
(abreviação:ls
) – lista as rotas configuradas;add
– adiciona uma rota;del
– remove uma rota.
Vamos aos exemplos…
Para listar todas as rotas:
ip route ls
Para listar todas as rotas que saem pela interface
eth0
:ip route ls dev eth0
Para adicionar uma rota para a rede 10.0.0.0/8 pelo gateway 192.168.12.2 (precisar estar na mesma rede de um dos endereços da interface):
ip route add 10.0.0.0/8 via 192.168.12.2 dev eth0
Para remover a rota:
ip route del 10.0.0.0/8
Agora rota padrão (0.0.0.0/0.0.0.0)!
Para configurar o default gateway como 10.3.0.254:
ip route add default via 10.3.0.254 dev eth0
E para remover a rota padrão:
ip route del default
Conclusão
Acho que é isso tudo! =D
Vou pensar em escrever um artigo sobre tunelamento (manipulado pelo objeto
tunnel
), mas esse é mais complexo (e divertido).[]'s
Rodrigo Cacilhas