205.2 Advanced Network Configuration and Troubleshooting
Alfredo Braga • October 19, 2021
ip
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel euismod velit, egestas congue tortor. Nulla erat dui, elementum et erat vitae, consequat mattis ipsum. Vivamus a sapien urna. Pellentesque porta malesuada nibh, vitae efficitur erat pretium vitae.
ifconfig
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel euismod velit, egestas congue tortor. Nulla erat dui, elementum et erat vitae, consequat mattis ipsum. Vivamus a sapien urna. Pellentesque porta malesuada nibh, vitae efficitur erat pretium vitae.
route
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel euismod velit, egestas congue tortor. Nulla erat dui, elementum et erat vitae, consequat mattis ipsum. Vivamus a sapien urna. Pellentesque porta malesuada nibh, vitae efficitur erat pretium vitae.
arp
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel euismod velit, egestas congue tortor. Nulla erat dui, elementum et erat vitae, consequat mattis ipsum. Vivamus a sapien urna. Pellentesque porta malesuada nibh, vitae efficitur erat pretium vitae.
netstat
O comando netstat
lista conexões. Sem nenhum parametro ele lista todas as conexões do host.
O comando abaixo exibe as conecxões tcp
com o -t e udp
, com o -u, em modo listen, com o -l, e não resolve os nomes dos ips e portas com o -n
$ netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:43651 0.0.0.0:* LISTEN
tcp6 0 0 :::139 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 :::445 :::* LISTEN
tcp6 0 0 :::8000 :::* LISTEN
Podemos ainda adicionar a opção -p
para exibir o processo responsável pela abertura da porta
$ netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 1695/smbd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7085/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 16744/cupsd
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 1695/smbd
tcp 0 0 127.0.0.1:43651 0.0.0.0:* LISTEN 1439/containerd
Com a opção -c
o comando fica procurando de forma continua essas informações semelhando a um tail -f
Para listar a tabela de roteamento
$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default _gateway 0.0.0.0 UG 0 0 0 enp1s0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
Ou
$ netstat --route
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default _gateway 0.0.0.0 UG 0 0 0 enp1s0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
Para listar as interfaces de rede
$ netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
br-5d551 1500 0 0 0 0 0 0 0 0 BMU
docker0 1500 18345 0 0 0 31716 0 0 0 BMRU
enp1s0 1500 201629 0 0 0 93890 2 0 0 BMRU
lo 65536 7832 0 0 0 7832 0 0 0 LRU
ss
O ss
e o netcat
são muito parecidos e possuiem praticamente as mesmas opções.
lsof
O lsof
lista arquivos abertos no sistema e já que uma conexão na verdade abre um arquivo esse comando se encaixa perfeitamente tambem para listar conexões abertas
O comando abaixo mostra as conexões abertas
$ lsof -i
Conexões abertas na porta 22
$ lsof -i :22
Conexões abertas no ip 127.0.0.1 na porta 22
$ lsof -i @127.0.0.1:22
ping, ping6
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel euismod velit, egestas congue tortor. Nulla erat dui, elementum et erat vitae, consequat mattis ipsum. Vivamus a sapien urna. Pellentesque porta malesuada nibh, vitae efficitur erat pretium vitae.
nc ou netcat
Comando utilizado para testar conexões em determinadas portas. Podemos utilizar no nc
para testar se a porta 22
esta aberta para conexões dessa forma:
$ nc 127.0.0.1 80
SSH-2.0-OpenSSH_7.9p1 Debian-1+dde
É possivel tambem testar um intervalo de portas de um determinado host. No exemplo abaixo vamos utilizar as opções -vz
o v
é de verbose e o z
apenas verifica se a porta esta aberta e não realiza a conexão, sem essa opção o nc iria se conectar.
$ nc -vz 127.0.0.1 19-23
nc: connect to 127.0.0.1 port 19 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 20 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 21 (tcp) failed: Connection refused
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused
Podemos abrir portas em nosso host. No exemplo abaixo vamos abrir a porta 123
$ nc -l -p 123
De outro host podemos testar se essa porta esta de fato aberta e ate mesmo se conectar por essa porta e trocar mensagens.
Vamos se conectar na porta
$ nc 127.0.0.01 123
Podemos trocar mensagens simplemente digitando um texto e presinando enter no final.
Todos esses comandos são importantes para testar conexões dentro de redes com firewalls e outros vatores que podem dificultar essas conexões.
tcpdump
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel euismod velit, egestas congue tortor. Nulla erat dui, elementum et erat vitae, consequat mattis ipsum. Vivamus a sapien urna. Pellentesque porta malesuada nibh, vitae efficitur erat pretium vitae.
nmap
Lista prtas abertas
$ nmap 127.0.0.1
Lista portas abertas de forma forçada
$ nmap -Pn 127.0.0.1