Newsgroup: it.comp.os.linux.sys
Titolo: Freeswan, vpn, e reti che non si vedono..

Salve,
ho installato (non con poca fatica) freeswan su due server linux. Ho
creato la vpn tramite la documentazione messa a disposizione da
freeswan.
La struttura è questa:
192.168.2.0
     |
     |
  192.168.2.1
    GW1
 85.44.**.**
     |
     |
    VPN
     |
     |
 212.28.**.**
    GW2
 192.168.1.207
     |
     |
 192.168.1.0
Bene la vpn va su diligentemente senza errori neil log, i due gateway
si pingano a vicenda sui loro ip pubblici, ma non sui loro privati!
Le due reti non si veodno per nulla..
Vi incollo anche le rotte.. ma non vedo nulla di strano (le maschere
sono ok)
Questo è il route -n di GW1
Destination     Gateway         Genmask         Flags Metric Ref    Use
Iface
85.44.**.**    0.0.0.0         255.255.255.248 U     0      0        0
eth1
85.44.**.**    0.0.0.0         255.255.255.248 U     0      0        0
ipsec0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0
eth0
192.168.1.0     85.44.**.**    255.255.255.0   UG    0      0        0
ipsec0
0.0.0.0         85.44.**.**    0.0.0.0         UG    0      0        0
eth1
questo è il route -n di GW2
Destination     Gateway         Genmask         Flags Metric Ref    Use
Iface
212.28.**.**    0.0.0.0         255.255.255.128 U     0      0        0
eth0
212.28.**.**    0.0.0.0         255.255.255.128 U     0      0        0
ipsec0
192.168.2.0     212.28.**.*    255.255.255.0   UG    0      0        0
ipsec0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0
eth1
0.0.0.0         212.28.**.**    0.0.0.0         UG    0      0        0
eth0
Sapete aiutarmi? Devo incollare anche l'ipsec.conf?
Grazie mille per ogni aiuto

 Sapete aiutarmi? Devo incollare anche l'ipsec.conf?
Magari un 'ipsec whack --status|grep ==='.
Fabio

 Magari un 'ipsec whack --status|grep ==='.
000 "net-to-net":
192.168.2.0/24===85.44.**.59[@host**-**.pool8544.interbusiness.it]---85.44.**.57...212.28.**.3---212.28.**.44[@pippo.host.com]===192.168.1.0/24
;
erouted; eroute owner: #4
Ovviamente ho coperto parzialmente gli ip pubblici, e il nome degli
host..
Ale

 Le due reti non si veodno per nulla..
E' normale.
Source route.
C'è scritto nella documentazione e c'è scritto anche come fare per farli
pingare (ammesso che iptables lo consenta)
Max

Ho provato a pingare da un host di una net ad un host dell'altra (non
dai due gatway).. cioè da 192.168.2.2 a 192.168.1.79, come ho letto
nella documentazione che mi ha passato bio. I due rispettivi host
pingano tranquillamente l'ip pubblico dell'altra rete, ma nessun host
interno.  Ho settato bene iptables in modo che non mascheri le due
reti.. e non blocchi i pacchetti. Sui rispettivi router non ci sono
blocchi/filtri.
Non capisco cosa possa essere.
Ctrix puoi essere più preciso? Non ho trovato niente riguardo al
problema che mi hai suggerito..
Grazie mille per ogni suggerimento aggiuntivo
Alessio

 Alessio
Ribadisco.
i due endpont o gateway TRA DI LORO con l'ip privato NON si pingano di
default.
Il problema è il source route.
Le prove le devi fare tra host INTERNI alle lan collegate in VPN.
Se questo funziona, funziona tutto.
Se ulteriormente devi far pingare l'endpoint o dall'endpoint vuoi pingare
l'altra lan, devi aggiungere qualcosa tipo:
ip route replace $NET \
   via $defaultroutenexthop \
   dev $defaultroutevirt src $INT_ADDR
lasciando alla simbologia delle variabili il loro significato più o meno
chiaro. Per esplicitarlo meglio $NET e $INT_ADDR sono i valori locali della
LAN privata. Le variabili tutte in minuscolo si riferiscono alla singola
"conn" di freeswan.
Il comando va lanciato DOPO che la VPN è stata routata, uno per ogni
"conn", modificando i parametri in minuscolo; per automatizzarlo lo si fa
con lo script _updown nella dir di libreria di [free|open]swan.
Se da un gateway vuoi pingare l'ip privato dell'altro gateway, il comando
che ti ho illustrato lo devi lanciare ovviamente su entrambe le macchine.
Queste sono le indicazioni più precise che ti so dare e che uso, quindi
sono in produzione.
Il riferimento alla documentazione di *swan non te lo so dare, avendo
cercato ormai anni fa in quel bordello di documenti estremamente poco
chiari, ma credo che nel troubleshoting o nelle faqs ci sia scritto tutto.
Max

 erouted; eroute owner: #4
Sembrerebbe a posto. Con questa configurazione e' normale che tu non possa 
pingare l'indirizzo delle interfacce LAN dei router e delle macchine nelle
reti remote dai router stessi, e questo non e' un problema. Il problema e'
quando dici <<Le due reti non si veodno per nulla>>. Probabilmente c'e' un
problema con l'inoltro del traffico (routing disabilitato, regole iptables
che impediscono il FORWARD). 
Ma mi viene un dubbio... hai provato a vedere se due host delle due lan si
vedono tra loro o hai provato solo dai router? Magari funziona gia' tutto,
e semplicemente... non hai fatto i test giusti.
Se hai l'esigenza di poter vedere le lan opposte dai due router puoi usare
iproute2 o fare un nat con iptables, per esempio. Oppure puoi inserire dei
tunnel aggiuntivi che facciano match su questo traffico, come spiegato nel
link che ti ho postato prima. Io preferisco quest'ultimo approccio.
Fabio

 pingare l'indirizzo delle interfacce LAN dei router e delle macchine nelle
[snip]
Oooops... come non detto. Leggo che le lan si vedono, qundi funziona tutto
come si deve. Semplicemente devi decidere se ti serve anche poter accedere
alle lan dai router e fare le configurazioni aggiuntive del caso.
E comunque... _NON_ avevi letto 
http://wiki.openswan.org/index.php/FAQ#a56
vero?
Fabio

Sto pingando da net to net, non dai gateway, ma non va. Non va telnet o
ssh, i firewall sono settati correttamente e dai log infatti vedo che
non c'è alcun deny sul mio traffico..
Ipsec nei log non riporta alcune errore, il tunnel sembra essere su ma
non passa nulla...
Ho provato anche su tcdump sull'interfaccia interna e da solo questo
risultato
17:54:34.690681 IP 192.168.1.79 > 
192.168.2.2
: icmp 40: echo request
seq 61952
8:10:58.674996 IP (tos 0x0, ttl  64, id 52, offset 0, flags [DF],
length: 84) 192.168.2.2 > 
192.168.1.79
: icmp 64: echo request seq 53
18:10:59.674681 IP (tos 0x0, ttl  64, id 53, offset 0, flags [DF],
length: 84) 192.168.2.2 > 
192.168.1.79
: icmp 64: echo request seq 54
18:11:00.674380 IP (tos 0x0, ttl  64, id 54, offset 0, flags [DF],
length: 84) 192.168.2.2 > 
192.168.1.79
: icmp 64: echo request seq 55
18:11:01.674045 IP (tos 0x0, ttl  64, id 55, offset 0, flags [DF],
length: 84) 192.168.2.2 > 
192.168.1.79
: icmp 64: echo request seq 56
18:11:02.673687 arp who-has 192.168.2.1 tell 192.168.2.2
18:11:02.673751 IP (tos 0x0, ttl  64, id 56, offset 0, flags [DF],
length: 84) 192.168.2.2 > 
192.168.1.79
: icmp 64: echo request seq 57
18:11:03.673405 IP (tos 0x0, ttl  64, id 57, offset 0, flags [DF],
length: 84) 192.168.2.2 > 
192.168.1.79
: icmp 64: echo request seq 58
Mentre sull'interfaccia esterna non passa niente.. sembra che il il
gateway non trasferisca le informazioni criptate sull'interfaccia
esterna..
Alessio


Ho avuto lo stesso problema con openvpn...echo request ma no echo
reply.
Il motivo era banale, all'interno delle 2 lan non era settata la route
giusta.
fai partire un ping dalla lan interna verso l'altra lan interna
guarda con tcpdump se sull'host che stai pingando arrivano i pacchetti
(echo request).
se arrivano e non riesce a fare echo reply vuol dire che non conosce la
route per rimandare indietro il pacchetto.
a me è successo cosi. non era iptables o altro ma semplicemente una
route non funzionante a dovere.
i sintomi sono esattamente i tuoi....

Si ma, nel mio caso è proprio il gateway che arrivandogli i pacchetti
dall'interfaccia interna, non li rigira nell'interfaccia esterna...
come se non sapesse nulla, eppure le rotte create dal tunnel sono
corrette.
Sul gateway 212.43.**.44  La rotta creata dal tunnel è questa:
192.168.2.0     212.43.**.3    255.255.255.0   UG    0      0        0
ipsec0
vpn_esterna      next_hop         mask
E' corretto? Nex_hop è il router a cui è collegato il gateway.. che
ho inserito nel ipsec.conf. Eppure quando il gateway cerca di spedire a
192.168.2.2 non sa cosa fare.. e sull'interfaccia esterna non esce
nulla.
Ale

Ci sono, era il firewall a far casino. COn il firewall già ora funzia,
non chiedetemi perchè ;)
Però non riesco a capire con quale regole far passare i pacchetti
iptables -A INPUT -i $INTEXT -s $VPN_ESTERNA -j ACCEPT
iptables -A INPUT -s $VPN -j ACCEPT
iptables -A FORWARD -i $INTEXT -d $RETEINTERNA -j ACCEPT
iptables -A FORWARD -d $VPN -j ACCEPT
ho aggiunto queste due righe per non mascherare i pacchetti che vanno
da una lan all'altra
iptables -A POSTROUTING -t nat -s $RETEINTERNA -d ! $VPN -j MASQUERADE

 Sul gateway 212.43.**.44  La rotta creata dal tunnel è questa:
Ho come l'impressione che devi rileggerti un pò di documentazione.
Non devi sniffare sull'interfaccia esterna alla ricerca dei pacchetti che
mandi all'altra lan remota.
Se li cerchi vuol dire che non hai capito una stracippazza di come funziona
una VPN che incapsula e critta i pacchetti. Con ipsec troverai pacchetti
differenti da quelli che mandi, UDP sulla 500 per ike e ESP/AH (protocolli
49 e 50) per i dati o il tunnel.
Devi sniffare sulla ipsec0 di entrambi i gateway, abilitare l'ip_forward,
butta giù tutto il firewall che non mi sembrta che tu sia particolarmente
ferrato su ste cose.
MAx

 corrette.
Posta un 
# ipsec look |grep '=>' 
un 
#route -n
un 
#iptables -L -vn
un 
#cat /proc/sys/net/ipv4/ip_forward
MAx

Praticamente è il firewall.. mi blocca i pacchetti. Con il firewall
giù funzia tutto. Anche se ho permesso l'entrata e l'uscita..$VPN è
la rete interna a cui devo connettermi..
iptables -A INPUT -s $VPN -j ACCEPT
iptables -A FORWARD -d $VPN -j ACCEPT
E non permetto il mascheraggio..
iptables -A POSTROUTING -t nat -s $RETEINTERNA -d ! $VPN -j MASQUERADE
Non so più che fare.
Ale

Ci sono, era il firewall a far casino. COn il firewall già ora funzia,
non chiedetemi perchè ;)
Però non riesco a capire con quale regole far passare i pacchetti
iptables -A INPUT -i $INTEXT -s $VPN_ESTERNA -j ACCEPT
iptables -A INPUT -s $VPN -j ACCEPT
iptables -A FORWARD -i $INTEXT -d $RETEINTERNA -j ACCEPT
iptables -A FORWARD -d $VPN -j ACCEPT
ho aggiunto queste due righe per non mascherare i pacchetti che vanno
da una lan all'altra


 Non so piů che fare.
Parti da qui:
http://www.netfilter.org/documentation/
Max

 
http://www.netfilter.org/documentation/
... e posta su 
m...@sikurezza.org
 dicendo di non perdere tempo con 
il supposto problema di freeswan.
Fabio

Mi spiace, ma le mail mandate a questa ML arrivano con tremendo ritardo
anche 2-3 giorni dopo, per questo sono arrivate svariate
copie..scusate,
Per @
sikurezza.org
 anche lì ho postato da tempo per dire che il
problema è il firewall, ma la ML è moderata e finche il moderatore
non fa passare la mail non ci posso fare nulla...