Entendendo TCP/IP (parte 2) - Endereços IP

Esse é o segundo artigo sobre TCP/IP que escrevo. No primeiro falei sobre a camada física TCP. Neste
artigo eu explico a camada de rede. O que são endereços IP, para que serve e como calcular a
máscara de sub-rede, endereços válidos e inválidos, roteamento. O objetivo é ensinar os conceitos,
mostrar os comandos mais comuns, e os arquivos de configuração envolvidos na configuração da rede.

[ Hits: 91.108 ]

Por: Ricardo Lino Olonca em 01/04/2011


Roteamento



Por padrão, quando uma máquina vai acessar outra, ela primeiro verifica se a máquina destino está localizada na mesma rede. Para isso, ela verifica o IP de destino e compara com a sua máscara. Sendo da mesma rede, o pacote simplesmente é entregue. Não sendo da mesma rede, deverá haver algum computador que possa entregar esse pacote ao destino. Esse computador é o roteador.

Numa rede tradicional, só há um único roteador, chamado de "Default Gateway". Ele é o responsável por entregar pacotes de dados entre redes.

Para adicionar o default gateway, adicione a seguinte linha em seu arquivo /etc/networks/interfaces:

gateway 172.20.1.21

Reinicie a interface de rede com o comando:

# /etc/init.d/networking restart

Para checarmos se o roteamento foi carregado, podemos usar o comando:

# netstat -nr
Tabela de Roteamento IP do Kernel
Destino         Roteador        MáscaraGen.    Opções   MSS Janela  irtt Iface
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
172.20.0.0      0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         172.20.1.21     0.0.0.0         UG        0 0          0 eth0

Repare na linha que começa com 0.0.0.0. Ela me informa quem é o meu roteador padrão.

Roteamento nada mais é do que fazer com que um pacote de uma rede seja transportado para outra rede.

Um comando muito usado para fazer análise de rede é o traceroute. Com ele podemos ver por quais roteadores os dados estão passando para chegar até o destino. Por exemplo, fazendo o traceroute para o site www.vivaolinux.com.br temos o seguinte:

# traceroute www.vivaolinux.com.br
traceroute to www.vivaolinux.com.br (174.123.53.162), 30 hops max, 60 byte packets
1 172.20.1.21 (172.20.1.21) 1.122 ms 4.584 ms 0.830 ms
2 200.136.27.1 (200.136.27.1) 49.806 ms 49.808 ms 49.788 ms
3 ansp.ptta.ansp.br (200.136.37.1) 49.777 ms 49.766 ms 50.006 ms
4 198.32.252.141 (198.32.252.141) 148.155 ms 152.237 ms 154.813 ms
5 66.165.175.25 (66.165.175.25) 158.202 ms 161.649 ms 164.656 ms
6 t0-0-0-5.br2.mia.terremark.net (66.165.161.93) 205.924 ms 209.005 ms 164.085 ms
7 t0-7-0-1.br2.dfw3.terremark.net (66.165.161.230) 164.012 ms 173.333 ms 175.071 ms
8 g0-5-0-1.br1.dfw3.terremark.net (66.165.161.237) 168.156 ms 180.725 ms 182.899 ms
9 66.165.161.34 (66.165.161.34) 185.315 ms 188.295 ms 193.043 ms
10 g1-10.br2.dfw.terremark.net (66.165.160.250) 196.598 ms 200.248 ms 203.536 ms
11 ge-8-35.car1.Dallas1.Level3.net (4.59.113.109) 207.215 ms 210.249 ms 212.392 ms
12 vlan90.csw4.Dallas1.Level3.net (4.69.145.254) 217.860 ms 163.922 ms 164.278 ms
13 ae-91-91.ebr1.Dallas1.Level3.net (4.69.151.162) 168.333 ms 170.610 ms 174.902 ms
14 ae-1-13.bar1.Houston1.Level3.net (4.69.137.137) 184.746 ms 198.413 ms 198.404 ms
15 ae-0-11.bar2.Houston1.Level3.net (4.69.137.134) 198.391 ms 198.379 ms 198.693 ms
16 THE-PLANET.bar2.Houston1.Level3.net (4.78.10.30) 202.628 ms 205.404 ms 208.518 ms
17 te2-1.dsr02.hstntx1.networklayer.com (207.218.223.34) 213.510 ms te2-1.dsr01.hstntx1.networklayer.com (207.218.223.26) 217.835 ms te2-2.dsr01.hstntx1.networklayer.com (207.218.223.30) 219.290 ms
18 po15.dsr01.hstntx2.networklayer.com (70.87.253.109) 168.848 ms po16.dsr01.hstntx2.networklayer.com (70.87.253.101) 168.758 ms 169.809 ms
19 po2.car06.hstntx2.networklayer.com (74.55.252.114) 173.225 ms p01.car06.hstntx2.networklayer.com (74.55.252.82) 177.266 ms po2.car06.hstntx2.networklayer.com (74.55.252.114) 180.041 ms
20 sunshine.vivaolinux.com.br (174.123.53.162) 186.687 ms 186.678 ms 190.524 ms


Neste exemplo, podemos notar que o pacote passou por 19 roteadores até chegar ao servidor do vivaolinux. Repare também o tempo gasto, em milissegundos, para o pacote de dados chegar até cada um dos roteadores. Um tempo muito alto pode indicar problemas neste segmento de rede.

Mas o que acontece quando temos mais do que um roteador? Por exemplo, se eu tiver na minha rede um link com a Internet, e outro link com uma filial?
Neste caso, devemos criar uma rota estática, informando que para chegarmos a rede 172.21.0.0/16 devemos enviar o pacote para o roteador 172.20.1.2. Para fazer isso, utilizamos o comando:

# route add -net 172.21.0.0 netmask 255.255.0.0 gw 172.20.1.2

Vendo a tabela de roteamento, temos agora:

# netstat -nr
Tabela de Roteamento IP do Kernel
Destino         Roteador        MáscaraGen.    Opções   MSS Janela  irtt Iface
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
172.20.0.0      0.0.0.0         255.255.0.0     U         0 0          0 eth0
172.21.0.0      172.20.1.2      255.255.0.0     UG        0 0          0 eth0
0.0.0.0         172.20.1.21     0.0.0.0         UG        0 0          0 eth0

Agora podemos ver que os dados destinados a rede 172.21.0.0 serão encaminhados para o gateway 172.20.1.2. Os demais pacotes serão encaminhados para o default gateway.

Para excluir o roteamento, utilize:

# route delete -net 172.21.0.0 netmask 255.255.0.0

Para exemplificar melhor como o TCP/IP trabalha, vamos analisar os pacotes um a um através do tcpdump, um sniffer de rede, a fazer um ping para o site www.vivaolinux.com.br.

1-14:38:19.235549 ARP, Request who-has 192.168.56.1 tell 192.168.56.101, length 28
2-14:38:19.235862 ARP, Reply 192.168.56.1 is-at 0a:00:27:00:00:00, length 46
3-14:38:31.588405 IP 192.168.56.101.39553 > 172.20.1.6.53: 53830+ A? www.vivaolinux.com.br. (39)
4-14:38:31.589123 IP 172.20.1.6.53 > 192.168.56.101.39553: 53830 2/0/0 CNAME vivaolinux.com.br., A 174.123.53.162 (69)
5-14:38:31.589938 IP 192.168.56.101 > 174.123.53.162: ICMP echo request, id 3178, seq 1, length 64
6-14:38:31.759049 IP 174.123.53.162 > 192.168.56.101: ICMP echo reply, id 3178, seq 1, length 64


Primeiramente minha estação fez um broacast (linha 1) perguntando o mac address do roteador, que respondeu (linha 2). A estação armazenou o mac do roteador em sua tabela arp, e fez uma solicitação ao dns perguntando o IP do site www.vivaolinux.com.br (linha 3). O dns respondeu (linha 4) e a estação armazenou essa informação em seu cache dns. A estação consultou novamente sua tabela arp para encontrar o mac do roteador, e enviou um pacote icmp (ping) para o site (linha 5) e este respondeu (linha 6).

Para mais informações sobre o uso do traceroute, netstat e tcpdump, veja a página de manual dos respectivos comandos.

Em uma rede muito grande, configurar a manter os endereços IP's manualmente gera vários problemas de conflito. Para resolver isso existe o Dhcp, tema do meu próximo tutorial, onde veremos como montar várias ranges para várias redes, como utilizar o relay, e como montar um cluster para dhcp.

Até a próxima.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução - Por que usar endereços IP?
   2. Problemas do IP
   3. Endereços inválidos
   4. Máscara de sub-rede
   5. Endereços de rede e de broadcast
   6. Configurando a rede no Linux
   7. Roteamento
   8. Considerações finais
Outros artigos deste autor

Entendendo TCP/IP (Parte 5) - Portas TCP/UDP

Deduplicação com LessFS

Entendendo o TCP/IP

O fim está próximo

Entendendo TCP/IP (Parte 6) - Firewall

Leitura recomendada

Fedora Core 1 :: Starter Kit

Linux Terminal Server - LTS

Configuração de impressora Lexmark Z25-35

Instalação e configuração do gdesklets no Slackware 10

Sabayon 5.0 - Transformando Sabayon 4.0r1 em Sabayon 5.0 "Full" (parte 2)

  
Comentários
[1] Comentário enviado por brunotec em 01/04/2011 - 12:21h

Muito Bom Artigo Ricardo, Parabéns!

Estou iniciando em Redes e esse artigo será uma bela referencia para mim.

se possível gostaria de tirar duas dúvidas que fiquei com elas ao ler seu artigo:


Citação do Artigo
"Numa máscara 255.255.255.240 só teremos 14 endereços disponíveis, ao invés de 16. "

isso seria pq o primeiro endereço de rede e o ultimo para broadcast não poderiam ser usados? não entendi muito bem...

outra dúvida é no arquivo /etc/network/interfaces essa linha: allow-hotplug eth0

nunca cheguei a saber pra que que ela serve afinal.

somente essas dúvidas, mas novamete parabéns pelo artigo cara e pela atitude de querer compartilhar conhecimento que é louvável.

um abraço.

[2] Comentário enviado por ricardoolonca em 01/04/2011 - 12:39h

Bruno, boa tarde.

Todos os endereços de rede e de broadcast são reservados. Eles não podem ser configurados em nenhuma interface de rede.

A linha allow-hotplug eth0 faz com que o Debian detecte e aplique as configurações logo que o cabo é ligado ou desligado.


[3] Comentário enviado por brunotec em 01/04/2011 - 13:12h

entendi,

Gostei muito do seu artigo e foi bastante esclarecedor Ricardo.

Obrigado ai pelo help!

[4] Comentário enviado por julio_hoffimann em 09/04/2011 - 21:41h

Oi Ricardo,

Parabéns pela ótima série! A sua abordagem torna um conteúdo denso em algo mais tangível a pessoas que, como eu, não são da área.

Abraço!

[5] Comentário enviado por elgio em 26/11/2011 - 16:54h

Não é correto chamar estes IPS de inválidos e tampouco de "não roteáveis", como frequentemente vejo por ai.

A palavra certa é IPs privados:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

Entende-se por ips inválidos aqueles que não podem ser usados. Exemplo: o IP de broadcast não pode ser usado, é inválido. O mesmo para o IP de rede. A faixa 0.0.0.0/8 é inválida, pois nenhuma máquina poderá ter este IP, e assim por diante.

Também é errado chamar os IPs privados como não roteáveis. Como assim, não são roteáveis? Eu não posso roteá-los na minha rede local ou dentro da minha VPN? São sim roteáveis.

Ah bom. Eles são inválidos na Internet e não são roteáveis na Internet. Mas por isto que são chamados de privados.

Abraços,

[6] Comentário enviado por ricardoolonca em 30/11/2011 - 16:38h

Olá, elgio.

Você correto. O termo mais correto é "privado" e não "inválidos". Eles são inválidos apenas na Internet.

Quanto ao roteamento, novamente eu me refiro a "não roteável" do ponto de vista da Internet. Em redes locais eles são roteáveis normalmente, podendo ser usados em vlans apartadas, como na Dmz.

As suas observações são ótimas. Ajudam a deixar as coisas mais claras e tiram as dúvidas quanto a esse assunto.

Abraço.

[7] Comentário enviado por MAPOGOS em 02/04/2014 - 17:58h

Agora imagine o que acontece se eu pegar somente 7 bits para rede, ao invés de 8. Logo teremos a seguinte intervalo da rede.

00001010.00000000.00000000.00000000 até 00001011.11111111.11111111.11111111 que, convertendo para decimais é:

10.0.0.0 até 11.255.255.255.

Lebre-se de que somente os sete primeiros bits ficam "fixos". Quando qualquer um dos sete primeiros bits mudar, então o endereço já será de outra rede. Nesse exemplo, tanto os endereços começados com 10 quanto os começados com 11 fazem parte da mesma rede. Essa rede pode ser representada como 10.0.0.0/7.

Onde vc pegou os 7 bits que vc esta falando.Pois eu entendo de xor nor, and nand or exclusivo.Mas não tem nada a ver eu sei;
Ta mas onde estão os 7 bitis que vc tirou...

[8] Comentário enviado por ricardoolonca em 03/04/2014 - 05:35h

Repare nos 7 primeiro bits. Eles estão fixos, ou seja, não variam. Todos os IPs que começam com esses 7 bits são da mesma rede, o 10 e o 11. Como temos 7 bits do IP fixo, os 7 primeiros bits da máscara deve ser 1. Os demais são 0.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts