Archive for June 2010

nc

June 4, 2010

A ferramenta nc é um ótimo quebra-galho. Quando você precisa testar o link entre dois hosts e não quer subir um serviço adequado, você pode simplesmente testá-lo com o netcat. Com ele é possível criar tanto servidores como clientes TCP ou UDP! Para um melhor entendimento, teste em um dos hosts criar um servidor TCP ouvindo na porta 5000:

$ nc -l 5000

E, então, conecte-se à esse host através de outra máquina com o comando:

$ nc <IP host servidor> 5000

Se você fez a parte de redes corretamente, o cliente vai conectar-se e tudo o que ele receber na entrada padrão vai ser escrita na saída padrão do servidor (e vice-versa) ^^

Para testar uma troca de mensagens UDP, você deve adicionar o parâmetro -u em ambos comandos.

Ah, com essa ferramenta também é possível enviar arquivos pela rede! Primeiro abra o servidor redirecionando a saída padrão para um arquivo, da seguinte maneira:

$ nc -l 5000 > /tmp/arquivo

E, então, crie o cliente enviando um arquivo para entrada padrão do netcat:

$ cat /bin/bash | nc <IP host servidor> 5000

Com isso foi enviado a ferramenta bash para o host servidor 🙂

É uma boa alternativa para envio de arquivos sem SSH, não! hehehe

TODO: benchmarking SSH vs. NC

Referência: man nc

Ouvindo: Moby – Spirit

Advertisements

tcpdump

June 4, 2010

O tcpdump é uma ferramenta que ajuda muito no dia-a-dia de um administrador de rede. Com ele é possível verificar todo o fluxo de datagramas na rede.

Existem outras ferramentas que desempenham papel semelhante como o wireshark, porém é necessário um X para executá-lo. Por isso acho bem mais importante enteder o tcpdump (além de ser nativo na maioria das distribuições *unix e bsd).

Para executá-lo é preciso ser super usuário. O primeiro comando, para começar, é somente para ver os pacotes na interface eth0:

# tcpdump -vvni eth0

Aqui usamos os parâmetros -vv para um nível bom de verbose (aceita até 3 níveis de verbose), -n para não traduzir IP -> nomes, e -i <interface> sendo a interface que você deseja ouvir. Muitas vezes é preciso filtrar o conteúdo que se deseja ouvir:

# tcpdump -vvni eth0 not port 22

Com isso excluímos a porta 22 (SSH) do filtro.

# tcpdump -vvni eth0 not ip multicast and not port ‘( 22 or 23 )’ and src net 192.168.1.0/24

Aqui foi usado um filtro bem mais avançado, com três limitações: sem pacotes para redes multicast, sem as portas 22 e 23 (telnet) e o pacote tem que ser de uma fonte na rede 192.168.1.0/24.

Para um melhor entendimento das respostas do tcpdump eu recomendo um estudo nas camadas de enlace/rede/transporte de algum livro teórico, como os famosos Kurose ou Tanenbaum.

Referência: man tcpdump; Tanembaum, Andrew S. – Computer Networks; Kurose / Ross – Computer Networking

Ouvindo: Moby – Sunday