Skip to main content

109.3 Resolução de problemas de Rede


Vamos ver como trabalhar com as ferramentas do pacote ip.



Comando IP


O Comando IP veio substituir uma série de comandos independentes, comandos estes que são pertencentes ao pacote net-tools, todas as ferramentas do net-tools foram agrupandos no comando ip.


Segue abaixo um exemplo, exibindo o novo comando ip e o antigo ifconfig.

Pacote IPPacote Net-tools
ip addressifconfig
ip linkifconfig
ip neighborarp
ip routeroute

A principal funcionalidade do comando IP é mostrar e manipular interfaces de rede, rotas, tunels e equipamentos de rede, com ele nós vamos manipular diretamente as informações de rede sem o uso de nenhum gerenciador por trás, como: NetworkManager, NetworkD, ou até mesmo scripts.


Com isso, toda a alteração é não persistente, quando você reiniciar, toda a alteração terá desaparecido, ou caso você feche sua sessão de terminal, também vai sumir o que você fez.


Opções:

OpçõesDescrição
linkUsado para interagir com a interface do Linux, seria como trabalhar com camada 2, você não vai ver informações de IP.
address ou addrMostra o endereço lógico das interfaces, seria como trabalhar na camada 3.
routeTrabalha com as rotas que tem n o Linux.
showUsando com ip link, ip addr, ip route entre outros, vai exibir as informações sobre o link, sobre os endereços e sobre as rotas.
listUsado com ip route, vai mostrar as rotas, igual o show.
flushLimpa toda a configuração de uma interface.
setAplica uma configuração.
dev (interface)Identifica a interface, o device.

Vamos ver alguns exemplos:

# Limpar toda a configuração de uma interface:
ip addr flush dev enp0s9

####################################################################
################### LINK ###########################################
####################################################################

################# [ Ativar ] ##################
# Ativar a interface de rede:
ip link set dev enp0s8 up

################# [ Desativar ] ###############
# Desativar a interface de rede:
ip link set dev enp0s8 down



####################################################################
################### ADDRESS ########################################
####################################################################

################# [ Adicionar ] ###############
# Adicionar endereço:
ip addr add 192.168.2.15/24 dev enp0s8

################# [ Remover ] ###############
ip addr del 192.168.2.15/24 dev enp0s8



####################################################################
################### ROUTE ##########################################
####################################################################

################# [ Adicionar ] ###############
ip route add 10.0.2.2/32 via 0.0.0.0 dev enp0s3

# Adicionar uma rota padrão:
ip route add default via 192.168.0.1 dev enp0s8

################# [ Remover ] ###############
ip route del 192.168.0.0/24 dev enp0s3


ifconfig


Por padrão não vem instalado, precisa instalar o pacote net-tools, para a LPI você só precisa conhecer o básico sobre.

OpçãoDescrição
-aMostra todas as interfaces, até as Down.
route -nMostra todas as rotas.

# Desativando uma interface:
ifconfig enp0s8 down

# Ativando uma interface:
ifconfig enp0s8 up

# Adicionar endereço:
ifconfig enp0s8 192.168.0.1 netmask 255.255.255.0

# Remover endereço - nao removeu de imediato:
ifconfig enp0s8 del 192.168.0.1 netmask 255.255.255.0

# Subir a interface já com IP:
ifconfig enp0s8 192.168.0.1 netmask 255.255.255.0 up

# Subinterface:
ifconfig enp0s8:0 192.168.0.10 netmask 255.255.255.0


# Adicionar uma rota padrão:
route add default gw 192.168.0.1 dev enp0s8

# Remover rota padrão:
route del default

# Adicionar uma rota:
route add 192.168.54.10/32 dev enp0s8


Ping


Usado para enviar pacotes de testes para um host remoto, usado para testar a conectividade entre dois hosts e verificar se o host de destino está up e respondendo.


A maquina que envia o ping, envia um echo_request, conhecido como tipo 8 do ICMP, e a máquina que responde, envia um echo_reply, tendo o tipo 0 do ICMP.

Com ping podemos ver se está tendo perda de pacote e podemos ver o RTT (Round trip time).



traceroute


Usado para ver o rastreamento de pacotes de rota para o host da rede. Diferente do ping, ele usa pacotes UDP para verificação, para usar icmp, use a opção -I.

$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 _gateway (192.168.121.1) 0.419 ms 0.302 ms 0.350 ms
2 192.168.1.1 (192.168.1.1) 0.894 ms 1.254 ms 1.175 ms
3 186-230-221-117.ded.intelignet.com.br (186.230.221.117) 10.961 ms 10.866 ms 10.766 ms
4 10.192.254.16 (10.192.254.16) 8.100 ms 10.192.254.14 (10.192.254.14) 8.010 ms 10.192.254.16 (10.192.254.16) 12.802 ms
5 10.223.238.236 (10.223.238.236) 11.634 ms 10.223.238.238 (10.223.238.238) 12.728 ms 12.634 ms
6 209.85.174.58 (209.85.174.58) 8.910 ms 72.14.194.55 (72.14.194.55) 9.547 ms 209.85.174.58 (209.85.174.58) 9.185 ms
7 108.170.245.161 (108.170.245.161) 8.627 ms 74.125.243.65 (74.125.243.65) 8.820 ms 74.125.243.1 (74.125.243.1) 8.111 ms
8 142.251.61.73 (142.251.61.73) 7.567 ms 142.250.46.225 (142.250.46.225) 7.723 ms 72.14.236.203 (72.14.236.203) 7.636 ms
9 dns.google (8.8.8.8) 7.747 ms 7.877 ms 7.670 ms
vagrant@ubuntu2004:~$


tracepath


Similar o traceroute, só muda o nome e que todas as opções do tracepath não precisa ser root, já o traceroute possui algumas opções que necessitam que você seja super usuário. .



ss


Similar ao netstat, mas o ss faz parte do pacote iproute2, que é o mesmo pacote que o novo comando ip pertence. As opções de uso são as mesmas.


Usado para verificar as conexões ativas na máquina, portas abertas, em quais portas está escutando, em qual delas tem conexão estabelecida dentre muitas outras funcionalidades.

OpçãoDescrição
-tMostra informações relacionadas a TCP.
-uMostra informações relacionadas a UDP.
-aMostra todos os sockets, que estão listening ou não e estabelecidas.
-nImpede a resolução de nomes e portas.
-eMostra informações adicionais sobre o socket.
-l (L)Mostra somente os sockets que estão sendo escutados.
-pMotra o processo responsável por aquela conexão.
-iMostra estatística de todas as interfaces.
-sMostra um resumo das estatísticas.

# Mostrar conexões estabelecidas (UDP e TCP):
$ ss -tu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp ESTAB 0 0 192.168.121.52:ssh 192.168.121.1:45604

# Portas que estão sendo escutadas:
$ ss -tul
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:*
udp UNCONN 0 0 192.168.121.52%eth0:bootpc 0.0.0.0:*
tcp LISTEN 0 4096 127.0.0.53%lo:domain 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
tcp LISTEN 0 128 [::]:ssh [::]:*

# Exibindo as estatísticas:
$ netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
enp5s0 1500 226725 0 0 0 108880 0 0 0 BMRU
lo 65536 2960 0 0 0 2960 0 0 0 LRU
virbr0 1500 0 0 0 0 0 0 0 0 BMU
virbr1 1500 0 0 0 0 0 0 0 0 BMU
virbr3 1500 0 0 0 0 0 0 0 0 BMU

# Exibindo o resumo das estatísticas:
$ ss -s
Total: 151
TCP: 4 (estab 1, closed 0, orphaned 0, timewait 0)

Transport Total IP IPv6
RAW 1 0 1
UDP 2 2 0
TCP 4 3 1
INET 7 5 2
FRAG 0 0 0

# Exibindo somente as conexões TCP que estão em Listening:
$ ss -lt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 127.0.0.53%lo:domain 0.0.0.0:*
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 128 [::]:ssh [::]:*


netcat


Usado para fazer verificação de conexão, com isso, conseguimos saber se uma porta em escutando e respondendo reuisições, o nc funciona da mesma forma, exatamente igual.

OpçãoDescrição
-zSomente faz um scan, para verificar se tem algum daemon escutando na porta.
-vVerbose.
# Verificando se tem algo escutando uma porta:
$ netcat localhost 22
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2

# Fazendo um scan:
$ netcat -zv localhost 22
Connection to localhost 22 port [tcp/ssh] succeeded!


# Criar uma conexão para teste numa porta:
$ nc -k -l -p 12345

# Em outro terminal, verificar se tem algo escutando essa porta:
$ nc -zv localhost 12345