Il existe deux méthodes pour mettre en place un VPN IPsec sous OpenBSD. La première est de créer un fichier de configuration /etc/isakmpd/isakmpd.conf. La seconde est d'utiliser /etc/ipsec.conf avec sa syntaxe "pf-like" et de laisser ipsecctl s'occuper des politiques de flux et de l'établissement de la SA (Security association).
Le mot-clef "dynamic" permet d'activer le Dead Peer Detection (DPD), utilisé pour détecter la perte du pair. Certains VPNs peuvent ne pas rester stable s'il n'est pas activé.
Le mot-clef "main" configure la phase 1, tandis que le mot-clef "quick" configure la phase 2.
Adapter ensuite les protocoles de sécurité, les durées de vies des 2 phases, ainsi que la psk, qui doivent correspondre entre gw1 et gw2.
**Attention :** le DH group 20 (ecp384) ne semble pas fonctionner côté OpenBSD (le VPN ne monte pas, avec un timeout). Les autres groupes au dessus de DH group 14 n'ont pas été testés et pourraient également poser problème.
Lorsque plusieurs VPNs sont montés, une bonne pratique est d'avoir un fichier par pair. Ainsi, les VPNs montés avec *FAI1* et *FAI2* pourront être indépendamment redémarrés :
Dans le cas où plusieurs réseaux distants doivent être accessibles (plusieurs phases 2 doivent être montées), cette syntaxe peut être utilisée dans /etc/ipsec.conf :
isakmpd[7864]: message_negotiate_sa: no compatible proposal found
isakmpd[7864]: dropped message from 192.0.2.1 port 500 due to notification type NO_PROPOSAL_CHOSEN
~~~
Il s'agit d'un routeur VPN distant qui essaye de se connecter, mais n'a pas de configuration correspondante.
Cela peut se produire typiquement si son adresse IP change, et qu'elle n'est plus présente dans la configuration d'ISAKMPD.
~~~
isakmpd[10418]: isakmpd: phase 1 done (as responder): initiator id 192.0.2.1, responder id 1.2.3.4, src: 1.2.3.4 dst: 192.0.2.1
isakmpd[10418]: dropped message from 192.0.2.1 port 500 due to notification type INVALID_ID_INFORMATION
isakmpd[10418]: message_validate_notify: protocol not supported
~~~
Cela signifie a priori que la configuration en face à un réseau "remote" incorrect (soit complètement faux, soit pas sous la forme ADRESSE RÉSEAU / MASQUE)
isakmpd[80145]: dropped message from 192.0.2.1 port 500 due to notification type PAYLOAD_MALFORMED
isakmpd[80145]: message_parse_payloads: reserved field non-zero: b8
## OU
isakmpd[80145]: dropped message from 192.0.2.1 port 500 due to notification type INVALID_PAYLOAD_TYPE
isakmpd[80145]: message_parse_payloads: invalid next payload type <Unknown55> in payload of type 5
~~~
C'est a priori à cause du paramètre d'authentification `hmac-sha2-512` utilisé qui n'est pas fonctionnel. Il faut préférer l'utilisation de `hmac-sha2-256`.