Oi pessoal,

Gostaria de uma boa solução para este problemas, caso possível. Bom, tenho a
seguinte situação:

Uma REDE 192.168.0.x onde x varia de 1 ate 100 e preciso fazer com que TODOS
pacotes vindos em uma faixa de portas sejam redirecionando para esta REDE e
para a máquina que aguarda este pacote.

A principio é um problema semelhante ao que acontece com os DCC do mIRC.

Exemplo:

INTERNET (65000) -> FIREWALL (REDE) -> MAQ_DEST (65000)
         |___________________ DCC_______________|

A maquina que esta na internet envia um arquivo para a maquina de destino
que esta atras do firewall. Ela aceita e força o pedido em uma porta (que
esta na faixa) e confirma ao servidor. O servidor vendo que pode estabelecer
tal comunicação permite a entrada do pacote e faz o NAT. A maquina destino
começa a receber.

Com isso montei o seguinte script para teste.

FAIXA="2:4"; #Ou seja apenas o IP 192.168.0.2 ate o 192.168.0.4 irão
receber!
PORTAS="65000:65010"; # faixa por onde os pacotes serão aceitos

FINI=`echo $FAIXA | cut -d: -f1`; # 2
FFIM=`echo $FAIXA | cut -d: -f2`; # 4
PINI=`echo $PORTAS | cut -d: -f1`; # 65000
PFIM=`echo $PORTAS | cut -d: -f2`; # 65010
FCOUNTER=$FINI;
while [ $FCOUNTER -lt $(($FFIM+1)) ]; do
  for i in `seq $PINI $PFIM`; do
    $IPT -t nat -A PREROUTING -i $INET_IFACE -p tcp -m tcp --dport $i -j
DNAT --to-destination 192.168.0.$FCOUNTER:$i;
  done
  let FCOUNTER=FCOUNTER+1
done

A saida do iptables na tabela nat seria:

-A PREROUTING -i eth1 -p tcp -m tcp --dport 65000 -j DNAT --to-destination
192.168.0.2:65000
-A PREROUTING -i eth1 -p tcp -m tcp --dport 65001 -j DNAT --to-destination
192.168.0.2:65001
...
-A PREROUTING -i eth1 -p tcp -m tcp --dport 65009 -j DNAT --to-destination
192.168.0.2:65009
-A PREROUTING -i eth1 -p tcp -m tcp --dport 65010 -j DNAT --to-destination
192.168.0.2:65010

-A PREROUTING -i eth1 -p tcp -m tcp --dport 65000 -j DNAT --to-destination
192.168.0.3:65000
-A PREROUTING -i eth1 -p tcp -m tcp --dport 65001 -j DNAT --to-destination
192.168.0.3:65001
...
-A PREROUTING -i eth1 -p tcp -m tcp --dport 65007 -j DNAT --to-destination
192.168.0.3:65009
-A PREROUTING -i eth1 -p tcp -m tcp --dport 65008 -j DNAT --to-destination
192.168.0.3:65010

-A PREROUTING -i eth1 -p tcp -m tcp --dport 65000 -j DNAT --to-destination
192.168.0.4:65000
-A PREROUTING -i eth1 -p tcp -m tcp --dport 65001 -j DNAT --to-destination
192.168.0.4:65001
...
-A PREROUTING -i eth1 -p tcp -m tcp --dport 65007 -j DNAT --to-destination
192.168.0.4:65009
-A PREROUTING -i eth1 -p tcp -m tcp --dport 65008 -j DNAT --to-destination
192.168.0.4:65010

Isso para 100 maquina seria bem maior e provavelmente inviavel por a
checagem demoraria um tempo enorme e acabaria levando ao timeout.

Tenho esta solução funcionando com apenas 5 maquinas.

Pergunto a vocês experts em iptables que solução eu poderia ter para
contorna isso? Algum módulo extra?

PS: não posso criar subredes!

Ricardo Guedes

---------------------------------------------------------------------------
Esta lista � patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br

Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utiliza��o da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html

Responder a