Alexander Franca wrote:
eth0 -> 192.168.0.1 => rede interna eth1 -> sem ip => para o velox eth2 -> 200.x.x.x => ip fixo ppp0-> 202.x.x.x => ip do velox
Alexander,
roteamento �, por defini��o, baseado no destino do pacote. Sendo assim, ao final da tabela de roteamento costumamos encontrar uma rota para 0.0.0.0/0 (ou seja, qualquer lugar) direcionando o tr�fego para algum roteador que ser� uma "porta" para o resto do mundo (ou seja, o que n�o pertencer � nossa rede local).
O que voc� quer fazer � rotear determinados pacotes pela origem. Isto �, o que VIER da eth2 para 0.0.0.0/0 dever� usar um gw, e o que VIER da eth0 para 0.0.0.0/0 dever� usar outro gw. Note que nos dois casos o destino � igual, portanto o roteamento tradicional n�o permite que seu problema seja resolvido.
Desde o kernel 2.2, o netfilter (nome dado ao sub-sistema de redes do kernel) foi totalmente remodelado, incluindo suporte a novos conceitos de rede.
Um desses novos conceitos � a pol�tica de roteamento e funciona similarmente a um firewall, analisando dados do pacote e escolhendo ent�o o que fazer com ele. A diferen�a � que no caso de um firewall, estamos analisando o pacote para decidir se ele ser� descartado, ter� a passagem permitida, ter algum endere�o traduzido, etc... Enquanto que a pol�tica de roteamento analisa o pacote para determinar qual tabela de roteamento dever� ser usada para ele.
Para seguir os passos que irei demonstrar a seguir, voc� precisar� portanto que esse c�digo mais novo esteja habilitado em seu kernel (o slackware 9.1 por exemplo vem com ele desligado, j� o slackware 10 acompanha ele por padr�o) e precisar� do pacote iproute2 instalado apropriadamente (al�m do iptables � claro).
Definimos duas tabelas de roteamento (elas s�o "batizadas" em /etc/iproute2/rt_tables, quando voc� define um nome para um valor qualquer entre 0 e 255). O valor � apenas um identificador, portanto 10, 50 ou 100 n�o fazem a menor diferen�a. Usaremos aqui os nomes "Velox" e "Internet".
Seu arquivo ficar� mais ou menos assim:
#
# reserved values
#
255 local
254 main
253 default
#0 unspec
#
# local
#
10 Internet
20 VeloxCom essas duas tabelas definidas, vamos configurar cada uma delas com uma �nica rota default para cada um dos nossos gateways:
# ip route add default via <GATEWAY> table Internet
# ip route add default dev ppp0 table VeloxNote que no caso do Velox eu n�o atribu� um gateway, ao inv�s disso, dizemos que todos os pacotes devem ser entregues � interface. Isso resolve o problema em links din�micos nos quais o IP do gateway muda a cada conex�o, mas requer que haja suporte a ARP-bridge ativo no roteador da outra ponta (links PPP, que � o caso do Velox, normalmente possuem esse tipo de funcionalidade). Vale lembrar tamb�m que esta rota deve ser configurada apenas depois que o link ppp0 estiver estabelecido, ou ela ir� falhar por n�o existir o dispositivo ppp0.
Se voc� puder trocar seu modem adsl por um roteador adsl (mesmo que seja fazendo um update por firmware) esse "contorno" de problema n�o ser� necess�rio, pois voc� poder� especificar o IP da LAN do seu roteador.
Depois de definidas as tabelas, vamos definir regras. Digitando "ip rule list" voc� dever� encontrar algo do tipo:
0: from all lookup local
32766: from all lookup main
32767: from all lookup defaultIsso diz que todos os pacotes devem consultar as tabelas pr�-definidas local, main e default. Esses n�meros � esquerda correspodem � ordem na qual cada linha ser� verificada.
Vamos inserir portanto duas regras antes da sua tabela main:
ip rule add from 192.168.0.33 pref 100 table Internet
ip rule add from 0/0 pref 200 table VeloxAp�s essas altera��es, o comando "ip rule list" dever� exibir o seguinte:
0: from all lookup local
100: from 192.168.0.0/24 lookup Internet
200: from all lookup Velox
32766: from all lookup main
32767: from all lookup defaultAgora basta configurar o Destination NAT:
iptables -t nat -A PREROUTING -d <ip fixo> -j DNAT --to 192.168.0.33
E o Source NAT:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to <ip fixo>Note que a segunda regra de NAT � necess�ria apenas caso voc� deseje usar a conex�o de internet do "ISP Fixo" no webserver, pois todo o tr�fego que chegar no servidor Web j� ter� passado pela regra do PREROUTING e como o firewall do linux � stateful, todos os pacotes subsequentes desta conex�o ser�o traduzidos adequademente no fundo sem que voc� veja. Configurar o POSTROUTING s� faz sentido caso voc� queira iniciar novas conex�es no sentido Webserver->Internet (o que � uma boa id�ia). Para as conex�es Internet->Webserver apenas o PREROUTING � suficiente.
Talvez seja preciso que voc� fa�a algum ajuste, mas aqui cont�m material suficiente para que voc� comece a brincar com o roteamento avan�ado do Linux que � show de bola! ;)
Para mais informa��es acesse http://www.lartc.org/.
H� tamb�m um texto do bolinho com um cen�rio parecido (mas neste caso com balanceamento de links ADSL) na p�gina do Linux-ES (Grupo de Usu�rio de Linux do Esp�rito Santo) mas ela est� com alguns probleminhas no momento, rapidamente ser� resolvido: http://www.linux-es.org.br/
Abra�os,
Eduardo M. Bragatto.-- GUS-BR - Grupo de Usuarios Slackware - BR http://www.slackwarebrasil.org/ http://www.linuxmag.com.br/mailman/listinfo/slack-users

