User Tools

Site Tools


system:tunnelling

Tunnelling

Too many tunnels

keywords: ipsec, openvpn, bgp, quagga, gre, ipip, iptables, iproute2

Ici, je vais présenter un petit projet pédagogique juste pour placer quelques PoC en place, et montrer comment utiliser quelques tunnels, et du routage dynamique. Cela va inclure des tunnels chiffrés ipsec et openvpn, du routage dynamique avec bgp, des tunnels non-chiffrés ipip ou gre (juste pour pouvoir router correctement), et de la configuration de routage/firewall avec iptables/iproute2.

L'ensemble des explications qui suivent partent sur une base de Debian/squeeze (version stable a l'heure ou j'écris). L'opération a été réalisé sur des machines virtuelles (VM) Xen.

Les installations ont été faite a coup de xen-create-image, avec debootstrap, en y ajoutant les paquets confortable suivant :

apt-get install vim less tcpdump ethtool

Configuration de départ

La configuration de départ est la suivante :

  • trois machines connectés à internet, représentant 3 sites distinct (srv1, srv2, srv3)
  • les deux premiers sites ont chacun des un réseau local (ws1 et ws2 étant dans ces réseaux)
  • vpn1 et vpn2 sont 2 machines également sur le net, qui serviront de point de passerelle VPN sortante
  • nomad représente un poste nomade souhaitant bénéficier des services de routage d'un des serveurs
    +---------+             +---------+             +---------+
    |         |             |         |             |         |
    |  vpn1   |             |  vpn2   |             |  nomad  |
    |         |             |         |             |         |
    +---------+             +---------+             +---------+
    ip | 1.2.1.2/24         ip | 1.2.2.2/24         ip | a.b.c.d/24
       |                       |                       |
       |                       |                       |
       |                       |                       |
    gw | 1.2.1.1            gw | 1.2.2.1            gw | a.b.c.1
   ____|_______________________|_______________________|____________
  (  )   (  )          (    (    )            (        (    (    )  )_
 (      (          )        )      (   (          (           )       )
(  (        )   (    )   )    (   NET        (        )   )      (  (  )
 (_   (       (    (    (   )           )   )      (          (      _)
   (   )  )     (  )     )            )         )      (    )     ( )
    ---+-----------------------+-----------------------+------------
    gw | 1.1.1.1            gw | 1.1.2.1            gw | 1.1.3.1
       |                       |                       |
       |                       |                       |
       |                       |                       |
    ip | 1.1.1.2/24         ip | 1.1.2.2/24         ip | 1.1.3.2/24
    +---------+             +---------+             +---------+
    |         |             |         |             |         |
    |  srv1   |             |  srv2   |             |  srv3   |
    |         |             |         |             |         |
    +---------+             +---------+             +---------+
       | 192.168.1.1/24     ip | 192.168.2.1/24
       |                       |
    =========== LAN1        =========== LAN2
            |                       |
192.168.1.2 | ip        192.168.2.2 | ip
    +---------+             +---------+
    |         |             |         |
    |   ws1   |             |   ws2   |
    |         |             |         |
    +---------+             +---------+

Pour le proptotype, une VM a été utilisé pour le net, le routage activé (ip_forward) sur les serveurs (srv1, srv2, srv3) ainsi que du masquerading vers le réseau public. La configuration des firewall peux être trouvé ici.

mise en place des pleins de tunnels

  • IPsec: les trois serveurs (srv1, srv2 et srv3) seront connectés en VPN ipsec entre eux, permettant une communication chiffrée entre eux
  • BGP: nous placerons également un routage dynamique, afin que si la liaison entre deux des trois points tombent, la communication puisse passer par un tiers (qui a fait passer la fibre sous le marteau-piqueur ce matin ?)
  • Openvpn (step 1): on permettra a nomad de se connecter via openvpn a srv1, et de pouvoir joindre les réseaux internes
  • Openvpn (step 2): en revenant a l'état initial, nous verrons a mettre en place des VPNs de sortie pour srv1, srv2 et srv3 vers les machines vpn1 et vpn2
  • tout en même temps: nous ajouterons une configuration simple afin de permettre de se connecter aux VPN de sortie, tout en se connectant toujours en IPsec
  • partage de sortie: de façon un peu plus tricky, nous verrons comment tout faire passer par un tunnel chiffré, et également annoncer notre sortie VPN aux autres réseaux, des fois que leur connexions chiffrées sortantes VPN tombent
  • Ouais, et mes services public autre ? Ok, on va ajouter le nécessaire pour que les services qui se connectent en direct puisse prendre une réponse directement, sans que l'on tente de répondre via un VPN.

Au final, nomad pourra se connecter a srv1. Les serveurs seront connecter entre eux en IPsec,

Liens

system/tunnelling.txt · Last modified: 2011/08/27 15:34 by ze