4 votes

Tunnel Openswan en place, mais ne fonctionne que dans une seule direction

J'ai réussi à établir une connexion IPsec, mais elle ne fonctionne que partiellement. Un côté n'envoie pas de paquets à travers le tunnel. Il semble que la topologie du réseau ne soit pas claire pour ce côté.

Toute aide est la bienvenue ! Merci !

C'est le schéma du réseau :

"office"(192.168.73.0/24) == "vpn"(192.168.73.1) == "router"(6.6.6.6) <====> "server"(7.7.7.7) == "VM_LAN"(192.168.133.0/24)

6.6.6.6 et 7.7.7.7 sont des IP publiques symboliques, c'est-à-dire que le "routeur" et le "serveur" sont tous deux directement connectés à Internet.

"vpn" et "serveur" tournent tous les deux sous CentOS 6. Le "routeur" est un modem câble qui effectue la NAT et la redirection de port.

La connexion est établie.

Sur le "vpn", je peux faire un ping sur l'IP interne du "serveur" :

[root@vpn]# ping 192.168.133.1
PING 192.168.133.1 (192.168.133.1) 56(84) bytes of data.
64 bytes from 192.168.133.1: icmp_seq=1 ttl=64 time=74.8 ms

Sur le "serveur" je ne peux pas faire un ping sur le "vpn", il n'y a même pas de paquet envoyé.

Ce qui suit est un dump de "server" montrant le paquet ping ci-dessus entrant. J'utilise la même commande pour tester si des paquets sont envoyés de "server" à "vpn", lorsque je fais un ping depuis "server", mais aucun paquet n'apparaît.

[root@server]# tcpdump port 500 or port 4500
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:40:21.793577 IP 6.6.6.6.ipsec-nat-t > 7.7.7.7.ipsec-nat-t: UDP-encap: ESP(spi=0x712a1d37,seq=0x2), length 132
14:40:21.793650 IP 7.7.7.7.ipsec-nat-t > 6.6.6.6.ipsec-nat-t: UDP-encap: ESP(spi=0x840e6b76,seq=0x2), length 132

ipsec verify semble correct :

[root@server]# ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                                 [OK]
Linux Openswan U2.6.32/K2.6.32-358.2.1.el6.x86_64 (netkey)
Checking for IPsec support in kernel                            [OK]
 SAref kernel support                                           [N/A]
 NETKEY:  Testing for disabled ICMP send_redirects              [OK]
NETKEY detected, testing for disabled ICMP accept_redirects     [OK]
Checking that pluto is running                                  [OK]
 Pluto listening for IKE on udp 500                             [OK]
 Pluto listening for NAT-T on udp 4500                          [OK]
Checking for 'ip' command                                       [OK]
Checking /bin/sh is not /bin/dash                               [OK]
Checking for 'iptables' command                                 [OK]
Opportunistic Encryption Support                                [DISABLED]

iptables est désactivé :

[root@server]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

[root@server]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
7.7.7.7         0.0.0.0         255.255.255.255 UH    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         7.7.7.1         0.0.0.0         UG    0      0        0 eth0

Mon ipsec.conf :

config setup
    # Debug-logging controls:  "none" for (almost) none, "all" for lots.
    # klipsdebug=none
    # plutodebug="control parsing"
     plutodebug="all"
    # For Red Hat Enterprise Linux and Fedora, leave protostack=netkey
    protostack=netkey
    nat_traversal=yes
    virtual_private="%v4:192.168.73.0/24"
    oe=off
    # Enable this if you see "failed to find any available worker"
    # nhelpers=0

conn aaa-office
    authby=secret
    left=7.7.7.7
    leftsubnet=192.168.133.0/24
    right=6.6.6.6
    rightsubnet=192.168.73.0/24
    rightid=192.168.73.8
    auto=add

1 votes

Quelle est la sortie de ip addr , ip route y iptables -L OUTPUT -n sur le serveur ?

8voto

grasbueschel Points 121

Je vais répondre moi-même et j'espère que ces informations seront utiles à d'autres personnes confrontées au même problème.

La cause principale était que les paquets provenant du "serveur" n'étaient pas acheminés par le tunnel. En utilisant ip xfrm policy Je vois que la politique de routage à travers le tunnel est que les paquets doivent provenir de 192.168.133.0/24.

Un ping de "server" à "vpn" a donné ces paquets cependant :

17:29:16.549349 IP 7.7.7.7 > 192.168.73.8: ICMP echo request, id 43864, seq 1, length 64

Ainsi, lors du ping, l'IP source utilisée était naturellement l'IP publique du serveur. Ce n'était pas le cas pour la machine "vpn", puisque cette machine était déjà dans le sous-réseau. Le problème a été résolu lorsque j'ai ajouté l'instruction suivante au fichier de configuration du "serveur" :

leftsourceip=192.168.133.1

Maintenant, tout fonctionne comme prévu et je peux atteindre le sous-réseau derrière le "vpn" à partir du "serveur".

1voto

Craig Points 361

Je ne connais pas openswan, mais : dans un tunnel VPN, assurez-vous que vous avez un VPN basé sur une route ou sur une politique. Par exemple, s'il est basé sur une route, il devrait y avoir une route qui dit "prend cette interface tunnel pour arriver au réseau de 192.168.73.1". S'il est basé sur une politique, il devrait y avoir une politique qui dit "le trafic source de x envoyé à la destination y = tunnel à travers le tunnel VPN".

Désolé... j'ai enlevé beaucoup de choses... mauvaise compréhension de la lecture... Je vois l'information sur l'interface LAN/IP de votre serveur maintenant et je réalise que vous essayez de faire un ping à partir de cette source IP de 192.168.133.1.

Je vérifierais quand même qu'une politique ou une route dans openswan est définie du côté du serveur pour la source de trafic 192.168.133.0/24 destinée à 192.168.73.0/24 et je m'assurerais qu'elle utilise le tunnel. Il semble que le trafic n'utilise pas le tunnel mais qu'il fasse quelque chose comme.. :

192.168.133.1 -- - essaie d'envoyer un ping à 192.168.73.1 (ce qui échoue)

0 votes

Je pense que la dernière phrase ("Au lieu de cela, le 7.7.7.7 finit probablement par être NATé sur l'interface extérieure par défaut vers Internet et ne peut donc pas trouver 192.168.73.2.") n'a pas de sens. Pourquoi devriez-vous router une adresse IP publique à travers un VPN ? ping 192.168.73.2 n'échoue certainement pas. parce que 7.7.7.7 est atteint sans le tunnel.

0 votes

Ah...je n'avais pas remarqué que c'était l'IP publique. Donc pas de NAT, mais il n'y a toujours pas de ping direct sur 192.168.73.2... Je vais mettre à jour ma réponse.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X