View previous topic :: View next topic |
Author |
Message |
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Sat Dec 10, 2005 11:39 pm Post subject: Problema di port forwarding tramite vpn [risolto] |
|
|
Ciao a tutti.
Allora la situazione è questa:
ho un server pubblico che è collegato ad un server interno a una LAN tramite una vpn. L'obbiettivo è di fare un port forwarding (es. la porta 80) dal server pubblico verso il server all'interno della LAN passando tramite la vpn.
I 2 server si pingano tranquillamente ma il problema è che i pacchetti di richiesta verso il server pubblico non riescono ad andare verso quello privato tramite la vpn.
Il tutto è fatto usando iptables con la seguente regola:
iptables -t nat -A PREROUTING -p tcp -i eth1 -d 217.*.*.153 --dport 80 -j DNAT --to 10.*.*.2
dove 217.*.*.153 è l'indirizzo del server pubblico e 10.*.*.2 è l'indirizzo della vpn appartenente al server privato.
Ho cercato un po' in giro ma mi pare di aver capito che la situazione sia un po' diversa rispetto a un normalissimo port forwarding verso un server all'interno di una LAN a causa della presenza della vpn (ma magari sbaglio... )
Sapreste aiutarmi?
Last edited by jar5 on Mon Dec 12, 2005 8:17 pm; edited 1 time in total |
|
Back to top |
|
|
federico Advocate
Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Sun Dec 11, 2005 1:03 am Post subject: |
|
|
Prova un po' a controllare com ethereal o tcpdump che direzione prendono i pacchetti di risposta http dalla tua macchina verso l'esterno.
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 |
|
|
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Sun Dec 11, 2005 3:10 am Post subject: |
|
|
mmm... ok provo a vedere che dice ethereal però ho visto con tcpdump che non arriva neanche la richiesta..
Però non ho spiegato una cosa:
i due server sono così messi:
Server pubblico:
eth1 --> 217.*.*.153 -->Interfaccia rivolta verso l'esterno(Internet)
tap0 --> 10.0.0.1 --> Interfaccia della vpn rivolta verso il server privato
Server privato:
tap --> 10.0.0.2 --> Interfaccia della vpn rivolta verso il server pubblico (oltre ovviamente ad avere eth0 come interfaccia fisica )
Come detto i ping funzionano però facendo delle prove ho notato che se sul server pubblico metto un daemon di apache in ascolto sull'indirizzo privato della vpn (10.0.0.1) e utilizzando la regola che ho postato prima(cambiando il 10.0.0.2 finale con 10.0.0.1), il server pubblico riponde correttamente mentre se reindirizzo la connessione verso il server privato (10.0.0.2), che è quello che dovrei fare, torna a non funzionare.
Vabbè intanto provo ethereal.
Grazie per la risposta |
|
Back to top |
|
|
comio Advocate
Joined: 03 Jul 2003 Posts: 2191 Location: Taranto
|
Posted: Sun Dec 11, 2005 10:42 am Post subject: |
|
|
Code: |
...
-A PREROUTING -d 192.168.55.154 -j portredir
...
-A portredir -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.100.2
-A portredir -j RETURN
|
quella di sopra è la catena che mi fa il redirect delle porte nel mio caso. dovrebbe andare bene anche a te una cosa simile. _________________ RTFM!!!!
e
http://www.comio.it
|
|
Back to top |
|
|
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Sun Dec 11, 2005 11:25 am Post subject: |
|
|
ho provato con le tue regole sostituendo al tuo 192.168.55.154 il mio 217.*.*.153 e al tuo 192.168.100.2 il mio 10.0.0.2 però purtroppo ancora non funziona.
Mi sembra di aver capito però che tu hai una LAN vera e propria mentre nel mio caso la LAN è formata da una vpn tra 2 host con connessione diretta tra di loro (diretta nel senso che ci sono solo loro 2 sulla vpn).
Non saprei ma ci sono differenze nel redirigere pacchetti usando una LAN rispetto ad usare una vpn? Comincio a pensarlo... |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Dec 12, 2005 9:38 am Post subject: |
|
|
fare solo DNAT non basta perchè i pacchetti che arrivano al server privato tramite vpn conservano il loro ip sorgente.
la risposta di apache utilizzerà il default gateway della macchina 10.0.0.2 (probabilmente un router/modem), "uscendo" su internet con l'indirizzo pubblico del gateway stesso.
hai due possibilità:
1 - fare anche SNAT sulla vpn (lato server pubblico) in modo che l'ip sorgente delle richieste risulti essere 10.0.0.1
2 - fare source routing sul server privato, imponendo che il traffico con ip sorgente 10.0.0.2 abbia come gateway la vpn.
c'è un 3d recente nel forum in cui ne abbiamo parlato, lì troverai maggiori dettagli. _________________ When all else fails, read the instructions. |
|
Back to top |
|
|
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Mon Dec 12, 2005 3:05 pm Post subject: |
|
|
mmm..... si capisco però al momento il problema sembra essere che neanche i pacchetti di richiesta riescano ad arrivare al server privato con quella singola regola (anche se insufficiente per far funzionare il tutto ma almeno la richiesta dovrebbe arrivare, o sbaglio?).
Se mi metto in ascolto sull'interfaccia della vpn del server privato (tap0 --> indirizzo 10.0.0.2) ad esempio con tcpdump non arriva nessun pacchetto ma proprio nessuno! |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Dec 12, 2005 3:15 pm Post subject: |
|
|
jar5 wrote: | Se mi metto in ascolto sull'interfaccia della vpn del server privato (tap0 --> indirizzo 10.0.0.2) ad esempio con tcpdump non arriva nessun pacchetto ma proprio nessuno! |
se dal server pubblico fai
Code: | wget http://10.0.0.2 |
rilevi traffico con tcpdump ? _________________ When all else fails, read the instructions. |
|
Back to top |
|
|
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Mon Dec 12, 2005 3:17 pm Post subject: |
|
|
Si riesco a rilevarlo, ad esempio se dal pubblico faccio "links 10.0.0.2" la pagina viene aperta. |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Dec 12, 2005 3:22 pm Post subject: |
|
|
l'ip forwarding è abilitato sul server pubblico ? _________________ When all else fails, read the instructions. |
|
Back to top |
|
|
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Mon Dec 12, 2005 3:27 pm Post subject: |
|
|
sul pubblico c'è questo:
Code: |
iptables -t nat -A PREROUTING -p tcp -i eth1 -d 217.*.*.153 --dport 80 -j DNAT --to 10.*.*.2 |
però se non sbaglio almeno con questo le richieste dovrebbero arrivare. |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Dec 12, 2005 3:28 pm Post subject: |
|
|
posta
Code: | sysctl net.ipv4.ip_forward |
sul server pubblico _________________ When all else fails, read the instructions. |
|
Back to top |
|
|
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Mon Dec 12, 2005 3:32 pm Post subject: |
|
|
si il forward è attivo :
Code: |
pc-l ~ # sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1 |
|
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Dec 12, 2005 3:38 pm Post subject: |
|
|
mmm...
hai altre regole nel firewall ?
sul pubblico, dai
questa azzera i contatori relativi alle regole del firewall
prova una connessione dall'esterno verso la porta 80 del server pubblico e poi posta
Code: | iptables -t nat -nvL |
_________________ When all else fails, read the instructions. |
|
Back to top |
|
|
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Mon Dec 12, 2005 3:42 pm Post subject: |
|
|
No per il momento ho tolto tutte le regole per fare queste prove sul forwarding eccetto quella per il DNAT.
Code: |
pc-l ~ # iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 4324 packets, 272K bytes)
pkts bytes target prot opt in out source destination
3 156 DNAT tcp -- eth1 * 0.0.0.0/0 217.*.*.153 tcp dpt:80 to:10.0.0.1
Chain POSTROUTING (policy ACCEPT 3641 packets, 246K bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 3641 packets, 246K bytes)
pkts bytes target prot opt in out source destination
|
|
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Dec 12, 2005 3:45 pm Post subject: |
|
|
Code: | 156 DNAT tcp -- eth1 * 0.0.0.0/0 217.*.*.153 tcp dpt:80 to:10.0.0.1 |
...
dev'essere
Code: | 156 DNAT tcp -- eth1 * 0.0.0.0/0 217.*.*.153 tcp dpt:80 to:10.0.0.2 |
_________________ When all else fails, read the instructions. |
|
Back to top |
|
|
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Mon Dec 12, 2005 3:47 pm Post subject: |
|
|
si scusa ho fatto delle prove ma poi l'ho ricambiato in 10.0.0.2 ma non funziona cmq, ho già provato |
|
Back to top |
|
|
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Mon Dec 12, 2005 3:52 pm Post subject: |
|
|
il problema sembra essere che i due host della vpn comunicano tranquillamente ma sembra che il server pubblico non riesca a girare i pacchetti dalla eth1 alla tap0 |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Dec 12, 2005 3:52 pm Post subject: |
|
|
ok, metti tcpdump in ascolto su eth1 del server pubblico, fai un test (dall'esterno) e posta l'output.
poi mettilo su tun0 sempre sul pubblico, rifai il test e posta anche quello
e già che ci sei, posta pure route -n
edit
su tap0, non tun0 _________________ When all else fails, read the instructions. |
|
Back to top |
|
|
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Mon Dec 12, 2005 5:10 pm Post subject: |
|
|
Allora allora:
Sul server pubblico:
Code: |
pc-l ~ # iptables -t nat -vL
Chain PREROUTING (policy ACCEPT 7974 packets, 502K bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- eth1 any anywhere pc-1 tcp dpt:http to:10.0.0.2
Chain POSTROUTING (policy ACCEPT 6887 packets, 469K bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 6887 packets, 469K bytes)
pkts bytes target prot opt in out source destination
|
Code: |
pc-l ~ # tcpdump -i eth1 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
18:59:49.274158 IP 1.*.*.42.2474 > 217.*.*.153.80: S 1444702042:1444702042(0) win 65535 <mss 1460,nop,wscale 3,nop,nop,sackOK>
18:59:52.097825 IP 1.*.*.42.2474 > 217.*.*.153.80: S 1444702042:1444702042(0) win 65535 <mss 1460,nop,wscale 3,nop,nop,sackOK>
2 packets captured
4 packets received by filter
0 packets dropped by kernel
|
Code: |
pc-l ~ # tcpdump -i tap0 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tap0, link-type EN10MB (Ethernet), capture size 96 bytes
19:01:33.166451 IP 1.*.*.42.2480 > 10.0.0.2.80: S 2731374723:2731374723(0) win 65535 <mss 1460,nop,wscale 3,nop,nop,sackOK>
19:01:36.005516 IP 1.*.*.42.2480 > 10.0.0.2.80: S 2731374723:2731374723(0) win 65535 <mss 1460,nop,wscale 3,nop,nop,sackOK>
19:01:42.040974 IP 1.*.*.42.2480 > 10.0.0.2.80: S 2731374723:2731374723(0) win 65535 <mss 1460,nop,wscale 3,nop,nop,sackOK>
3 packets captured
6 packets received by filter
0 packets dropped by kernel
|
Code: | pc-l ~ # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.252 U 0 0 0 tap0
1.*.*.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 1.*.*.1 0.0.0.0 UG 0 0 0 eth1
|
1.*.*.42 corrisponde all'host esterno dal quale stò facendo le richieste di prova.
Ma cacchio ora le richieste arrivato al server privato giuro che non ho cambiato nulla
In questa situazione quindi mi bastarebbe fare quell'SNAT di cui mi parlavi prima? |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Dec 12, 2005 5:14 pm Post subject: |
|
|
jar5 wrote: | In questa situazione quindi mi bastarebbe fare quell'SNAT di cui mi parlavi prima? |
sì
edit:
qui c'è il 3d di cui ti parlavo _________________ When all else fails, read the instructions. |
|
Back to top |
|
|
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Mon Dec 12, 2005 5:26 pm Post subject: |
|
|
Nella prima risposta mi hai detto:
Quote: | 1 - fare anche SNAT sulla vpn (lato server pubblico) in modo che l'ip sorgente delle richieste risulti essere 10.0.0.1 |
ma a questo punto le risposte del server apache sul server privato non dovrebbero viaggiare sulla vpn? e non serve un masquerade sul server pubblico?
Mi faresti un esempio di regola iptables per l'SNAT? Facciamo prima così almeno capisco al volo
edit:
ok avevo postato prima che editati
ora leggo, grazie |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Dec 12, 2005 5:38 pm Post subject: |
|
|
jar5 wrote: | Mi faresti un esempio di regola iptables per l'SNAT? Facciamo prima così almeno capisco al volo |
domanda: hai letto il link che ti ho postato ?
c'è scritto esattamente come devi fare.
edit.
anch'io ho postato senza leggere il tuo edit....
siamo pari _________________ When all else fails, read the instructions. |
|
Back to top |
|
|
jar5 n00b
Joined: 19 Dec 2004 Posts: 40
|
Posted: Mon Dec 12, 2005 5:55 pm Post subject: |
|
|
Si infatti ti chiedo scusa ti ho fatto la domanda senza aver visto il tuo edit
In effetti ora con quella regola funziona tutto alla grande!
Ti dovrebbero fare un statua
Grazie a tutti quelli che sono intervenuti in mio soccorso
Ciao e grazie |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Dec 12, 2005 6:01 pm Post subject: |
|
|
_________________ When all else fails, read the instructions. |
|
Back to top |
|
|
|