[Ubuntu-BR] Dúvida com Roteamento para a VPN
Daniel Bastos
dbastos+0 em toledo.com
Segunda Agosto 17 18:36:46 UTC 2009
In article <841DFE97ADB72746BFA745E6844B7E62056BE7 em kont-mail.kontact.com.br>,
Gustavo Tadeu wrote:
> Eu não sei como fasso esse roteamento, nunca fiz rotas no Linux.
> Alguém poderia me dar uma Luz?
O que você precisa é realmente de uma luz, porque só alguém que de
fato tem acesso à informação que você tem (e é capaz de verificar a
veracidade dela) pode saber exatamente o que você precisa. Isto é,
esse nem é um caso onde alguém possa te dar o peixe, sem o
conhecimento.
O roteamento de um sistema é uma tabela que lista, essencialmente,
padrões de endereços e seus destinos. Você pode ver a tabela
solicitando ao netstat; diga -r.
%netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
77.250.91.0 * 255.255.255.0 U 0 0 0 eth0
172.16.31.0 * 255.255.255.0 U 0 0 0 if0
default my.gateway.com 0.0.0.0 UG 0 0 0 eth0
Meu endereço é 77.250.91.80. Logo, pertence à rede 77.250.91. Quando
envio um dado para um computador na mesma rede (e isso é determinado
pelo netmask), então o kernel sabe que deve entregar o pacote à
interface eth0 pois o pacote casa com a primeira regra da tabela.
Se o computador, o qual que envio dados, não pertencer a esta rede,
então o kernel verifica a próxima regra, que é a linha do meio na
tabela. Se eu digo ``ping 172.16.31.4'' então este pedido casa com a
linha do meio, e o kernel entrega o pacote à eth1.
Se não for nenhuma das duas, o kernel entrega o pacote ao computador
cujo endereço é aquele que o nome my.gateway.com representa. Ou seja,
a palavra ``default'' casa com qualquer destino, o netmask 0.0.0.0
representa a Internet inteira.
Quando o pacote chegar em my.gateway.com, esse computador saberá
(espera-se) o que fazer com o dado, e o processo lá é essencialmente o
mesmo.
Dê uma olhada nos flags. A letra U significa ``Up.'' A rota é
atualmente válida. Pode usar. A letra ``G'' significa gateway; alguém
que pode te ajudar a atingir o seu destino.
O símbolo '*' na segunda coluna, significa que a rota ali é direta; ou
seja, não passará por um gateway. Se, ao invés de *, vemos um endereço
qualquer, então é porque dispachamos a ordem para alguém com mais
conhecimento sobre outras partes da rede.
Se você deseja alterar esta tabela do kernel, você pode pedir ao
programa route. Diga algo como add <regra> <responsável>. Exemplo.
# route add 1.2.3.4 gw 172.16.31.150
A regra é que qualquer pacote que vá 1.2.3.4 deve ser entrega ao
gateway 172.16.31.150. Nesse caso, a regra é especifica a um certo
computador; aquele cujo endereço é 1.2.3.4. A regra poderia ser uma
rede, com um netmask a ser considerado.
%netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
1.2.3.4 dsd1 255.255.255.255 UGH 0 0 0 if0
(...)
%ping dsd1
PING dsd1 (172.16.31.150) 56(84) bytes of data.
64 bytes from dsd1 (172.16.31.150): icmp_seq=1 ttl=255 time=0.367 ms
(...)
Aquele gateway vem a ter um nome; dsd1. Se eu enviar algum dado para
1.2.3.4 agora, o dsd1 deverá recebê-la.
%ping -c 1 1.2.3.4
PING 1.2.3.4 (1.2.3.4) 56(84) bytes of data.
--- 1.2.3.4 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
O dsd1 resolveu ignorar meu pedido. Mas ele recebeu o pacote, e é isso
que importa.
# hostname
dsd1
# tcpdump -i if0 'dst host 1.2.3.4'
tcpdump: listening on if0, link-type EN10MB
07:44:36.582647 172.16.31.1 > 1.2.3.4: icmp: echo request (DF)
(...)
O computador 172.16.31.1 é o mesmo que 77.250.91.80; o dono das
tabelas acima. Ou seja, o pacote vem dele.
(*) Informação
Os manuais do openbsd são educacionais. Mas um mero manual não te
instrui muito facilmente. Existem livros sobre o assunto, de um ponto
de vista UNIX, o que pode ser interessante. Por exemplo, UNIX Network
Programming, por W. Richard Stevens.
More information about the ubuntu-br
mailing list