Ping via un tunnel GRE rejeté entre 2 interfaces d'un routeur - Ping n'atteint pas le sous-réseau

1

J'ai un problème intéressant pour lequel j'espère que quelqu'un pourra aider. J'essaie de créer un tunnel GRE entre 2 routeurs (sous Linux Ubuntu 12.04) et de transmettre le trafic entre 2 sous-réseaux via ce tunnel.

Ce que j'essaie de réaliser peut être simplifié par la configuration suivante, imaginez 4 ordinateurs (comme le montre le schéma suivant), 2 sont des routeurs, 2 des PC connectés à une passerelle ...

      |----------------------|              |----------------------|
SUBA--+--ETH0          ETH1--+----------- --+--ETH0          ETH1--+--SUBB
      |----------------------|              |----------------------|
            PC1 as router                        PC2 as router

Maintenant, si le diagramme est faux, laissez-moi vous l'expliquer. J'ai 2 PC configurés en tant que routeurs ( ip_forwarding=1, proxy_arp=1). Chaque PC en tant que routeur a 2 interfaces et chaque interface a sa propre adresse IP.

Côté gauche du diagramme (PC1 en tant que routeur)

  • SUBA=192.165.13.25
  • ETH0 sur PC1 en tant que routeur =192.165.13.254(GW de SUBA)
  • ETH1 sur PC1 en tant que routeur = 192.168.6.40(adresse fournie par le fournisseur de service) -> il s'agit du GW par défaut du PC1 en tant que routeur.

Côté droit du diagramme (PC2 en tant que routeur)

  • SUBB=192.160.20.25
  • ETH0 sur PC2 en tant que routeur =192.168.20.41(adresse fournie par le fournisseur de service)
  • ETH1 sur PC2 en tant que routeur =192.160.20.254(GW de SUBB)

Le routage est assez simple à chaque extrémité et peut être décrit par des mots.

Sur PC1 en tant que routeur:

  • pour accéder à 192.165.13.0/24, utilisez eth0
  • pour accéder à 192.168.6.0/24, utilisez eth1
  • GW par défaut est 192.168.6.40 => il s'agit de eth1

Sur PC2 en tant que routeur:

  • pour accéder au 192.160.20.0/24, utilisez eth1
  • pour accéder au 192.168.20.0/24, utilisez eth0
  • GW par défaut est 192.168.20.41 => c'est eth0

Dans cette configuration, SANS RÈGLES IPTABLES SUPPLÉMENTAIRES, tout le monde peut cingler tout le monde. Et je vais bien. SUBA peut faire un ping sur SUBB et l'inverse est également acceptable.

Maintenant, je crée un tunnel GRE entre PC1 en tant que routeur eth1 et PC2 en tant que routeur eth0 tunnel sur PC1 en tant que routeur possède un tunnel GRE avec local = 192.168.6.40et remote = 192.168.20.41 et bien sûr, j'ai la symétrie sur l'autre routeur avec tunnel sur PC2 en tant que routeur a GRE tunnel avec local = 192.168.20.41et distant = 192.168.6.40...

Je modifie le routage (ajoute une règle) sur PC2 en tant que routeur, juste pour forcer le trafic dans le tunnel: pour accéder, 192.165.13.0/24utilisez le tunnel GRE.

Rien d'autre n'est fait.

Maintenant, SUBB essaie d'envoyer une requête ping à SUBA et cela ne fonctionne pas, ne fonctionne pas non plus d'essayer d'envoyer une requête ping à GW de SUBA (qui est la deuxième interface de PC1 en tant que routeur)

Voici ce que je vois à l'aide de wireshark ou de tcpdump:

  1. Le trafic pénètre dans l'interface de tunnel sur PC2 en tant que routeur
  2. Le trafic sort de l'interface de tunnel sur le PC1 en tant que routeur
  3. Le trafic n'arrive jamais à l'interface eth0 de PC1 en tant que routeur.

J'ai donc approfondi et ajouté plusieurs règles dans les tables IP pour voir ce qui se passait:

chaque requête ping est comptée dans:

mangle prerouting
nat prerouting

Mais le ping n’est compté ni dans mangle forward (si on essaie de le transmettre à SUBA) ni dans mangle input. Il semble que le noyau élimine silencieusement le paquet dans le routage et je ne sais pas pourquoi. À mon avis, je ne devrais pas avoir à modifier iptables car je n'en avais pas besoin avant la création des tables GRE ...

Toute aide sur ce qui pourrait se passer, comment faire en sorte que le noyau rapporte le paquet ou la raison pour laquelle il est jeté serait hautement appréciée.

Aymeric
la source
Avez-vous affecté des adresses IP aux points de terminaison du tunnel sur PC1 et PC2? Si oui, et si les adresses IP des points de terminaison du tunnel sont xxx1 et xxx2, pouvez-vous effectuer un ping de .1 à .2?
Aseaudi
Pouvez-vous s'il vous plaît poster vos tables de routage sur PC1 et PC2?
MariusMatutiae
J'ai le même problème, aidez quelqu'un
Spirit