linux user group brescia

immagine del castello

Archivio della mailing list

NAT doppia - IP masq

Luca Giuzzi giuzzi a dmf.bs.unicatt.it
Ven 7 Dic 2001 15:52:12 UTC
On Fri, Dec 07, 2001 at 04:39:48PM +0100, Samuele Brignoli wrote:
> 
> Mi servirebbe una roba tipo NAT sia dalla mia rete all' esterno che dall'
> esterno all' interno in modo che i client forwardati sulla mia rete vengano
> incapsulati in un solo ip. Non so se รจ possibile a me serve per risolvere
> problemi di licenze.
> 
non mi risulta che apache limiti il numero di connessioni contemporanee...

ah... parli di altri web servers... beh... legalmente quello che vuoi fare
 e' discutibile... molto discutibile: si tratta di una `circumvention 
 measure' anche se piu' raffinata delle solite...

> Spiego :
> 
> La richiesta di :
> HTTP://WWW.MIODOMINIO.COM
> viene indirizzata su Goldrake, il mio webserver.
> 
> GOLDRAKE
> 195.x.x.x
> 
> Su Apache di Goldrake ho una URL forwardin rule:
> 
> <VirtualHost 195.x.x.x.>
>        ServerName  HTTP://WWW.MIODOMINIO.COM
>        RewriteEngine on
>        # Forwarding to the intranet
>        RewriteRule   (.*)  http://195.x.y.y/mypath/$1  [R,L]
> </VirtualHost>
> 
bene...

> che come avrete intuito forwarda la richiesta sul gateway della mia rete.

male... che ci fa' un web server sul gateway????
dovrebbe forwardare su una macchina dentro la rete, non sul gateway!!

> Una macchina con due schede :
> 
> SPACELAB
> ETH0 : 195.x.y.y ( PUBLIC )
> ETH1 : 192.168.0.1 ( PRIVATE )
> 

buona cosa per il gateway...


> Questo ha una regola di port forwarding che rimanda le richieste su un WS
> interno ( mitico --> hantares 192.168.0.z ):
> 
capito il trucco, ma usare il gateway non e' una buona idea...

> #!/bin/sh
> ## BEGIN port forwarding, forwarding to hantares
> SOURCE_IP=195.x.y.y
> SOURCE_PORT=80
> DEST_IP=192.168.0.z
> DEST_PORT=80
> export SOURCE_IP SOURCE_PORT DEST_IP DEST_PORT
> /usr/sbin/ipmasqadm portfw -a -P tcp -L $SOURCE_IP $SOURCE_PORT -R $DEST_IP
> $DEST_PORT
> ## END SCRIPT
> 
> 
> che non fa altro che rimadare le richieste dalla porta 80 di un server
> interno alla mia rete.
> 
bene... e dal server come esci???? non e' cosi' banale... con iptables 
 (non uso ipmasqadm) la cosa si deve fare in 3 fasi 3...

spacelab = macchina con 2 indirizzi
hantares = server interno 
gino     = client remoto (povera bestia)


regole su spacelab:
 1. riscrivere connessioni in ingresso verso hantares come se partissero da lui;
 2. riscrivere connessioni in uscita da hantares come se partissero la lui;
 
Cito da un mio vecchio mail (c'e' nell'archivio):
 su spacelab

iptables -A PREROUTING -t nat -j DNAT -p tcp --dport 80 --destination
 ip_pubblico_spacelab --to-destination hantares:80


in questo modo i pacchetti indirizzati alla 80 della tua macchina e che
 hanno come ip di destinazione ip_di_eth0 vanno sulla 80 di hantares
 esterna. Problema: il server risponde all'host che ti ha contattato ma
 non ha l'ip giusto... la connessione non funziona...


iptables -A POSTROUTING -t nat -j SNAT -p tcp --dport 80 --destination
 hantares --to-source ip_privato_di_spacelab

adesso i pacchetti hanno come IP di origine quello della tua macchina...
 bene! Arrivano a te (e non direttamente all'host remoto), ma tu non
 sai che fartene :((

iptables -A POSTROUTING -t nat -j SNAT -p tcp --sport 80 --source
 hantares --to-source ip_pubblico_di_spacelab

adesso, finalmente i pacchetti escono dalla tua macchina con l'IP giusto
 (il suo) e la connessione funziona!



Buona fortuna,
 ciao
 lg



Maggiori informazioni sulla lista Lug