PortForwarding
Luca Giuzzi
giuzzi a tartagliap.dmf.bs.unicatt.it
Mer 4 Apr 2001 16:08:45 UTC
>
> Stò cercando un tool che mi faccia il forwarding di una richiesta ip da una
> macchina ad un'altra macchina.
> Per ora stò usando un fastforward minimale che funziona bene.
> Però tale tool non considera (se non erro) la possibilità di diversi ip e eth
> vituali.
> Si binda alla porta della macchina e redireziona tutti i pacchetti.
> Io vorrei che,per esempio,i pacchetti in arrivo sulla eth0 porta 80 fossero
> rigirati alla macchina X (non necessariamente in una lan,anche una macchina
> publica su internet,fosse pure www.microsoft.com),mentre quelli della eth0:1
> porta 80 su un'altra (www.linux.org).
> Qualcuno ha esperienze?
Mah... il modo migliore e' tramite le funzionalita' di NAT di iptables.
Premessa: ti serve il packet forwarding attivo, innanzi tutto.
(echo "1" > /proc/sys/net/ipv4/ip_forward)
Il problema e' che iptables NON gestisce le interfaccie aliasate (ethx:y)
ma a questo si puo' porre rimedio specificando gli indirizzi di destinazione
della connessione.
Esempio pratico
iptables -A PREROUTING -t nat -j DNAT -p tcp --dport 80 --destination
ip_di_eth0 --to-destination macchina_esterna: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 della macchina
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
macchina_esterna --to-source ip_di_eth0
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
macchina_esterna --to-source ip_di_eth0
adesso, finalmente i pacchetti escono dalla tua macchina con l'IP giusto
(il suo) e la connessione funziona!
L'output di iptables -L -t nat
a questo punto deve assomigliare al seguente:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere tua_macchina tcp dpt:www to:ip_macchina_remota:80
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT tcp -- anywhere macchina_remota tcp dpt:www to:ip_tua_macchina
SNAT tcp -- macchina_remota anywhere tcp spt:www to:ip_tua_macchina
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Ove
ip_tua_macchina e' l'ip di eth0 (o eth0:1, etc. etc.) mentre tua_macchina/
macchina_remota e' il nome delle macchine come risolto dal dns (oppure l'ip).
Ciao,
lg
>
> Giulio
>
> --
> _____________________________________________________________
> Fontana GiulioMaria
> System Administrator
> Sinapsi Spa
> Viale Bligny 27, 20136 Milan, Italy, Phone (+39) 02 582095.33
Maggiori informazioni sulla lista
Lug
|