Newsgroup: it.comp.os.linux.sys
Titolo: Redirigere i pacchetti TCP

Ciao a tutti!
 
Ho un problema su un server di un cliente.
Per motivi a me sconosciuti, se fa una richiesta ad un certo server,
questo lo rimanda ad altri lidi.
Se faccio la stessa richiesta allo stesso server dal mio PC funziona.
 
Ora, per provare almeno a tamponare il problema, vorrei usare un secondo
server come Gateway.
 
In pratica, vorrei fare in modo che, quando il server X (quello con i
problemi), invia dei pacchetti al server Y (quello che, in quel caso,
risponde con un redirect), passi attraverso il server Z (il gateway).
 
Ora, ho provato cosi':
 
route add -host ip.del.server.y gw ip.del.server.z
 
Ma il sistema mi dice: "no such process".
 
Cosa sto sbagliando?
 
Grazie
Luca Bertoncello
(
luca...@lucabert.de
)
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 

 Se faccio la stessa richiesta allo stesso server dal mio PC funziona.
 
Provato a cambiare DNS?Io cercherei di risolvere il problema,
piuttosto che fare accrocchi

Lorenzo Mainardi ha scritto:

Il DNS non c'entra niente...
Se da quel Server faccio una richiesta Http al server Y, questo mi
risponde con un 302.
Mentre se lo faccio dal mio Server tutto funziona.
 
Ciao


 Ma il sistema mi dice: "no such process".
 
Z non è sulla stessa subnet di X?

 risponde con un 302.
 
E che c'entra il routing, allora?

whiplash ha scritto:

No!
 
Ciao


 No!
 
E allora come può passare di lì?
 
 
-- 
Flavio Visentin
 
Scientists have finally discovered what's wrong with the female brain:
on the
left side, there's nothing right, and on the right side, there's nothing
left.

 No!
 
E allora che ti aspetti?
Per altro, torno a ribadire: se X riceve una risposta da Y e non è ciò che ti aspetti, perché
metti di mezzo il routing?
O non ho capito qualcosa?

whiplash ha scritto:

Magari non ho capito io...
 
Spiego un po' piu' dettagliatamente il problema...
Abbiamo un Server sul quale deve girare Magento (inserire bestemmie a
piacere).
Per Magento esiste un Plugin (market_ready_german) che e' necessario
installare.
Il proprietario del Server si e' registrato presso 
magentocommerce.com
 e
ha ricevuto un URL da dare in pasto a quella chiavica per scaricarsi
questo modulo.
 
Appena tentiamo l'installazione, Magento manda una richiesta a
magentocommerce.com
 chiedendo un certo file. 
magentocommerce.com
 risponde
con un 302 redirect ad un altro Server (peraltro del cliente stesso, sul
quale e' installata un'altra versione di Magento) sul quale, ovviamente,
NON esiste questo file.
 
Se faccio la stessa cosa da me sul mio server (stessa versione di Magento,
stessa distribuzione Linux, stessi programmi, stesso Database [il
contenuto, intedo!]) 
magentocommerce.com
 non manda nessun redirect, ma il
file giusto.
 
Ora, volevo provare a vedere se la mia idea era corretta, ossia che
magentocommerce.com
, per qualche motivo oscuro, abbia un redirect se la
richiesta proviene da un certo IP (quello del server che mi sta facendo
bestemmiare), visto che dal mio servero dal mio PC, con altri IP, funziona
perfettamente.
 
Per fare questo, volevo usare il mio Server come Gateway, in modo che,
quando il Server X manda una richiesta a 
magentocommerce.com
, questa venga
inoltrata tramite il mio Server in una sorta di NAT.
 
Se esistono altre alternative, ben volentieri! La mia idea non era
sicuramente risolutiva, ma solo un tentativo disperato...


 inoltrata tramite il mio Server in una sorta di NAT.
 
Cambiare il gateway del server no?
 
 
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito è di fare il possibile per la
salvezza degli anni nei quali viviamo,
sradicando il male dai campi che conosciamo.

 Cambiare il gateway del server no?
 
Ecco, se mi dici come farlo in modo che COMUNQUE, riesca a raggiungere il
mio Server (che e' da un altro provider), allora lo faccio...


 mio Server (che e' da un altro provider), allora lo faccio...
 
A no, pensavo fosse sempre li il tuo server.
Prova con iptables e dnat e cose simili.
 
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito č di fare il possibile per la


 Prova con iptables e dnat e cose simili.
 
Ci avevo pensato, ma non sono riuscito a combinare niente...
Potrebbe anche dipendere dal fatto che DNAT so a mala pena cos'e'...
 
Hai magari qualche esempio?
 
Grazie


 Hai magari qualche esempio?
 
Mai fatto DNAT con sorgente locale ma solo con sorgente
esterna, pertanto non ti so dire se funziona:
 
iptables -t nat -A PREROUTING -d ip.server.mag.ento -j DNAT 
--to-destination 
ip.tuo.server.gw
 


 --to-destination 
ip.tuo.server.gw
 
 
Che e' quello che ho provato.
Non funziona... :(
 
Altre idee?


 Altre idee?
 
Modifica il codice di magento per fargli pescare il file
da un server specifico e/o fai puntare al tuo ip il
dominio usato da magento.
 
Fai prima.


 inoltrata tramite il mio Server in una sorta di NAT.
 
Puoi farlo, se credi che sia utile, tirando su un qualche tipo di interfaccia punto-punto
tra X e Z, impostando come gateway per Y l'indirizzo punto-punto di Z su X e facendo un SNAT
su Z per i pacchetti che arrivano da X e sono diretti a Y, se credi che il problema sia
l'indirizzo sorgente...
 
 

 tra X e Z,
 
Io in questi casi metto in piedi openvpn con null-cipher.


 --to-destination 
ip.tuo.server.gw
 
 
No, non funziona. Se è da locale lo fai nella catena di OUTPUT.


 iptables -t nat -A PREROUTING -d ip.server.mag.ento -j DNAT --to-destination 
ip.tuo.server.gw
 
 
Così 
ip.tuo.server.gw
 si vede arrivare un bel SYN di cui magari non sa che cacchio fare.
Oppure se ha la porta 80 aperta, apre la connessione e poi, quando gli arriva una bella
GET con Host: nome.di.ip.server.mag.ento risponde "tua nonna". :)

 Io in questi casi metto in piedi openvpn con null-cipher.
 
 
La configurazione è semplice:
 
Host 1 (server originale):
----------
local ip_host1
remote ip_host2
dev tun0
ifconfig 10.20.30.1 10.20.30.2
cipher none
auth none
keepalive 10 60
persist-tun
verb 4
 
Host 2 (server tuo):
----------
local ip_host2
remote ip_host1
dev tun0
ifconfig 10.20.30.2 10.20.30.1
cipher none
auth none
keepalive 10 60
persist-tun
verb 4
 
 
Su Host 2 metti un bel:
 
# sysctl -w net.ipv4.ip_forward=1
# iptables -I FORWARD -s 10.20.30.1 -j ACCEPT
# iptables -t nat -I POSTROUTING -s 10.20.30.1 -j MASQUERADE
 
Su Host 1 invece metti la rotta che per andare sul sito in questione
passi dall'host 2.
 
# ip route add ip_sito_destinazione/32 via 10.20.30.2


 No, non funziona. Se è da locale lo fai nella catena di OUTPUT.
 
Tra l'altro...

 Mentre se lo faccio dal mio Server tutto funziona.
 
Come whiplash ti ha detto (ma tu non hai colto) se il server ti 
restituisce un 302 allora il problema non è di routing ma è applicativo.
 
E' sempre corretto per te studiare il routing e, in generale, il tcp/ip 
(perchè ne hai sparate un paio di grosse) ma il problema lo risolvi col 
webserver o con magento...

 webserver o con magento...
 
Annulla quanto sopra.
/clear

 Io in questi casi metto in piedi openvpn con null-cipher.
 
Se le richieste sono HTTP io uso di soluto un transparent proxy 
sull'altra macchina ed iptables.

 Fai prima.
 
Temo di no...
Gli URL vengono spediti da 
magentocommerce.com
.
E, in ogni caso, dovrei prima riuscire a copiarmi tutti i files in
locale...
 
Ciao


 GET con Host: nome.di.ip.server.mag.ento risponde "tua nonna". :)
 
Ovviamente sul server ci sarà il rispettivo redirect e/o un server http
in ascolto.
 
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito è di fare il possibile per la


 locale...
 
Ma non è un file che devi scaricare ?
 
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito è di fare il possibile per la


 prima riuscire a copiarmi tutti i files in locale...
 
Normalmente comunque ...
L'URL che ti spedisce magento la puoi tranquillamente aggirare con il 
file hosts.
Facendolo puntare dove sai che il file esiste (e configurando il VH).
 


 
collega un buon vecchio modem PSTN ed esegui lo scaricamento del file 
attraverso una connessione provvisoria e momentanea a un ISP locale :)
 
 
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\