View previous topic :: View next topic |
Author |
Message |
Dun Apprentice


Joined: 17 Apr 2004 Posts: 172 Location: Amsterdam (NL) / Venice (IT)
|
Posted: Sun Nov 20, 2005 2:40 am Post subject: [risolto] Inconvenienti del SNAT |
|
|
Salve a tutti
Ho una connessione fastweb e quindi per servire servizi all'esterno utilizzo un serverino fornito in gentile concessione da un mio amico come ponte tra internet e il mio server. Questi due server (F = sotto fastweb) (IN = connesso direttamente ad internet) sono collegati tra di loro tramite un canale VPN realizzato con openvpn.
Per redirigere le chiamate alla porta 80 che arrivano a IN utilizzo sia una regola DNAT che inoltri tutto il traffico destinato alla porta 80 all'ip della connessione vpn, e un'altra regola che effettui il SNAT per queste connessioni che devono passare la vpn. Effettivamente senza quest'ultimo regola il server F rimanderebbe via connessione fastweb i pacchetti di risposta ai client che hanno fatto la richiesta http.
Code: |
iptables -t nat -A PREROUTING -p tcp --dport 80 -i ppp0 -j DNAT --to 172.16.1.20 (<- IP vpn di F)
iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to 172.16.1.1 (<- IP vpn di IN)
|
Tutto questo e' molto bello se non che' sulla macchina F che effettivmanete ospita apache, tutte le richieste http hanno come ip sorgente quello privato della connessione vpn.
Mi chiedevo se era possibile evitare il dnat e attraverso un "mark" delle connessioni riuscire a istruire il pc interno a fastweb a mandare tali pacchetti di risposta sempre attraverso l'interfaccia della vpn invece che attraverso il default gateway che sarebbe la rete fastweb
Se qsa e' poco chiaro non avete che da chiedere 
Last edited by Dun on Sun Nov 27, 2005 1:32 am; edited 1 time in total |
|
Back to top |
|
 |
Dun Apprentice


Joined: 17 Apr 2004 Posts: 172 Location: Amsterdam (NL) / Venice (IT)
|
Posted: Mon Nov 21, 2005 4:04 am Post subject: |
|
|
UP  |
|
Back to top |
|
 |
federico Advocate


Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Mon Nov 21, 2005 12:07 pm Post subject: |
|
|
Quello che penso e' che tu hai bisogno di un po' di iproute2
I pacchetti vengono instradati dal server esterno a fastweb nella vpn, raggiungono il tuo server, e il tuo server risponde attraverso l'interfaccia connessa a fastweb e non attraverso la vpn, in questo modo la tua connessione va a farsi benedire.
Questo problema non e' presente da sempre in faastweb, ma solo dall'agosto dell'anno scorso, quando fastweb ha vietato lo spoofing delle connessioni. Ad ogni modo, siccome noi siamo piu' informatici di loro potresti risolvere reinstradando correttamente i pacchetti all'interno della vpn.
Se ben ricordo (da ora in poi, che e' la parte che piu' ti interessa ) vado a memoria devi mettere una riga dentro
/etc/iproute2/rt_tables
ad esempio
200 miorouting
e salvare.
Poi lancia due righe di iproute simili a queste:
ip rule add from $IP-TUO-SERVER-LOCALE-IN-VPN table miorouting
ip route add default via $IP-SERVER-ESTERNO-IN-VPN table miorouting
A questo punto tutto dovrebbe essere reinstradato all'interno della vpn stessa.
Ricorda che per fare questo nei kernel deve essere abilitato l'advanced router
Federico _________________ Sideralis www.sideralis.org
Pic http://blackman.amicofigo.com/gallery
Arduino http://www.arduino.cc
Chi aveva potuto aveva spaccato
2000 pezzi buttati là
Molti saluti,qualche domanda
Semplice come musica punk |
|
Back to top |
|
 |
Dun Apprentice


Joined: 17 Apr 2004 Posts: 172 Location: Amsterdam (NL) / Venice (IT)
|
Posted: Mon Nov 21, 2005 6:10 pm Post subject: |
|
|
Mmmm...quindi usare una route al posto di un source nat....devo provarci Thx mille! |
|
Back to top |
|
 |
Dun Apprentice


Joined: 17 Apr 2004 Posts: 172 Location: Amsterdam (NL) / Venice (IT)
|
Posted: Mon Nov 21, 2005 6:42 pm Post subject: |
|
|
Mmm...pero' a senso questo funzionerebbe solo con connessiopne tcp, giusto?
Alla fin fine se fossero pacchetti udp come potrebbe sapere il pc che i pacchetti provenienti da il_prog_x (in risposta ad una richiesta proveniente dalla vpn) devono essere instradati a loro volta per la vpn....giusto? |
|
Back to top |
|
 |
makoomba Bodhisattva


Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Nov 21, 2005 7:19 pm Post subject: |
|
|
se la richiesta è diretta verso 172.16.1.20, la risposta avrà come origine il medesimo indirizzo
la route source-based impone che il traffico con ip sorgente 172.16.1.20 venga instradato verso la vpn |
|
Back to top |
|
 |
federico Advocate


Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Mon Nov 21, 2005 11:38 pm Post subject: |
|
|
makoomba wrote: | se la richiesta è diretta verso 172.16.1.20, la risposta avrà come origine il medesimo indirizzo
la route source-based impone che il traffico con ip sorgente 172.16.1.20 venga instradato verso la vpn |
Io sono abbastanza certo che hai bisogno sia del dnat/snat lato server, che il routing lato client, perche' altrimenti spara fuori pacchetti dalle interfacce errate, non ho ancora conosciuto nessuno che sia riuscito a farlo in maniera diversa... _________________ Sideralis www.sideralis.org
Pic http://blackman.amicofigo.com/gallery
Arduino http://www.arduino.cc
Chi aveva potuto aveva spaccato
2000 pezzi buttati là
Molti saluti,qualche domanda
Semplice come musica punk |
|
Back to top |
|
 |
makoomba Bodhisattva


Joined: 03 Jun 2004 Posts: 1856
|
Posted: Tue Nov 22, 2005 9:12 am Post subject: |
|
|
federico wrote: | Io sono abbastanza certo che hai bisogno sia del dnat/snat lato server, che il routing lato client, perche' altrimenti spara fuori pacchetti dalle interfacce errate, non ho ancora conosciuto nessuno che sia riuscito a farlo in maniera diversa... |
DNAT + source routing è sufficiente.
con la soluzione che gli hai suggerito è inutile fare anche SNAT sulla vpn. |
|
Back to top |
|
 |
federico Advocate


Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Tue Nov 22, 2005 4:11 pm Post subject: |
|
|
makoomba wrote: | federico wrote: | Io sono abbastanza certo che hai bisogno sia del dnat/snat lato server, che il routing lato client, perche' altrimenti spara fuori pacchetti dalle interfacce errate, non ho ancora conosciuto nessuno che sia riuscito a farlo in maniera diversa... |
DNAT + source routing è sufficiente.
con la soluzione che gli hai suggerito è inutile fare anche SNAT sulla vpn. |
Uhm si, ci sta. Non ho possibilità di provare adesso ma riguardando bene tutto penso che possa andare.
Federico _________________ Sideralis www.sideralis.org
Pic http://blackman.amicofigo.com/gallery
Arduino http://www.arduino.cc
Chi aveva potuto aveva spaccato
2000 pezzi buttati là
Molti saluti,qualche domanda
Semplice come musica punk |
|
Back to top |
|
 |
Dun Apprentice


Joined: 17 Apr 2004 Posts: 172 Location: Amsterdam (NL) / Venice (IT)
|
Posted: Thu Nov 24, 2005 3:50 am Post subject: |
|
|
federico wrote: | Quello che penso e' che tu hai bisogno di un po' di iproute2
I pacchetti vengono instradati dal server esterno a fastweb nella vpn, raggiungono il tuo server, e il tuo server risponde attraverso l'interfaccia connessa a fastweb e non attraverso la vpn, in questo modo la tua connessione va a farsi benedire.
Questo problema non e' presente da sempre in faastweb, ma solo dall'agosto dell'anno scorso, quando fastweb ha vietato lo spoofing delle connessioni. Ad ogni modo, siccome noi siamo piu' informatici di loro potresti risolvere reinstradando correttamente i pacchetti all'interno della vpn.
Se ben ricordo (da ora in poi, che e' la parte che piu' ti interessa ) vado a memoria devi mettere una riga dentro
/etc/iproute2/rt_tables
ad esempio
200 miorouting
e salvare.
Poi lancia due righe di iproute simili a queste:
ip rule add from $IP-TUO-SERVER-LOCALE-IN-VPN table miorouting
ip route add default via $IP-SERVER-ESTERNO-IN-VPN table miorouting
A questo punto tutto dovrebbe essere reinstradato all'interno della vpn stessa.
Ricorda che per fare questo nei kernel deve essere abilitato l'advanced router
Federico |
Dimenticavo....il tutto al costo di non far uscire il server (quello dentro a fastweb) sulla rete fastweb per la normale navigazione, giusto?
In effetti era per questo che speravo in un connection marking  |
|
Back to top |
|
 |
makoomba Bodhisattva


Joined: 03 Jun 2004 Posts: 1856
|
Posted: Thu Nov 24, 2005 9:15 am Post subject: |
|
|
no, la nuova tabella di routing viene utilizzata solo per la vpn.
il pc continua ad utilizzare fw per tutto il resto. |
|
Back to top |
|
 |
Dun Apprentice


Joined: 17 Apr 2004 Posts: 172 Location: Amsterdam (NL) / Venice (IT)
|
Posted: Thu Nov 24, 2005 11:46 pm Post subject: |
|
|
makoomba wrote: | no, la nuova tabella di routing viene utilizzata solo per la vpn.
il pc continua ad utilizzare fw per tutto il resto. |
Ma allora il comando e' sbagliato..la route default puo' solo essere applicata una volta... |
|
Back to top |
|
 |
federico Advocate


Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Thu Nov 24, 2005 11:51 pm Post subject: |
|
|
La route di default per la vpn in questione si intende, e piu' specificatamente per quella tabella di routing, hai provato i comandi? Ho copiato quelli che uso io qui, non possono non andare
Federico _________________ Sideralis www.sideralis.org
Pic http://blackman.amicofigo.com/gallery
Arduino http://www.arduino.cc
Chi aveva potuto aveva spaccato
2000 pezzi buttati là
Molti saluti,qualche domanda
Semplice come musica punk |
|
Back to top |
|
 |
Dun Apprentice


Joined: 17 Apr 2004 Posts: 172 Location: Amsterdam (NL) / Venice (IT)
|
Posted: Fri Nov 25, 2005 12:32 am Post subject: |
|
|
federico wrote: | La route di default per la vpn in questione si intende, e piu' specificatamente per quella tabella di routing, hai provato i comandi? Ho copiato quelli che uso io qui, non possono non andare
Federico |
Non vanno E' per questo che continuo a tediarvi
A quanto ho capito sicuramente l'ordine e' sbagliato....va prima il route. E il route mi risponde che esiste gia'
Appena riva' la vpn posto gli output |
|
Back to top |
|
 |
federico Advocate


Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
|
Back to top |
|
 |
Dun Apprentice


Joined: 17 Apr 2004 Posts: 172 Location: Amsterdam (NL) / Venice (IT)
|
Posted: Sat Nov 26, 2005 1:22 am Post subject: |
|
|
Code: |
gattaca ~ # ip rule add from 172.16.1.20 table 200
RTNETLINK answers: Invalid argument
gattaca ~ # ip route add default via 172.16.1.1 table 200
RTNETLINK answers: File exists
gattaca ~ #
|
In effetti dalle guide pare che l'invalid argument sia dovuto al fatto che vada creata prima la route della rule.
Ovviamente ho provato anche indicando l'ip in notazione cidr.
Posto anche rt_tables
Code: |
gattaca iproute2 # cat rt_tables
#
# reserved values
#
200 test
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
gattaca iproute2 #
|
|
|
Back to top |
|
 |
makoomba Bodhisattva


Joined: 03 Jun 2004 Posts: 1856
|
Posted: Sat Nov 26, 2005 11:02 am Post subject: |
|
|
hai abilitato il policy routing nel kernel ? _________________ When all else fails, read the instructions. |
|
Back to top |
|
 |
federico Advocate


Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
|
Back to top |
|
 |
Dun Apprentice


Joined: 17 Apr 2004 Posts: 172 Location: Amsterdam (NL) / Venice (IT)
|
Posted: Sun Nov 27, 2005 1:31 am Post subject: |
|
|
Chiedo venia, avevate ragione
Grandisssimi! Grazie mille!  |
|
Back to top |
|
 |
jar5 n00b

Joined: 19 Dec 2004 Posts: 40
|
Posted: Wed Dec 14, 2005 3:24 pm Post subject: |
|
|
Mi inserisco con una domanda che penso rigurdi il topic.
Ora con l'iproute2 tutto funziona senza bisogno dell'SNAT e il server fastweb (F) risponde correttamente alle richieste che gli arrivano dalla vpn.
Mettiamo ora il caso che il server F abbia bisogno di eseguire un particolare server che ha bisogno di comunicare la propria operatività ad un server centrale (es con ip 68.*.*.250 e quindi esterno alla rete fastweb), in questo modo il server F non ha modo di uscire all'esterno tramite la vpn ma solo di rispondere a delle richieste e quindi non può iniziare una nuova connessione.
un normale:
Code: | iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
sembra non funzionare
Quali altre alternative potrebbero esserci? |
|
Back to top |
|
 |
|