Salve, F�bio...
Eu estou postando o script que eu usei para dois gateways. Adapte-o para suas necessidades.
Tenha em conta o seguinte:
Meu roteador usa o CL8 com as seguintes caracter�sticas:
ppp0: IP vari�vel, gateway vari�vel (conex�o de internet banda larga)
eth0: 172.16.0.0 - rede local de 100mbps (onde est�o pendurados minhas esta�oes locais wired e o o modem, com pppoe relay - a autentica��o � feita no linux, para facilitar o repasse de portas -tipo e-mule, http e vnc-) eth1: 10.0.0.33, gateway 10.0.0.7 - (conex�o de internet banda m�dia, via r�dio com ip fixo) eth2: 10.10.1.0 - rede local de 11Mps (r�dio 'ad-hoc' local, que eu uso para conectar o notebook e meus HP Jornada) eth3: 192.168.254.0 - rede local de 10Mbps (eu uso para uma segunda conex�o ADSL, mas o login � feito no pr�prio modem -speedlink- e est� fora dessas tabelas que eu estou te passando, pois estou experimentando um balan�o com uma TERCEIRA conex�o). Como ainda estou testando, vou passar o que est� testado e funciona perfeitamente: Ah, sim... acredite se quiser: meu roteador tem 4 dispositivos de rede, � servidor de impress�o, servidor de r�dio, servidor VNC e X e... � um 486 DX4-100 com 32mb de ram... kkkkkkkkkkk
Bem... Aqui est� o script que voc� precisa, jovem padawan:

########## Inicio do script rc.balanco
#!/bin/bash
# Configura roteamento para duas portas [com diferentes classes de IP], cada qual com seu pr�prio gateway.
# Author: Rog�rio Batista Ayres, claro..

## ANTES DE MAIS NADA, Defina duas novas tabelas, incluindo seus nomes
## no rodap� de /etc/iproute2/rt_tables, assim:
## 1 tabela1
## 2 tabela2

# Este script dever� ser rodado no final de rc.local ou
# a) em caso de IP fixo: imediatamente ap�s /etc/rc.d/init.d/network;
# b) em caso de ip din�mico, logo ap�s a conex�o PPPoE
# c) diretamente no prompt (basta dar um chmod 755 nele e copiar para /sbin)

echo
echo "Configurando Portas Ethernet duplas:"
TESTE="`/sbin/ifconfig |grep ppp0`"
#route del default

if [ -x $TESTE ] ; then
echo Ihhhh, caramba... a ADSL n�o est� no ar... vou definir uma rota s� para o r�dio.
  echo Verifique se:
  echo     - o modem est� ligado;
  echo     - os cabos est�o em ordem;
echo - Se a configura��o de repasse de PPPoE (PPPoE Relay) do modem est� ok
  echo     - Se voc� configurou o cliente PPPoE aqui no linux
  echo     - Se voc� comandou o login, seu man�.
echo - Se voc� pagou a conta da companhia telef�nica, seu n�-cego! hehehe.

  route add default gw 10.0.0.7
else

  ######
  # Interface principal (r�dio) em eth1:
  IF0=eth1
  NET0=10.0.0.0   # � a classe de IP da cepain (meu provedor via r�dio)
  IP0=10.0.0.33   # � o meu IP na cepain
  GW0=10.0.0.7    # � o gateway da cepain
  echo "NET0=$NET0"
  echo "IP0=$IP0"
  echo "GW0=$GW0"


  ######
  # Interface secund�ria em ppp0 (Din�mica):
  IF1=ppp0

  # In�cio da parte cr�tica deste script.
NET1="`/sbin/ifconfig ppp0 | /bin/awk \ /ppp0/'{next}//{split($0,a,":");split(a[3],a," ");print a[1];exit}'`" IP1="`/sbin/ifconfig ppp0 | /bin/awk \ /ppp0/'{next}//{split($0,a,":");split(a[2],a," ");print a[1];exit}'`" GW1="`/sbin/ifconfig ppp0 | /bin/awk \ /ppp0/'{next}//{split($0,a,":");split(a[3],a," ");print a[1];exit}'`"
  # A linha acima � equivalente a
  # GW1=`ifconfig ppp0 | grep "inet end." | cut -d: -f3 | cut -d' ' -f1`
# mas no rc.local costuma dar zica causa da tradu��o nas coxas que fizeram no bin�rio do ifconfig

  if [ -x $NET1 ] ; then
# Bem, aqui deve ter dado algo errado. No caso de autoexecu��o em /etc/rc.d/rc.local as linhas acima n�o # fungam. Ent�o, vamos recorrer ao velho e bom GREP e CUT, mas tendo em conta que a resposta ao comando # "ipconfig" na inicializa��o � gerada em ingl�s. Assim, a busca deve ser pela string 'inet addr'.
     # Meu... at� eu descobrir isso eu penei, heim?!
     NET1=`ifconfig ppp0 |grep "inet addr:"|cut -d: -f3 | cut -d' ' -f1`
     IP1=`ifconfig ppp0  |grep "inet addr:"|cut -d: -f2 | cut -d' ' -f1`
     GW1=`ifconfig ppp0  |grep "inet addr:"|cut -d: -f3 | cut -d' ' -f1`
  fi
  ##  final da parte cr�tica deste script.

echo "NET1=$NET1" # � a classe de ip do PPPoE descoberta pelas linhas acima
  echo "IP1=$IP1"   # � o meu IP na PPPoE no momento
  echo "GW1=$GW1"   # � o gateway do PPPoE

  ######
  #testa se o ip do ppp0 � nulo.
  if [ -x $NET1 ] ; then
#Mesmo ap�s todas essas firulas com o bash, o script n�o conseguiu pegar seu IP...
     #A� lascou!! (melhor checar se est� tudo em ordem com o script).
     echo
     echo "Ihhhh, fodeu!!! N�o consegui pegar o IP da conex�o PPPoE."
     echo "Vou criar uma rota default s� para o r�dio."
     Echo "Verifique se est� tudo em ordem com a parte cr�tica do script."
     route add default gw $GW0
  else

     #Load balance... nova abordagem, by Doctor_Roger, obvious.

# Para copiar sua pr�pria tabela, copie a tabela 'main', que naturalmente j� existe
     # no seu sistema, a partir do seguinte comando:
     # ip route show >minha_tabela
# edite o arquivo 'minha_tabela' para saber como preencher as tabelas abaixo.
     # Vamos l� ent�o. . .

# primeiro vamos copiar as rotas existentes da tabela 'main' para as duas tabelas
     # Come�ando pela tabela1
     echo Criando a tabela1
ip route add $GW1 dev ppp0 proto kernel scope link src $IP1 table tabela1 ip route add 10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.33 table tabela1 ip route add 172.16.0.0/24 dev eth0 proto kernel scope link src 172.16.0.254 table tabela1 ip route add 10.10.1.0/24 dev eth2 proto kernel scope link src 10.10.1.254 table tabela1 ip route add 127.0.0.0/8 dev lo scope link table tabela1
     ip route add 10.10.10.0/24 dev eth1 via $GW0 table tabela1

# Agora na tabela2 - mesma coisa; � c�pia fiel. A coisa s� muda mesmo no que # diz respeito ao gateway padr�o, sacou?! [Mas isso � mais pra frente].
     echo criando a tabela2
ip route add $GW1 dev ppp0 proto kernel scope link src $IP1 table tabela1 ip route add 10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.33 table tabela2 ip route add 172.16.0.0/24 dev eth0 proto kernel scope link src 172.16.0.254 table tabela2 ip route add 10.10.1.0/24 dev eth2 proto kernel scope link src 10.10.1.254 table tabela2 ip route add 127.0.0.0/8 dev lo scope link table tabela2
     ip route add 10.10.10.0/24 dev eth1 via $GW0 table tabela2

# Assim, temos tr�s tabelas com rotas id�nticas de destino (main -que � nativa-, # tabela1 e tabela2). Mas a tabela1 a tabela 2 AINDA N�O TEM gateway default configurado

     ###########
# Na tabela1 irei colocar o outro gateway default EXCLUSIVO, que � o r�dio da cepain [10.0.0.7 em eth1]
     ip route add default via $GW0 dev eth1 table tabela1

# Agora iremos adicionar a origem dos ips ou rede que ir�o respeitar essa tabela1 usando somente
     # o novo link de internet [o r�dio da cepain]:
ip rule add from 172.16.0.253 table tabela1 #� a minha Estacao1 [navegar� s� pelo r�dio] # Os ips e a rede acima ir�o sair para a internet SOMENTE pelo novo link de internet [10.0.0.7].

     ###########
# Na tabela2 iremos fazer um load-balance dos 2 links de internet [o ip da ppp0 e 10.0.0.7]
     # com peso igual dos dois:
ip route add default table tabela2 nexthop via $IP1 dev ppp0 weight 1 nexthop via 10.0.0.7 dev eth1 weight 1

# Vamos agora adicionar os ips que fazem parte dessa tabela [tabela2, balanceada]: ip rule add from 10.10.1.0/24 table tabela2 #O Notebook e os dois HP Jornada [via r�dio local]
     ip rule add from 172.16.0.100   table tabela2 #A Esta��o do Eduardo
     ip rule add from 172.16.0.236   table tabela2 #A Esta��o do F�bio


# Vamos agora adicionar os ips que fazem parte da tabela principal - n�o balanceada, saindo exclusivamente na ppp0: #ip rule add from 172.16.0.11 table main #A estacao3 [minha esta��o sai s� pela ADSL] # Besteira. N�o precisa, pois na main j� estava definida a rota default para a ppp0 e eu comentei # o comando route del default no in�cio deste script [mesmo assim eu deixei s� para fins did�ticos].
  fi
fi
########## Final do script rc.balanco

Finalmente, use o comando iptables normalmente, sem pudor ou cerim�nia...
Quando eu testar o script para TR�S gateways ou mais, eu mando.. fechado?!
Qualquer coisa, � s� perguntar!
Um abra��o do Doctor_Roger.


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Responder a