Primeiramente, configure a rede do servidor e digite o comando sudo ifconfig
, daí veremos o IP obtido vi DHCP.
Como o DNS precisa ter um IP fixo, devemos editar o arquivo de configuração, digitando sudo vim /etc/network/interfaces
, digite i para entrar no modo de inserção e escreva abaixo esse código:
auto eth0
iface eth0 inet static
address 192.168.1.200
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
PS: Substitua eth0 pelo nome de sua interface.
Para editar o arquivo de hosts, digite sudo vim /etc/hosts
e adicione essas entradas:
192.168.1.200 Ubuntu-32.exemplodedominio.net Ubuntu-32
PS: Esse endereço é o nome da máquina (pego depois do arroba no terminal), seguido de um nome de domínio qualquer.
Para ver o nome da máquina, digite o comando hostname
(podemos editar o arquivo /etc/hostname para mudar o nome da máquina).
Dê um ping no Google, ele não conseguirá acessar a internet, por isso iremos editar o arquivo do resolvedor DNS (sudo vim /etc/resolv.conf
) e digitamos isso:
nameserver 8.8.8.8
PS: Esse é o servidor DNS do Google, existem vários que podemos usar. Tente dar um ping num site agora.
Instale o programa Bind digitando sudo apt-get install bind9
. Para ver se ele está rodando após instalar digite sudo /etc/init.d/bind9 status
, depois vá na pasta /etc/bind e dê um ls nele.
Agora digite sudo vim /etc/bind/named.conf.local
para editar o arquivo que iremos usar para adicionar as zonas DNS, entre no modo de inserção e digite isso:
// Zona de pesquisa direta:
zone "exemplodedominio.net" {
type master;
file "/etc/bind/db.exemplodedominio.net";
};
// Zona de pesquisa reversa
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};
Esses arquivos em file são arquivos novos que serão criados, cuidado com as chaves e os pontos e vírgula. O nome da zona é o endereço IP de rede ao contrário (não confundir com o IP da máquina).
Edite o arquivo de opções digitando sudo vim /etc/bind/named.conf.options
, e procure em forwarders, tire os comentários (as barras //) e deixe dessa forma:
forwarders {
192.168.1.1;
8.8.8.8;
};
PS: O IP ali é o IP do roteador e o DNS do provedor.
Copie os arquivos digitando cd /etc/bind
, sudo cp db.local db.exemplodedominio.net
e sudo cp db.127 db.192
.
Vamos editar os arquivos copiados, o primeiro é digitando sudo vim /etc/bind/db.exemplodedominio.net
, deixando dessa forma:
@ IN SOA Ubuntu-32.exemplodedominio.net. root.exemplodedominio.net. (
100 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TLL
;
exemplodedominio.net. IN NS Ubuntu-32.exemplodedominio.net.
exemplodedominio.net. IN A 192.168.1.200
;@ IN A 127.0.0.1
;@ IN AAAA ::1
Ubuntu-32 IN A 192.168.1.200
roteador IN A 192.168.1.1
vendas IN A 192.168.1.50
www IN CNAME exemplodedominio.net.
Agora edite o outro arquivo digitando sudo vim /etc/bind/db.192
e deixe ele assim:
@ IN SOA Ubuntu-32.exemplodedominio.net. root.exemplodedominio.net. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TLL
;
IN NS Ubuntu-32.
1 IN PTR roteador.exemplodedominio.net.
50 IN PTR vendas.exemplodedominio.net.
200 IN PTR Ubuntu-32.exemplodedominio.net.
Reinicie o Bind digitando sudo /etc/init.d/bind9 restart
, e verificaremos os arquivos de zona digitando named-checkzone exemplodedominio.net /etc/bind/db.exemplodedominio.net
e named-checkzone exemplodedominio.net /etc/bind/db.192
. Reinicie a máquina.
Após reiniciar, digite cat /etc/resolv.conf
para ver este arquivo. Para testar digite host -l exemplodedominio.net
. Digite nslookup exemplodedominio.net
e dig exemplodedominio.net
, faça o mesmo com o IP, digitando host 192.168.1.50
e dê um ping digitando ping vendas.exemplodedominio.net
.
Para testar o encaminhador, digite primeiramente o ping num site qualquer da internete veja se ele responde.
Ná máquina cliente, edite o arquivo de configuração digitando sudo vim /etc/resolv.conf
e deixe ele desse jeito:
nameserver 192.168.1.200
search exemplodedominio.net
Dê um ping na máquina, digitando ping Ubuntu-32
. Podemos também pingar o vendas, digitando ping vendas
e ver isso também num site da internet.
O TCPDump é uma excelente ferramenta para realizar captura e análise de pacotes de rede, recomendada para profissionais que precisem realizar monitoramento e manutenção em uma rede de computadores, além de estudantes que queiram entender a fundo o funcionamento da pilha de protocolos TCP/IP.
O TCPDump, que é software livre, roda na linha de comandos, estando disponível em diversos sistemas operacionais, como Linux, BSD, OS X, AIX e outros. Ele faz uso da biblioteca libpcap para realizar a captura de pacotes, e existe uma versão da ferramenta para Windows, chamada de WinDump, que usa a biblioteca WinPcap. Neste artigo vamos nos focar no tcpdump em si, usando para isso um sistema Linux (Ubuntu; qualquer outro sistema Linux irá servir para testar os exemplos mostrados).
Para instalar o TCPDump no Ubuntu Linux, ou em sistemas baseados em Debian, use o comando sudo apt-get install tcpdump
. Para ver as opções dele digite o help dele.
Podemos por exemplo, capturar somente o tráfego a partir da interface eth0 digitando sudo tcpdump -i eth0
. Gravar os pacotes capturados em um arquivo de nome captura.pcap digitando sudo tcpdump -w captura.pcap
. Ler os pacotes capturados a partir do arquivo captura.pcap digitando sudo tcpdump -r captura.pcap
. Capturar somente o tráfego associado ao protocolo ICMP, na interface eth0 digitando sudo tcpdump -i eth0 icmp
. Capturar somente o tráfego associado ao protocolo ARP, na interface eth0 digitando sudo tcpdump -i eth0 arp
. Capturar somente 50 pacotes a partir da interface eth0 digitando sudo tcpdump -c 50 -i eth0
. Podemos também mostrar os pacotes capturados tanto em ASCII quanto em HEX, incluindo cabeçalho Ethernet digitando sudo tcpdump -XX -i eth0
. Capturar pacotes mostrando IPs em vez de nome digitando sudo tcpdump -n -i eth0
. Capturar somente pacotes maiores que 100 bytes: digitando sudo tcpdump -i eth0 greater 100
, neste exemplo, se emitirmos um comando ping a partir de outra janela de terminal, os pacotes não serão capturados, pois são menores que 100 bytes.
Capturar somente pacotes destinados à porta 53 digitando sudo tcpdump -i eth0 port 53
, para testar, abrimos um navegador e acessamos uma página qualquer da Web. Usando filtros de condições: Capturar pacotes que usam o protocolo e cujo endereço de destino seja 64.233.186.121 digitando sudo tcpdump -i eth0 dst 64.233.186.121 and icmp
, para testar, abrimos outra janela de terminal e emitimos o comando ping para vários endereços; somente serão capturados pacotes ao ser usado o endereço discriminado no comando. Se abrirmos um navegador e tentarmos acessar esse mesmo endereço (ou o site, www.planetaunix.com.br), os pacotes não serão capturados, por conta do protocolo utilizado (HTTP em vez de ICMP), mostrando que ambas as condições (AND) precisam ser satisfeitas para que essa captura tenha efeito. Capturar somente os pacotes ICMP Echo Request enviados pelo programa ping da máquina local, cujo IP é 192.168.1.105, para um endereço remoto, como 8.8.8.8 digitando sudo tcpdump -i eth0 icmp and src 192.168.1.105 and dst 8.8.8.8
.
Existem diversas outras opções e funcionalidades disponíveis no utilitário, e recomendamos uma leitura minuciosa das páginas de manual do tcpdump para aprofundar seus conhecimentos a respeito.
Outras ferramentas muito utilizadas para captura e análise de pacotes são o Wireshark, tshark, WinDump, Ettercap e NGrep, entre outras.
Os RFCs são publicações que documentam os padrões e protocolos oficiais da internet, são gerenciados pelo IETF (Internet Engineering Task Force). Podem conter de uma página à várias centenas de páginas de informações sobre um padrão.
Eles são identificados por um número, que é atribuído sequencialmente a cada novo RFC publicado. Se um padrão necessitar de atualização, então um novo RFC será gerado com as revisões necessárias. O processo de padronização de um RFC é documentado pelo RFC 2026.
A cada RFC é atribuído um status que diz respeito ao processo de padronização:
E dentro das trilhas de padrões, temos esses:
Todos os RFCs podem ser consultados gratuitamente na internet.
O repositório de RFCs é esse: https://www.rfc-editor.org/
Podemos buscar as RFCs por nome, palavra-chave, autor ou número nesse site.
No search do site (escolha a opção Advance), você pode pesquisar o RFC, informando o número do RFC ou uma palavra-chave qualquer. Também tem opções de filtro ao lado, como qualquer outro site de pesquisa.
Vamos pelo mais comum, pesquisando por palavra-chave, no exemplo, pesquisaremos ICMP.
Ali aparece informações como status, download em PDF, se ele está obsoleto, etc.
Veja alguns exemplos de RFCs:
Padrão/Protocolo | Número do RFC |
---|---|
ARP | 826 |
DHCP | 2131 |
DNS | 1034 e 1035 |
FTP | 959 |
HTTP | 1945 |
ICMP | 792 |
IP | 791 |
IPv6 | 2460 |
MD5 | 1321 |
SSH | 4251 |
TCP | 793 |
UDP | 768 |
Existe um limite de tamanho de dados de uma rede que define a quantidade de bytes que pode ser transmitidos dentro de um quadro. Pro padrão Ethernet, o limite de unidade máxima de trasmissão é de 1500 bytes (existe em outros padrões também). É uma característica da camada de enlace conhecida como MTU.
Quando um datagrama a ser enviado em uma rede for maior do que o MTU da camada de enlace, o protocolo IP realizará a fragmentação dos dados, quebrando o datagrama em pedaços menores, chamados de fragmentos, cada um com tamanho menor do que o MTU.
Veja abaixo uns MTUs típicos:
Rede | MTU (em bytes) |
---|---|
Hyperchannel | 65535 |
WLAN 802.11 | 7981 |
Quadros Jumbo Ethernet | 1501 - 9198 |
Tonken Ring 802.5 | 4464 |
FDDI | 4352 |
Ethernet | 1500 |
IEEE 802.3/802.2 | 1492 |
PPPoE | 1492 |
X.25 | 576 |
Para descobrir o MTU da interface, abrimos o CMD do Windows e digitamos netsh interface ipv4 show subinterfaces
.
O Path MTU (MTU do Caminho) é sobre o maior valor de MTU que pode tragegar em uma rede sem que os pacotes sofram fragmentação (esse valor pode mudar).
Para a máquina saber qual a MTU correta à ser utilizada, tem o Path MTU Discovery (Descoberta do MTU de Caminho), para determinar o caminho MTU ideal entre dois hosts IP para evitar a fragmentação dos datagramas IP. Uma das formas é ligar o bit DF (Don't Fragment) do cabeçalho IP dos datagramas transmitidos. Ou a mensagem ICMP (destino inalcançável, tamanho muito grande).
Para testar o MTU, usamos o Ping (no CMD) com as opções /l tamanho-pacote
, que permite ajustar o tamanho (payload) do pacote enviado pelo ping para o valor "tamanho-pacote". E o /f
, que habilita o bit DF no pacote transmitido (impedindo a fragmentação do mesmo).
Vamos exemplificar, executando no prompt o comando netsh interface ipv4 show subinterfaces
. Se for o caso, coloque ipv6 no lugar.
Agora dê um ping num site qualquer (por exemplo ping bosontreinamentos.com.br
)
Agora faça o mesmo, com a opção /l 1500
, no caso, ping /l 1500 bosontreinamentos.com.br
(ou outro número, esse número é a quantidade de bytes enviados, que pode ser até 65500, o padrão é 32). Se estiver em Linux, use o parâmetro -s
.
O MTU típico é de 1500, como já vimos, mas a transmissão pode ser feita com outro número maior, como 8500, nesse caso os pacotes serão fragmentados.
Ao colocar o /f
, antes do site, ele não fragmentará os pacotes, o que pode dar erro em tamanhos maiores. Como por exemplo, ping /l 1500 /f bosontreinamentos.com.br
Pode ser traduzido como "portão de entrada". O gateway pode ser um PC com duas (ou mais) placas de rede, ou um dispositivo dedicado, utilizado para unir duas redes (como por exemplo, um roteador, ou geralmente um dispositivo que une as funções de modem e roteador podendo ter também um switch integrado e um access point). Existem vários usos possíveis, desde interligar duas redes que utilizam protocolos diferentes, até compartilhar a conexão com a internet entre várias estações.
O endereço do gateway deve ser informado nas propriedades de rede, mas numa rede onde as estações estão configuradas para obter seus endereços automaticamente é possível configurar o servidor DHCP para enviar o endereço do gateway automaticamente. A estação enviará ao gateway qualquer requisição de endereço que não faça parte da rede local.
A princípio, isso permitiria que apenas um micro acessasse a web, mas é possível compartilhar a conexão entre vários micros via NAT, opção disponível tanto no Windows quanto no Linux. Quando você compartilha a conexão entre vários micros, apenas o servidor que está compartilhando a conexão possui um endereço IP válido, só ele "existe" na internet. Todos os demais acessam através dele.
O default gateway ou gateway padrão é justamente o micro da rede que tem a conexão, é ele que os outros consultarão quando precisarem acessar qualquer coisa na internet. Por exemplo, se você montar uma rede doméstica com 4 PCs, usando os endereços IP 192.168.0.1
, 192.168.0.2
, 192.168.0.3
e 192.168.0.4
, e o PC 192.168.0.1
estiver compartilhando o acesso à internet, as outras três estações deverão ser configuradas para utilizar o endereço 192.168.0.1
como gateway padrão.
O gateway pode ter funções específicas nas redes, dependendo do planejamento do administrador de redes. Entre elas, podemos destacar: