In article <[email protected]>, 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. -- Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece Lista de discussão Ubuntu Brasil Histórico, descadastramento e outras opções: https://lists.ubuntu.com/mailman/listinfo/ubuntu-br

