Code : MO-NET-002 | Version : 1.0 | Date : 9 avril 2026 | Auteur : C. Legrand
Procédure de mise à jour du firmware OPNsense via l'API REST. Couvre l'authentification, la vérification des mises à jour, la sauvegarde de configuration, l'exécution, le redémarrage et la vérification post-upgrade. Procédure testée le 07/04/2026 (passage 26.1.2 → 26.1.5).
| Paramètre | Valeur |
|---|---|
| Équipement | OPNsense (10.0.112.1) |
| Version | 26.1.x |
| Accès | HTTP (HTTPS non activé) |
| Durée estimée | 20-30 minutes (hors BIOS) |
http://10.0.112.1 (RJ45 sur site ou VPN WireGuard)curl ou équivalent (Python requests)OPNsense utilise une authentification par session PHP (cookie + CSRF token) :
# Obtenir le cookie de session et le token CSRF
curl -c cookies.txt -b cookies.txt http://10.0.112.1/ -s -o /dev/null
CSRF=$(curl -c cookies.txt -b cookies.txt http://10.0.112.1/ -s | grep csrf | head -1)
curl -c cookies.txt -b cookies.txt -X POST http://10.0.112.1/ \
-d "username=admin&password=VOTRE_MDP&login=1&__csrf_magic=$CSRF"
curl -s -b cookies.txt http://10.0.112.1/api/core/firmware/status | python3 -m json.tool
Champs importants :
product_version : version actuelleproduct_latest : dernière version disponiblestatus_msg : message de statutupdates : nombre de paquets à mettre à jourVia l'interface web : System > Configuration > Backups > Download configuration
Via API :
curl -s -b cookies.txt http://10.0.112.1/api/core/backup/download -o config_$(date +%Y-%m-%d).xml
Important : Toujours sauvegarder la configuration AVANT la mise à jour. Conserver le fichier XML horodaté.
curl -s -b cookies.txt -X POST http://10.0.112.1/api/core/firmware/update
Surveiller la progression :
# Polling toutes les 30 secondes
curl -s -b cookies.txt http://10.0.112.1/api/core/firmware/upgradestatus
curl -s -b cookies.txt -X POST http://10.0.112.1/api/core/firmware/reboot
Attendre le reboot (5-10 minutes) et vérifier la connectivité :
ping -c 1 10.0.112.1
curl -s -b cookies.txt http://10.0.112.1/api/core/firmware/status | python3 -c "
import sys, json
d = json.load(sys.stdin)
print(f'Version: {d.get(\"product_version\", \"?\")}')
print(f'Statut: {d.get(\"status_msg\", \"?\")}')
"
Retour d'expérience 07/04/2026 : Le serveur Dell est resté bloqué sur « F1 to continue » après le reboot. L'iDRAC/BMC n'est pas configuré (IP 0.0.0.0). Accès console physique requis.
dig @10.0.112.1 google.com)| Problème | Solution |
|---|---|
| Erreur 403 sur l'API | Session expirée — se ré-authentifier |
| MAJ bloquée | Vérifier upgradestatus, attendre ou relancer |
| Reboot sans retour | Vérifier console physique (F1 BIOS Dell) |
| VPN WireGuard coupé | Le tunnel se rétablit automatiquement après reboot |
| Suricata inactif | Services > Intrusion Detection > activer manuellement |
| DNS ne résout plus | Services > Unbound DNS > redémarrer |