Auteur Sujet: VPN IPsec entre 2 openWRT  (Lu 5736 fois)

0 Membres et 1 Invité sur ce sujet

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
VPN IPsec entre 2 openWRT
« le: 04 mars 2019 à 15:55:26 »
Bonjour,

Après mes déboires avec wireguard, j'ai décidé de passer sur IPsec on ne peut plus stable.

Voici une config que je pense correcte :

Routeur A
config 'ipsec'
list listen ''
option 'debug' '2'

config 'remote' 'other'
option 'enabled' '1'
option 'gateway' 'domaine.routeur.B'
option 'authentication_method' 'psk'
option 'pre_shared_key' 'xxxxxx'
option 'exchange_mode' 'aggressive'
option 'local_identifier' 'tunnelid'
list 'crypto_proposal' 'pre_g14_aes_sha1'
list 'tunnel' 'other_lan'

config 'crypto_proposal' 'pre_g14_aes_sha1'
option 'encryption_algorithm' 'aes128'
option 'hash_algorithm' 'sha1'
option 'dh_group' 'modp2048'

config 'tunnel' 'other_lan'
option 'local_subnet' '192.168.1.0/24'
option 'remote_subnet' '192.168.2.0/24'
option 'crypto_proposal' 'g14_aes_sha1'

config 'crypto_proposal' 'g14_aes_sha1'
option 'dh_group' 'modp2048'
option 'encryption_algorithm' 'aes128'
option 'hash_algorithm' 'sha1'

Routeur B
config 'ipsec'
list listen ''
option 'debug' '2'

config 'remote' 'other'
option 'enabled' '1'
option 'gateway' 'domaine.routeur.A'
option 'authentication_method' 'psk'
option 'pre_shared_key' 'xxxxxx'
option 'exchange_mode' 'aggressive'
option 'local_identifier' 'tunnelid'
list 'crypto_proposal' 'pre_g14_aes_sha1'
list 'tunnel' 'other_lan'

config 'crypto_proposal' 'pre_g14_aes_sha1'
option 'encryption_algorithm' 'aes128'
option 'hash_algorithm' 'sha1'
option 'dh_group' 'modp2048'

config 'tunnel' 'other_lan'
option 'local_subnet' '192.168.2.0/24'
option 'remote_subnet' '192.168.1.0/24'
option 'crypto_proposal' 'g14_aes_sha1'

config 'crypto_proposal' 'g14_aes_sha1'
option 'dh_group' 'modp2048'
option 'encryption_algorithm' 'aes128'
option 'hash_algorithm' 'sha1'

Comme dit précédemment, sur le routeur resté en 17.01, j'ai une erreur de script, faut-il remettre à zéro ou un upgrade en 18.06 devrait résoudre le problème ? :
root@LEDE:~# opkg install strongswan
Installing strongswan (5.5.3-1) to root...
Downloading http://downloads.lede-project.org/releases/17.01.4/packages/mips_24kc/packages/strongswan_5.5.3-1_mips_24kc.ipk
Configuring strongswan.
/etc/rc.common: line 145: ipsec: not found

Merci d'avance

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
VPN IPsec entre 2 openWRT
« Réponse #1 le: 04 mars 2019 à 19:11:57 »
Visiblement j'ai raté un truc... lorsque je démarre ipsec, la config est bien générée, par contre aucun log... Du coup je ne sais pas si ça essaie de se connecter.

Faut rajouter une ligne pour lui dire d'écrire dans les log ?

De même je pense que la config n'est pas bonne, il faut mettre 2 ID différents en spécifiant l'option 'remote_identifier' ?

Voici les 2 config générées, est-ce ok ? :

Routeur A
conn routeurB-routeurB_lan
  left=%any
  right=domaine.routeurB
  leftsubnet=192.168.1.0/24
  ikelifetime=3h
  lifetime=1h
  margintime=9m
  keyingtries=3
  dpdaction=none
  dpddelay=30s
  leftauth=psk
  rightauth=psk
  rightsubnet=192.168.2.0/24
  auto=route
  leftid=routeurA
  rightid=routeurB
  keyexchange=ikev2
  esp=aes128-sha1-modp2048
  ike=aes128-sha1-modp2048
  type=tunnel


Routeur B
conn routeurA-routeurA_lan
  left=%any
  right=domaine.routeurA
  leftsubnet=192.168.2.0/24
  ikelifetime=3h
  lifetime=1h
  margintime=9m
  keyingtries=3
  dpdaction=none
  dpddelay=30s
  leftauth=psk
  rightauth=psk
  rightsubnet=192.168.1.0/24
  auto=route
  leftid=routeurB
  rightid=routeurA
  keyexchange=ikev2
  esp=aes128-sha1-modp2048
  ike=aes128-sha1-modp2048
  type=tunnel
« Modifié: 04 mars 2019 à 19:32:02 par renaud07 »

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
VPN IPsec entre 2 openWRT
« Réponse #2 le: 05 mars 2019 à 15:55:07 »
J'ai ajouté les règles de firewall, comme indiqué sur le topic que j'avais trouvé mais toujours aucune trace d'ipsec dans les logs. Pourant, strongswan.conf contient :
root@LEDE:~# cat /var/ipsec/strongswan.conf
# generated by /etc/init.d/ipsec
charon {
  load_modular = yes
  install_routes = yes
    plugins {
      include /etc/strongswan.d/charon/*.conf
    }
  syslog {
    identifier = ipsec
    daemon {
      default = 2
    }
    auth {
      default = 2
    }
  }
}

Donc en théorie ça devrait m'afficher quelque chose, non ? En tout cas toujours pas de tunnel établi.

Je sèche un peu là... On dirait que le script se contente de générer la config sans démarrer le service.

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
VPN IPsec entre 2 openWRT
« Réponse #3 le: 07 mars 2019 à 18:00:18 »
J'ai enfin quelque chose ! Il fallait en fait bien que j'installe le paquet strongswan-full.

Désormais une connexion semble se faire puisque j'ai vu passer dans les log  :
Thu Mar  7 16:44:25 2019 authpriv.info ipsec: 14[IKE] IKE_SA routeurB-routeurB_lan[1] established between 90.14.131.xx[routeurA]...90.14.5.xx[lrouteurB]
Thu Mar  7 16:44:25 2019 daemon.info ipsec: 14[IKE] IKE_SA routeurB-routeurB_lan[1] established between 90.14.131.xx[routeurA]...90.14.5.xx[routeurB]
Thu Mar  7 16:44:25 2019 authpriv.info ipsec: 14[IKE] IKE_SA routeurB-routeurB_lan[1] state change: CONNECTING => ESTABLISHED
Thu Mar  7 16:44:25 2019 daemon.info ipsec: 14[IKE] IKE_SA routeurB-routeurB_lan[1] state change: CONNECTING => ESTABLISHED

Ainsi que :
Thu Mar  7 16:44:26 2019 authpriv.info ipsec: 14[KNL] using 193.253.160.3 as nexthop and pppoe-wan as dev to reach 90.14.5.x/32
Thu Mar  7 16:44:26 2019 daemon.info ipsec: 14[KNL] using 193.253.160.3 as nexthop and pppoe-wan as dev to reach 90.14.5.x/32
Thu Mar  7 16:44:26 2019 authpriv.info ipsec: 14[IKE] CHILD_SA routeurB-routeurB_lan{2} established with SPIs cfba3032_i c7fb0926_o and TS 192.168.1.0/24 === 192.168.2.0/24
Thu Mar  7 16:44:26 2019 daemon.info ipsec: 14[IKE] CHILD_SA routeurB-routeurB_lan{2} established with SPIs cfba3032_i c7fb0926_o and TS 192.168.1.0/24 === 192.168.2.0/24
Thu Mar  7 16:44:26 2019 authpriv.info ipsec: 14[CHD] CHILD_SA routeurB-routeurB_lan{2} state change: INSTALLING => INSTALLED
Thu Mar  7 16:44:26 2019 daemon.info ipsec: 14[CHD] CHILD_SA routeurB-routeurB_lan{2} state change: INSTALLING => INSTALLED


Problème quand je veux faire un ping j'ai toujours packet filtered du côté routeur A et ça n'a pas l'air de fonctionner côté routeur B (aucun retour).

Les règles de firewall ajoutées sur routeurA censés autoriser le trafic (bien sûr sur routeurB c'est subnet 192.168.2.0/24) :
config rule
  option name       Allow-IKE-input
  option src        wan
  option proto      udp
  option dest_port  '500 4500'
  option target     ACCEPT

config rule
  option name       Allow-ESP-input
  option src        wan
  option proto      esp
  option target     ACCEPT

option extra_src   '-m policy --dir in --pol none'
option extra_dest  '-m policy --dir out --pol none'

config zone
  option name        vpn
  option input       ACCEPT
  option output      ACCEPT
  option forward     ACCEPT
  option subnet      192.168.1.0/24
  option extra_src   '-m policy --dir in --pol ipsec --proto esp'
  option extra_dest  '-m policy --dir out --pol ipsec --proto esp'
  option mtu_fix     1

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
VPN IPsec entre 2 openWRT
« Réponse #4 le: 07 mars 2019 à 18:47:16 »
J'avais placé
option extra_src   '-m policy --dir in --pol none'
option extra_dest  '-m policy --dir out --pol none'

au mauvais endroit, il fallait en fait les mettre à chaque fois dans lan et wan et désormais je peux pinger les routeurs réciproquement, on avance  :D

Maintenant il reste a résoudre le problème de l'accès à partir du lan puisque un ping à partir de mon PC me revoie un destination unreachebable.

FloBaoti

  • Abonné MilkyWan
  • *
  • Messages: 1 300
  • 34
VPN IPsec entre 2 openWRT
« Réponse #5 le: 07 mars 2019 à 18:56:58 »
Il faut ajouter une route statique sur les 2 routeurs vers le réseau LAN d'en face.

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
VPN IPsec entre 2 openWRT
« Réponse #6 le: 07 mars 2019 à 19:50:15 »
C'est bien ce qu'il me semblait. Je test ça en rentrant  :)

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
VPN IPsec entre 2 openWRT
« Réponse #7 le: 07 mars 2019 à 20:34:27 »
Soit je ne sais plus faire une table de routage, soit il y a un bug...

-routeur A 192.168.1.1/24
-Table : 192.168.2.0/24 gateway 192.168.2.1 sur l'interface lan

-routeur B 192.168.2.1/24
-Table : 192.168.1.0/24 gateway 192.168.1.1 sur l'interface lan

Si c'est bien ça je ne comprends pas pourquoi une fois appliqué ça n’apparaît pas quand je fais un route -n.
 

FloBaoti

  • Abonné MilkyWan
  • *
  • Messages: 1 300
  • 34
VPN IPsec entre 2 openWRT
« Réponse #8 le: 07 mars 2019 à 21:50:57 »
Montre ta table de routage.

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
VPN IPsec entre 2 openWRT
« Réponse #9 le: 07 mars 2019 à 21:52:42 »
Routeur A
root@LEDE:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         193.253.160.3   0.0.0.0         UG    0      0        0 pppoe-wan
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 br-lan
193.253.160.3   0.0.0.0         255.255.255.255 UH    0      0        0 pppoe-wan

Routeur B
root@LEDE:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         193.253.160.3   0.0.0.0         UG    0      0        0 pppoe-wan
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 br-lan
193.253.160.3   0.0.0.0         255.255.255.255 UH    0      0        0 pppoe-wan

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
VPN IPsec entre 2 openWRT
« Réponse #10 le: 08 mars 2019 à 02:52:54 »
En regardant la liste des routes actives, je vois que le subnet d'en face a déjà une gateway prédéfinie sur l'ip du BAS, c'est pas pour ça que ça coince ? Vu que les 2 ont le même métrique...

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
VPN IPsec entre 2 openWRT
« Réponse #11 le: 08 mars 2019 à 15:44:39 »
Plus je regarde d'exemples de doc, plus je me mélange les pinceaux... certains font du NAT, d'autres un simple routage...

D'autres encore ont une interface et un subnet pour le tunnel, hors dans mon cas il n'y en a pas. Dans le doute voici l'état du tunnel, peut-être qu'un truc m'échappe.

root@LEDE:~# ipsec status
Routed Connections:
routeurB-routeurB_lan{1}:  ROUTED, TUNNEL, reqid 1
routeurB-routeurB_lan{1}:   192.168.1.0/24 === 192.168.2.0/24
Security Associations (1 up, 0 connecting):
routeurB-routeurB_lan[9]: ESTABLISHED 2 hours ago, 90.14.131.x[routeurA]...90.14.5.x[routeurB]
routeurB-routeurB_lan{116}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: cbe3683e_i c0d7716b_o
routeurB-routeurB_lan{116}:   192.168.1.0/24 === 192.168.2.0/24