Openswan se connectant à plusieurs sous-réseaux de droite ne fonctionne pas

14

J'essaie d'utiliser Openswan (version 2.6.37) pour connecter un VPN IPsec de mon réseau local à un site distant. Tout fonctionne bien lorsque je veux simplement me connecter à un seul sous-réseau sur le site distant. Cependant, le site distant dispose également d'un sous-réseau supplémentaire auquel je souhaite accéder.

Voici ma configuration:

conn myConn
        type=tunnel
        left=192.168.139.14
        leftsubnet=192.168.139.0/24
        leftxauthclient=yes
        right=X.X.X.X
        rightsubnet=172.16.1.0/24
        keyexchange=ike
        auth=esp
        authby=secret
        phase2alg=3des-sha1
        pfs=yes

Quand je remplace rightsubnetpar rightsubnets, comme ça:

rightsubnets={172.16.1.0/24 192.168.3.0/24}

... alors la connexion est créée avec succès mais seul le dernier sous-réseau de la liste est disponible. Toute tentative de cingler quoi que ce soit sur le172.16.1.0 sous réseau échoue. Si j'échange l'ordre des sous-réseaux, je peux cingler 172.16.1.Xmais je ne peux rien cingler sur l'autre sous-réseau. C'est comme si Openswan utilise uniquement le dernier sous-réseau de la liste pour créer une connexion.

Est-ce que je fais quelque chose de mal ici?

Un peu d'informations supplémentaires que j'ai négligé de mentionner (bien que je ne sois pas sûr qu'elles soient pertinentes): Mon client Openswan est derrière un routeur utilisant NAT et j'ai nat_traversal=yesdans mon ipsec.conffichier.

FixMaker
la source
Utilisez-vous des VLAN? J'ai eu presque exactement le même problème et le problème était une erreur VLAN
Avez-vous essayé de créer deux associations de sécurité, une pour chaque sous-réseau?
gimmesudo
@Tyke, non, je n'utilise pas de VLAN. Mon client OpenSwan est derrière un routeur utilisant NAT cependant - j'ai mis à jour la question pour refléter cela.
FixMaker
@gimmesudo: J'ai essayé de dupliquer ma configuration ci-dessus pour une nouvelle connexion ( connection myConn2), avec tout identique sauf pour le rightsubnet. Quand j'utilise ipsec auto --up myConnje peux cingler 172.168.1.X. Lorsque j'essaie de faire apparaître la deuxième connexion ( ipsec auto --up myConn2), je peux envoyer une requête ping à 192.168.3.X mais la première connexion s'éteint complètement.
FixMaker
Pour la connexion en tant que client sur de nombreux routeurs IPSec (comme Cisco), vous serez plus simple à utiliser vpnc!
F.Hauri

Réponses:

3

On dirait que le séparateur habituel pour les sous-réseaux multiples est une virgule , mais au moins openswan-2.6.32 fonctionne aussi avec les espaces.

Des informations intéressantes doivent être enregistrées, /var/log/securequi pourraient contenir des indices sur la raison pour laquelle cela ne fonctionne pas. Publiez également la sortie de ip x s shet ip x p sh.

skarap
la source
Si vous êtes arrivé ici en essayant de passer d'un hôte unique à plusieurs hôtes, faites attention au fait que la clé pour plusieurs sous-réseaux est au pluriel ( rightsubnet*s*) au lieu du singulier.
mgarciaisaia
1

Faites une connconfiguration de section pour chaque sous-réseau sur les DEUX points de terminaison du tunnel. Un seul d'entre eux (le premier démarré) démarrera une négociation SA, le second (ou plus) ne fera qu'un nouveau SPD des autres sous-réseaux.

Endre Szabo
la source
Malheureusement, je ne peux pas le faire car le point de terminaison distant est un routeur FortiGate tiers (ne pas exécuter OpenSwan). Je commence à me demander si le problème peut être lié au fait que le routeur ne peut pas gérer plusieurs tunnels entre les mêmes points de terminaison.
FixMaker
1

Si tu utilises rightsubnets , vous devez utiliser leftsubnetsaussi bien, nonleftsubnet . Même s'il n'y a qu'un seul sous-réseau de ce côté. La page de manuel ipsec.conf n'explique pas très bien cela, mais elle est là.

J'ai eu des problèmes similaires pendant des mois et j'ai trouvé la réponse ici: /server/571352/openswan-multiple-subnets-routing-issue

exor314
la source
1
Pas le cas. leftsubnets = {singletone}, doit être identique à leftsubnet =. (J'ai écrit le code)
mcr
C'est la solution qui a fonctionné pour moi en utilisant libeswan 3.15. Ma gauche avait un seul sous-réseau et la droite en avait plusieurs. Si j'ai configuré la gauche à l'aide de leftsubnet = et la droite à l'aide de rightsubnets = {}, seul le dernier sous-réseau de droits est réellement connecté. Une fois que j'ai configuré la gauche pour utiliser leftsubnets = {} avec le sous-réseau, il s'est connecté à tous.
Adam Plumb
1

Il semble qu'il y ait un bogue dans OpenSwan où la liste des sous-réseaux a besoin d'une virgule supplémentaire à la fin pour fonctionner correctement. Essayer:

rightsubnets={172.16.1.0/24,192.168.3.0/24,}

Notez la virgule supplémentaire à la fin.

Ryan Shillington
la source
Ce n'est pas le cas, aucun des cas de test ou des exemples n'a de virgule supplémentaire.
mcr
-3

Ça devrait être comme ça

rightsubnets={172.16.1.0/24,192.168.3.0/24}

Utilisez une virgule ( ,) et non un espace pour séparer les entrées.

Madhu
la source
1
C'est ce que semble dire la réponse d'il y a deux ans.
G-Man dit `` Réintègre Monica ''