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 et sa syntaxe "pf-like" et de laisser ipsecctl s'occuper des politiques de flux et de l'établissement de la SA (Security association).
## Méthode isakmpd via isakmpd.conf
### Recharger isakmpd
Pour recharger la configuration d'ISAKMPD, il suffit de lui envoyer un SIGHUP.
Ceci ne provoque pas coupure VPN pour les phases 1 (IPSEC) mais un rechargement de
toutes les phases 2 !
~~~
pkill -HUP isakmpd
~~~
Note : attention, on a déjà constaté un plantage peu après un rechargement.
Il conviendra de surveiller attentivement qu'ISAKMPD tourne bien.
### Redémarrer isakmpd
Attention cela interrompt tous les VPN pendant quelques instants.
~~~
pkill isakmpd
isakmpd -v
~~~
### Consulter les logs
~~~
tail -f /var/log/messages | grep isakmpd
~~~
### Voir les routes
~~~
route -n show
~~~
Si isakmpd est bien lancé, une section Encap: doit apparaître.
### Voir les associations VPN
~~~
ipsecctl -s a
~~~
### Envoyer des commandes au daemon
Cela se fait en écrivant dans le fichier fifo /var/run/isakmpd.fifo.
La liste des commandes est disponible dans la page de man.
Exemple pour obtenir un rapport de l'état interne du daemon :
~~~
# echo r >/var/run/isakmpd.fifo
# cat /var/run/isakmpd.result
~~~
Pour avoir l'état de tous les VPNs :
~~~
# echo S >/var/run/isakmpd.fifo
# cat /var/run/isakmpd.result
~~~
Pour recharger les VPNs (équivalent au pkill -HUP) :
~~~
# echo R >/var/run/isakmpd.fifo
~~~
Pour stopper proprement le démon :
~~~
# echo Q >/var/run/isakmpd.fifo
~~~
Pour stopper un VPN (phase 1 ou 2) :
~~~
# echo "t main peer-XXXX" >/var/run/isakmpd.fifo
# echo "t quick XXXX" >/var/run/isakmpd.fifo
~~~
Pour relance un VPN (phase 1 ou 2... ce n'est pas clair. cela semble fonctionner pour la phase 1... à voir pour la phase 2).
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 VPNdistant 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)
Puis effectuer les mêmes actions sur l'autre passerelle.
On doit alors pouvoir pinger chaque réseau à partir de l'autre passerelle ou de l'autre réseau.
Pour relancer un VPN il suffit de récupérer le nom des variables isakmpd générées par ipsectl via la commande suivante puis d'utiliser la même méthode qu'avec isakmpd.