Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[risolto] Inconvenienti del SNAT
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano
View previous topic :: View next topic  
Author Message
Dun
Apprentice
Apprentice


Joined: 17 Apr 2004
Posts: 172
Location: Amsterdam (NL) / Venice (IT)

PostPosted: Sun Nov 20, 2005 2:40 am    Post subject: [risolto] Inconvenienti del SNAT Reply with quote

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
View user's profile Send private message
Dun
Apprentice
Apprentice


Joined: 17 Apr 2004
Posts: 172
Location: Amsterdam (NL) / Venice (IT)

PostPosted: Mon Nov 21, 2005 4:04 am    Post subject: Reply with quote

UP :(
Back to top
View user's profile Send private message
federico
Advocate
Advocate


Joined: 18 Feb 2003
Posts: 3272
Location: Italy, Milano

PostPosted: Mon Nov 21, 2005 12:07 pm    Post subject: Reply with quote

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
View user's profile Send private message
Dun
Apprentice
Apprentice


Joined: 17 Apr 2004
Posts: 172
Location: Amsterdam (NL) / Venice (IT)

PostPosted: Mon Nov 21, 2005 6:10 pm    Post subject: Reply with quote

Mmmm...quindi usare una route al posto di un source nat....devo provarci :) Thx mille!
Back to top
View user's profile Send private message
Dun
Apprentice
Apprentice


Joined: 17 Apr 2004
Posts: 172
Location: Amsterdam (NL) / Venice (IT)

PostPosted: Mon Nov 21, 2005 6:42 pm    Post subject: Reply with quote

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
View user's profile Send private message
makoomba
Bodhisattva
Bodhisattva


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Mon Nov 21, 2005 7:19 pm    Post subject: Reply with quote

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
View user's profile Send private message
federico
Advocate
Advocate


Joined: 18 Feb 2003
Posts: 3272
Location: Italy, Milano

PostPosted: Mon Nov 21, 2005 11:38 pm    Post subject: Reply with quote

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
View user's profile Send private message
makoomba
Bodhisattva
Bodhisattva


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Tue Nov 22, 2005 9:12 am    Post subject: Reply with quote

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
View user's profile Send private message
federico
Advocate
Advocate


Joined: 18 Feb 2003
Posts: 3272
Location: Italy, Milano

PostPosted: Tue Nov 22, 2005 4:11 pm    Post subject: Reply with quote

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
View user's profile Send private message
Dun
Apprentice
Apprentice


Joined: 17 Apr 2004
Posts: 172
Location: Amsterdam (NL) / Venice (IT)

PostPosted: Thu Nov 24, 2005 3:50 am    Post subject: Reply with quote

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
View user's profile Send private message
makoomba
Bodhisattva
Bodhisattva


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Thu Nov 24, 2005 9:15 am    Post subject: Reply with quote

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
View user's profile Send private message
Dun
Apprentice
Apprentice


Joined: 17 Apr 2004
Posts: 172
Location: Amsterdam (NL) / Venice (IT)

PostPosted: Thu Nov 24, 2005 11:46 pm    Post subject: Reply with quote

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
View user's profile Send private message
federico
Advocate
Advocate


Joined: 18 Feb 2003
Posts: 3272
Location: Italy, Milano

PostPosted: Thu Nov 24, 2005 11:51 pm    Post subject: Reply with quote

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
View user's profile Send private message
Dun
Apprentice
Apprentice


Joined: 17 Apr 2004
Posts: 172
Location: Amsterdam (NL) / Venice (IT)

PostPosted: Fri Nov 25, 2005 12:32 am    Post subject: Reply with quote

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
View user's profile Send private message
federico
Advocate
Advocate


Joined: 18 Feb 2003
Posts: 3272
Location: Italy, Milano

PostPosted: Fri Nov 25, 2005 9:28 am    Post subject: Reply with quote

Si grazie, con qualche output dovremmo vedere qualcosa meglio.
ip rule, se lo lanci, va?
Fede
_________________
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
View user's profile Send private message
Dun
Apprentice
Apprentice


Joined: 17 Apr 2004
Posts: 172
Location: Amsterdam (NL) / Venice (IT)

PostPosted: Sat Nov 26, 2005 1:22 am    Post subject: Reply with quote

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
View user's profile Send private message
makoomba
Bodhisattva
Bodhisattva


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Sat Nov 26, 2005 11:02 am    Post subject: Reply with quote

hai abilitato il policy routing nel kernel ?
_________________
When all else fails, read the instructions.
Back to top
View user's profile Send private message
federico
Advocate
Advocate


Joined: 18 Feb 2003
Posts: 3272
Location: Italy, Milano

PostPosted: Sat Nov 26, 2005 11:55 am    Post subject: Reply with quote

Si e' proprio un deficit del tuo kernel, per quello ti avevo domandato di lanciare il comando
_________________
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
View user's profile Send private message
Dun
Apprentice
Apprentice


Joined: 17 Apr 2004
Posts: 172
Location: Amsterdam (NL) / Venice (IT)

PostPosted: Sun Nov 27, 2005 1:31 am    Post subject: Reply with quote

Chiedo venia, avevate ragione :)

Grandisssimi! Grazie mille! :D
Back to top
View user's profile Send private message
jar5
n00b
n00b


Joined: 19 Dec 2004
Posts: 40

PostPosted: Wed Dec 14, 2005 3:24 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum