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
|