Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    VPN IPSec entre Pfsense et openswan

    Scheduled Pinned Locked Moved Français
    9 Posts 3 Posters 2.1k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      FLamme_2
      last edited by

      Bonjour à tous,

      Je suis actuellement sur un épineux problème que je ne parvient pas à résoudre.

      Avant toute chose, je suis étudiant en informatique, au vu de certaines discutions houleuses sur le forum, je préfère vous en avertir :P

      Je rentre dans le vif du sujet, je souhaiterais simplement mettre en place un VPN entre un serveur distant et un pfsense :

      L'adresse coté WAN sur PFsense est variable (ligne dsl), idem pour les clients

      La configuration sur le serveur distant est fonctionnel, je peux me connecter en l2tp/ipsec avec windows.

      Le détail de cette configuration est :

      ipsec whack --status
      000 using kernel interface: netkey
      000 interface lo/lo ::1
      000 interface lo/lo 127.0.0.1
      000 interface lo/lo 127.0.0.1
      000 interface eth0/eth0 123.123.123.123
      000 interface eth0/eth0 123.123.123.123
      000 %myid = (none)
      000 debug none
      000
      000 virtual_private (%priv):
      000 - allowed 6 subnets: 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 25.0.0.0/8, fd00::/8, fe80::/10
      000 - disallowed 0 subnets:
      000 WARNING: Disallowed subnets in virtual_private= is empty. If you have
      000          private address space in internal use, it should be excluded!
      000
      000 algorithm ESP encrypt: id=2, name=ESP_DES, ivlen=8, keysizemin=64, keysizemax=64
      000 algorithm ESP encrypt: id=3, name=ESP_3DES, ivlen=8, keysizemin=192, keysizemax=192
      000 algorithm ESP encrypt: id=6, name=ESP_CAST, ivlen=8, keysizemin=40, keysizemax=128
      000 algorithm ESP encrypt: id=7, name=ESP_BLOWFISH, ivlen=8, keysizemin=40, keysizemax=448
      000 algorithm ESP encrypt: id=11, name=ESP_NULL, ivlen=0, keysizemin=0, keysizemax=0
      000 algorithm ESP encrypt: id=12, name=ESP_AES, ivlen=8, keysizemin=128, keysizemax=256
      000 algorithm ESP encrypt: id=13, name=ESP_AES_CTR, ivlen=8, keysizemin=160, keysizemax=288
      000 algorithm ESP encrypt: id=14, name=ESP_AES_CCM_A, ivlen=8, keysizemin=128, keysizemax=256
      000 algorithm ESP encrypt: id=15, name=ESP_AES_CCM_B, ivlen=8, keysizemin=128, keysizemax=256
      000 algorithm ESP encrypt: id=16, name=ESP_AES_CCM_C, ivlen=8, keysizemin=128, keysizemax=256
      000 algorithm ESP encrypt: id=18, name=ESP_AES_GCM_A, ivlen=8, keysizemin=128, keysizemax=256
      000 algorithm ESP encrypt: id=19, name=ESP_AES_GCM_B, ivlen=8, keysizemin=128, keysizemax=256
      000 algorithm ESP encrypt: id=20, name=ESP_AES_GCM_C, ivlen=8, keysizemin=128, keysizemax=256
      000 algorithm ESP encrypt: id=22, name=ESP_CAMELLIA, ivlen=8, keysizemin=128, keysizemax=256
      000 algorithm ESP encrypt: id=252, name=ESP_SERPENT, ivlen=8, keysizemin=128, keysizemax=256
      000 algorithm ESP encrypt: id=253, name=ESP_TWOFISH, ivlen=8, keysizemin=128, keysizemax=256
      000 algorithm ESP auth attr: id=1, name=AUTH_ALGORITHM_HMAC_MD5, keysizemin=128, keysizemax=128
      000 algorithm ESP auth attr: id=2, name=AUTH_ALGORITHM_HMAC_SHA1, keysizemin=160, keysizemax=160
      000 algorithm ESP auth attr: id=5, name=AUTH_ALGORITHM_HMAC_SHA2_256, keysizemin=256, keysizemax=256
      000 algorithm ESP auth attr: id=6, name=AUTH_ALGORITHM_HMAC_SHA2_384, keysizemin=384, keysizemax=384
      000 algorithm ESP auth attr: id=7, name=AUTH_ALGORITHM_HMAC_SHA2_512, keysizemin=512, keysizemax=512
      000 algorithm ESP auth attr: id=8, name=AUTH_ALGORITHM_HMAC_RIPEMD, keysizemin=160, keysizemax=160
      000 algorithm ESP auth attr: id=9, name=AUTH_ALGORITHM_AES_CBC, keysizemin=128, keysizemax=128
      000 algorithm ESP auth attr: id=251, name=(null), keysizemin=0, keysizemax=0
      000
      000 algorithm IKE encrypt: id=0, name=(null), blocksize=16, keydeflen=131
      000 algorithm IKE encrypt: id=5, name=OAKLEY_3DES_CBC, blocksize=8, keydeflen=192
      000 algorithm IKE encrypt: id=7, name=OAKLEY_AES_CBC, blocksize=16, keydeflen=128
      000 algorithm IKE hash: id=1, name=OAKLEY_MD5, hashsize=16
      000 algorithm IKE hash: id=2, name=OAKLEY_SHA1, hashsize=20
      000 algorithm IKE dh group: id=2, name=OAKLEY_GROUP_MODP1024, bits=1024
      000 algorithm IKE dh group: id=5, name=OAKLEY_GROUP_MODP1536, bits=1536
      000 algorithm IKE dh group: id=14, name=OAKLEY_GROUP_MODP2048, bits=2048
      000 algorithm IKE dh group: id=15, name=OAKLEY_GROUP_MODP3072, bits=3072
      000 algorithm IKE dh group: id=16, name=OAKLEY_GROUP_MODP4096, bits=4096
      000 algorithm IKE dh group: id=17, name=OAKLEY_GROUP_MODP6144, bits=6144
      000 algorithm IKE dh group: id=18, name=OAKLEY_GROUP_MODP8192, bits=8192
      000 algorithm IKE dh group: id=22, name=OAKLEY_GROUP_DH22, bits=1024
      000 algorithm IKE dh group: id=23, name=OAKLEY_GROUP_DH23, bits=2048
      000 algorithm IKE dh group: id=24, name=OAKLEY_GROUP_DH24, bits=2048
      000
      000 stats db_ops: {curr_cnt, total_cnt, maxsz} :context={0,0,0} trans={0,0,0} attrs={0,0,0}
      000
      000 "l2tp-psk": 123.123.123.123<123.123.123.123>[+S=C]:17/1701...%virtual[+S=C]:17/%any===?; unrouted; eroute owner: #0
      000 "l2tp-psk":     myip=unset; hisip=unset;
      000 "l2tp-psk":   ike_life: 3600s; ipsec_life: 28800s; rekey_margin: 540s; rekey_fuzz: 100%; keyingtries: 0
      000 "l2tp-psk":   policy: PSK+ENCRYPT+TUNNEL+DONTREKEY+IKEv2ALLOW+SAREFTRACK+lKOD+rKOD; prio: 32,32; interface: eth0;
      000 "l2tp-psk":   newest ISAKMP SA: #0; newest IPsec SA: #0;
      000 "l2tp-psk"[13]: 123.123.123.123<123.123.123.123>[+S=C]:17/1701...85.68.223.142[192.168.1.100,+S=C]:17/1701===192.168.1.100/32; erouted; eroute owner: #22
      000 "l2tp-psk"[13]:     myip=unset; hisip=unset;
      000 "l2tp-psk"[13]:   ike_life: 3600s; ipsec_life: 28800s; rekey_margin: 540s; rekey_fuzz: 100%; keyingtries: 0
      000 "l2tp-psk"[13]:   policy: PSK+ENCRYPT+TUNNEL+DONTREKEY+IKEv2ALLOW+SAREFTRACK+lKOD+rKOD; prio: 32,32; interface: eth0;
      000 "l2tp-psk"[13]:   newest ISAKMP SA: #19; newest IPsec SA: #22;
      000 "l2tp-psk"[13]:   IKE algorithm newest: AES_CBC_256-SHA1-MODP2048
      000
      000 #22: "l2tp-psk"[13] 85.68.223.142:4500 STATE_QUICK_R2 (IPsec SA established); EVENT_SA_EXPIRE in 2615s; newest IPSEC; eroute owner; isakmp#19; idle; import:not set
      000 #22: "l2tp-psk"[13] 85.68.223.142 esp.8c30d2f4@85.68.223.142 esp.b0ccab72@123.123.123.123 ref=0 refhim=4294901761
      000 #19: "l2tp-psk"[13] 85.68.223.142:4500 STATE_MAIN_R3 (sent MR3, ISAKMP SA established); EVENT_SA_EXPIRE in 20975s; newest ISAKMP; nodpd; idle; import:not set
      000
      
      

      Mon fichier /etc/ipsec.conf :

      version 2.0
      
      config setup
              dumpdir=/var/run/pluto/
              nat_traversal=yes
              virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10
              oe=off
              protostack=netkey
      
      conn l2tp-psk
              authby=secret
              pfs=no
              auto=add
              rekey=no
              type=tunnel
              left=123.123.123.123
              leftprotoport=17/1701
              right=%any
              rightprotoport=17/%any
              rightsubnet=vhost:%priv,%no
      

      Mon fichier /etc/xl2tpd/xl2tpd.conf

      [global]                        ; Global parameters:
      port = 1701                     ; * Bind to port 1701
      listen-addr = 123.123.123.123
      
      [lns default]                   ; Our fallthrough LNS definition
      ip range = 10.0.0.10-10.0.0.50  ; * Allocate from this IP range
      local ip = 10.0.0.254           ; * Our local IP to use
      require chap = yes              ; * Require CHAP auth. by peer
      refuse pap = yes                ; * Refuse PAP authentication
      

      PFsense :
      Les erreurs que je rencontre (log pfsense) :

      Mar 4 17:38:48	racoon: INFO: @(#)ipsec-tools 0.8.1 (http://ipsec-tools.sourceforge.net)
      Mar 4 17:38:48	racoon: INFO: @(#)This product linked OpenSSL 1.0.1e 11 Feb 2013 (http://www.openssl.org/)
      Mar 4 17:38:48	racoon: INFO: Reading configuration from "/var/etc/ipsec/racoon.conf"
      Mar 4 17:38:48	racoon: DEBUG: call pfkey_send_register for AH
      Mar 4 17:38:48	racoon: DEBUG: call pfkey_send_register for ESP
      Mar 4 17:38:48	racoon: DEBUG: call pfkey_send_register for IPCOMP
      Mar 4 17:38:48	racoon: DEBUG: reading config file /var/etc/ipsec/racoon.conf
      Mar 4 17:38:48	racoon: DEBUG: no check of compression algorithm; not supported in sadb message.
      Mar 4 17:38:48	racoon: DEBUG: getsainfo params: loc='10.0.0.15' rmt='10.0.0.0/8' peer='NULL' client='NULL' id=1
      Mar 4 17:38:48	racoon: DEBUG: open /var/db/racoon/racoon.sock as racoon management.
      Mar 4 17:38:48	racoon: [Self]: INFO: 192.168.1.30[4500] used for NAT-T
      Mar 4 17:38:48	racoon: [Self]: INFO: 192.168.1.30[4500] used as isakmp port (fd=9)
      Mar 4 17:38:48	racoon: [Self]: INFO: 192.168.1.30[500] used for NAT-T
      Mar 4 17:38:48	racoon: [Self]: INFO: 192.168.1.30[500] used as isakmp port (fd=10)
      Mar 4 17:38:48	racoon: DEBUG: pk_recv: retry[0] recv()
      Mar 4 17:38:48	racoon: DEBUG: got pfkey X_SPDDUMP message
      Mar 4 17:38:48	racoon: DEBUG: pfkey X_SPDDUMP failed: No such file or directory
      Mar 4 17:38:48	racoon: DEBUG: pk_recv: retry[0] recv()
      Mar 4 17:38:48	racoon: DEBUG: got pfkey REGISTER message
      Mar 4 17:38:48	racoon: INFO: unsupported PF_KEY message REGISTER
      Mar 4 17:38:48	racoon: DEBUG: pk_recv: retry[0] recv()
      Mar 4 17:38:48	racoon: DEBUG: got pfkey X_SPDADD message
      Mar 4 17:38:48	racoon: DEBUG: pk_recv: retry[0] recv()
      Mar 4 17:38:48	racoon: DEBUG: got pfkey X_SPDADD message
      Mar 4 17:38:48	racoon: DEBUG: sub:0xbfbfe724: 192.168.254.0/24[0] 192.168.254.254/32[0] proto=any dir=in
      Mar 4 17:38:48	racoon: DEBUG: db :0x28501288: 192.168.254.254/32[0] 192.168.254.0/24[0] proto=any dir=out
      Mar 4 17:38:48	racoon: DEBUG: pk_recv: retry[0] recv()
      Mar 4 17:38:48	racoon: DEBUG: got pfkey X_SPDADD message
      Mar 4 17:38:48	racoon: DEBUG: sub:0xbfbfe724: 10.0.0.15/32[0] 10.0.0.0/8[0] proto=any dir=out
      Mar 4 17:38:48	racoon: DEBUG: db :0x28501288: 192.168.254.254/32[0] 192.168.254.0/24[0] proto=any dir=out
      Mar 4 17:38:48	racoon: DEBUG: sub:0xbfbfe724: 10.0.0.15/32[0] 10.0.0.0/8[0] proto=any dir=out
      Mar 4 17:38:48	racoon: DEBUG: db :0x285013c8: 192.168.254.0/24[0] 192.168.254.254/32[0] proto=any dir=in
      Mar 4 17:38:48	racoon: DEBUG: pk_recv: retry[0] recv()
      Mar 4 17:38:48	racoon: DEBUG: got pfkey X_SPDADD message
      Mar 4 17:38:48	racoon: DEBUG: sub:0xbfbfe724: 10.0.0.0/8[0] 10.0.0.15/32[0] proto=any dir=in
      Mar 4 17:38:48	racoon: DEBUG: db :0x28501288: 192.168.254.254/32[0] 192.168.254.0/24[0] proto=any dir=out
      Mar 4 17:38:48	racoon: DEBUG: sub:0xbfbfe724: 10.0.0.0/8[0] 10.0.0.15/32[0] proto=any dir=in
      Mar 4 17:38:48	racoon: DEBUG: db :0x285013c8: 192.168.254.0/24[0] 192.168.254.254/32[0] proto=any dir=in
      Mar 4 17:38:48	racoon: DEBUG: sub:0xbfbfe724: 10.0.0.0/8[0] 10.0.0.15/32[0] proto=any dir=in
      Mar 4 17:38:48	racoon: DEBUG: db :0x28501508: 10.0.0.15/32[0] 10.0.0.0/8[0] proto=any dir=out
      

      Et la configuration de pfsense :


      Ressources utilisés :

      Livres :
      Les VPN - Fonctionnement, mise en oeuvre et maintenance - Edition ENI
      pfsense - The definitive Guide - Edition Reed Media Services

      Documentations :
      https://github.com/xelerance/Openswan/wiki
      https://github.com/xelerance/Openswan/wiki/L2tp-ipsec-configuration-using-openswan-and-xl2tpd
      http://www.nta-monitor.com/wiki/index.php/OpenSwan
      https://doc.pfsense.org/index.php/Routing_internet_traffic_through_a_site-to-site_IPsec_tunnel
      https://doc.pfsense.org/index.php/IPsec_Troubleshooting

      Problèmes similaires :
      https://forum.pfsense.org/index.php?topic=65312.0
      https://forum.pfsense.org/index.php?topic=4957.0
      http://marc.info/?l=pfsense-support&m=123365753708608

      J'ai un doute concernant la configuration phase 2 sur mon pfsense,

      EDIT :

      La connexion fonctionnel sous windows :

      Je vous remercie par avance, de votre soutient,

      Cordialement,

      1 Reply Last reply Reply Quote 0
      • C
        ccnet
        last edited by

        D'où viennent les erreurs que vous avez posté ? Pfsense, Openswan ? Et à quel moment ? Pas le temps de chercher je préfère vous poser la question.

        1 Reply Last reply Reply Quote 0
        • F
          FLamme_2
          last edited by

          Merci de l'intérêt que vous portez à mon problème,

          Les erreurs postés, proviennent des logs de pfsense.

          1 Reply Last reply Reply Quote 0
          • J
            jdh
            last edited by

            J'ai l'impression que vous configurez pfSense par Ipsec et que vos clients utilisent L2TP.
            La logique serait plutôt de configurer un VPN L2TP sur pfSense face à des clients L2TP.

            NB : Microsoft indique que L2TP utilise Ipsec mais je n'entends pas que cela signifie qu'on peut se connecter à un serveur Ipsec "pur".

            (Je ne vais pas dire plus que ce post … parce que j'ai tenté une seule fois de configurer le serveur VPN L2TP sans aucun succès, alors que j'ai plusieurs pfSense en serveur VPN OpenVPN qui sont immédiats ainsi que des pfSense en serveur VPN Ipsec site à site presque immédiats aussi !)

            Albert EINSTEIN : Si vous ne pouvez pas l'exprimer simplement, c'est que vous ne le comprenez pas assez bien. (If you can’t explain it simply, you don’t understand it well enough.)

            1 Reply Last reply Reply Quote 0
            • F
              FLamme_2
              last edited by

              J'ai l'impression que vous configurez pfSense par Ipsec et que vos clients utilisent L2TP.

              Oui, mais clients utilisent L2TP, je suis en accord avec vous, cela m'as d'ailleurs un peu perturbé en lisant les documentations, sur le site technet de microsoft, mais du coup par rapport à vos propros, j'ai l'impression de ne pas avoir compris quelques choses :P

              Il me semblait qu'IPSec n'est pas un VPN, mais bien une un outils qui permet d'ajouter une couche cryptographique, a l'instar de SSL/TLS sur OpenVPN, du moins les documentations vont dans ce sens…

              Car ce que j'avais compris c'était que L2TP était un "mélange" de PPTP de microsoft et L2F de cisco, qu'il fonctionnait sur la couche 2 du modèle OSI, mais que a proprement parlé, nous pouvions faire du VPN avec seulement du PPTP, car lui aussi avait sa couche de sécurité, désaprouvé aujourd'hui. Es-ce que je me trompe, ou es-ce que j'ai mélangé des informations ?

              La logique serait plutôt de configurer un VPN L2TP sur pfSense face à des clients L2TP.

              En fait, le serveur nommé "serveur distant" a plusieurs clients et des ressources disponibles pour ces clients. Ce serveur est un serveur dédié avec une bande passante up/down et une disponibilité bien plus accrus que mon pfsense. En outre, il dispose d'une IP fixe. C'est pour cette raison que j'aimerais configurer mon pfsense en tant que client L2TP/IPSec.

              Cordialement,

              1 Reply Last reply Reply Quote 0
              • C
                ccnet
                last edited by

                Il y  a deux grandes familles de vpn : Ipsec (pas forcément tous interopérables entre eux) et d'autre part les vpn SSL (Open vpn pr exemple). Je parle de vpn qui offre des garanties de sécurité, je laisse de côté ceux qui sont peu sûrs (pptp) et ceux, beaucoup plus spécifiques, mis en ouvre sur les réseaux des opérateurs, comme MPLS.

                Pfsense sait faire du vpn ssl et du vpn Ipsec.

                On a tendance à considérer Ipsec comme plus sûr que la solution SSL. C'est tout relatif et question de mise en œuvre.
                Ipsec est souvent plus utilisé dans les vpn pour l'interconnexion de sites et SSL pour les utilisateurs nomades. Il y a de multiples raisons, mais en pratique il n'existe pas de bon client ipsec open source mais le client Openvpn est remarquablement fiable. D' où le choix d'Openvpn pour les nomades. L'interopérabilité est souvent plus évident avec Openvpn, même si le client Cisco Ipsec fonctionne très bien avec Pfsense, encore faut il disposer des licences.

                Une autre différence porte sur le fonctionnement du vpn lui même. Dans ipsec la totalité du paquet ip d'irigine est encapsulé (et chiffré) dans un autre paquet ip sur le réseau publique. De ce fait les entêtes ip et tcp des réseaux internes sont protégées (et conservées). Avec le vpn SSL seul la partie data du paquet est chiffrée. Cela peut convenir ou non selon les cas. Il n'y  a pas de réponse toute faite. On peut noter que le surcharge protocolaire est plus importante en ipsec et que les nat peut poser problème lors de la vérification de l'intégrité des paquets. L2TP est le pire de ce point de vue : http://wallu.pagesperso-orange.fr/pag-l.htm par exemple.

                En dehors de tout cela et dans votre cas ipsec semble un bonne solution. Vous devez vous assurer que les paramètres cryptographiques sont rigoureusement identique à chaque extrémité.

                1 Reply Last reply Reply Quote 0
                • F
                  FLamme_2
                  last edited by

                  C'est bien ce qui m'avait semblé, merci de ces informations ccnet :)

                  Concernant la mise en place de ma solution, là où je suis un peu dubitatif, c'est que je n'ai rien dans les logs côté serveur distant, pas une seule tentative de quoi que ce soit, alors que lorsque je me connecte (que cela échoue ou non) avec un client nomade, j'ai une tartine de lignes supplémentaires qui s'ajoute à mon syslog…

                  1 Reply Last reply Reply Quote 0
                  • C
                    ccnet
                    last edited by

                    Il faudrait activer spécifiquement des logs sur le serveur distant, ou monitorer le trafic sur le site distant pour vérifier qu'en effet un flux arrive.

                    1 Reply Last reply Reply Quote 0
                    • J
                      jdh
                      last edited by

                      Vous avez supprimé du post initial les images avec ipsec.
                      Il serait bon que vous indiquiez où vous en êtes : si client L2TP alors serveur L2TP

                      Albert EINSTEIN : Si vous ne pouvez pas l'exprimer simplement, c'est que vous ne le comprenez pas assez bien. (If you can’t explain it simply, you don’t understand it well enough.)

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post
                      Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.