4.4 KiB
4.4 KiB
Problème : Erreur DNS resolution pour NIP-95 upload
Date
2025-01-27
Problème
L'API NIP-95 upload retourne une erreur getaddrinfo ENOTFOUND void.cat lors des tentatives d'upload, indiquant que le serveur Node.js ne peut pas résoudre le nom de domaine.
Symptômes
- Erreur :
Failed to upload to all endpoints: {"error":"Failed to connect to upload endpoint: getaddrinfo ENOTFOUND void.cat"} - Code d'erreur Node.js :
ENOTFOUNDouEAI_AGAIN - Les uploads NIP-95 échouent avec une erreur de résolution DNS
Root cause
Le serveur Node.js qui exécute l'API Next.js ne peut pas résoudre le nom de domaine void.cat (ou d'autres endpoints NIP-95). Cela peut être dû à :
- Problème de DNS sur le serveur : Le serveur n'a pas accès à un serveur DNS fonctionnel
- Pas d'accès Internet : Le serveur n'a pas de connexion Internet ou est derrière un pare-feu qui bloque les requêtes sortantes
- Configuration réseau incorrecte : Les paramètres réseau du serveur sont mal configurés
- Problème de résolution DNS temporaire : Problème temporaire avec le serveur DNS
Impact
- Impossible d'uploader des fichiers via NIP-95
- Les utilisateurs ne peuvent pas publier d'articles avec des médias
- Fonctionnalité d'upload complètement non fonctionnelle
Correctifs
- Amélioration de la gestion d'erreur DNS : Détection spécifique des erreurs DNS avec messages d'erreur plus clairs
- Ajout d'un timeout : Timeout de 30 secondes pour éviter que les requêtes restent bloquées indéfiniment
- Amélioration des logs : Logs plus détaillés pour diagnostiquer les problèmes DNS
Modifications
- Fichier modifié :
pages/api/nip95-upload.ts - Ajout de timeout :
timeout: 30000dans les options de requête - Détection spécifique des erreurs DNS : Vérification des codes d'erreur
ENOTFOUNDetEAI_AGAIN - Messages d'erreur améliorés : Messages plus clairs pour les erreurs DNS avec suggestions de diagnostic
- Logs améliorés : Logs incluant le hostname, le code d'erreur et des suggestions
Modalités de déploiement
- Les modifications sont dans le code source
- Rebuild de l'application :
npm run build - Redémarrage du service Next.js
- Aucune dépendance supplémentaire nécessaire
Modalités d'analyse
Pour diagnostiquer le problème DNS :
-
Vérifier la résolution DNS depuis le serveur :
# Depuis le serveur nslookup void.cat # ou dig void.cat # ou host void.cat -
Vérifier la connectivité réseau :
# Tester la connexion HTTPS curl -v https://void.cat/upload # ou wget --spider https://void.cat/upload -
Vérifier les logs du serveur Node.js :
- Chercher les erreurs
ENOTFOUNDouEAI_AGAIN - Vérifier les logs avec le hostname et les suggestions
- Chercher les erreurs
-
Vérifier la configuration DNS du serveur :
# Vérifier les serveurs DNS configurés cat /etc/resolv.conf # ou sur systemd systemd-resolve --status -
Tester depuis le conteneur/service :
# Si le service tourne dans un conteneur Docker docker exec <container_name> nslookup void.cat docker exec <container_name> curl -v https://void.cat/upload
Solutions possibles
Si le problème est la résolution DNS
- Vérifier que le serveur a accès à un serveur DNS fonctionnel
- Configurer des serveurs DNS fiables (par exemple 8.8.8.8, 1.1.1.1)
- Vérifier que
/etc/resolv.confcontient des serveurs DNS valides
Si le problème est l'accès Internet
- Vérifier que le serveur a une connexion Internet fonctionnelle
- Vérifier les règles de pare-feu qui pourraient bloquer les requêtes sortantes HTTPS
- Vérifier les proxies si le serveur est derrière un proxy
Si le problème est temporaire
- Attendre quelques minutes et réessayer
- Vérifier si d'autres services ont des problèmes de connectivité
- Vérifier les statuts des endpoints NIP-95 (void.cat, etc.)
Notes
- L'erreur
ENOTFOUNDsignifie que le nom de domaine n'a pas pu être résolu en adresse IP - L'erreur
EAI_AGAINsignifie que la résolution DNS a échoué temporairement (peut être réessayé) - Le timeout de 30 secondes évite que les requêtes restent bloquées indéfiniment
- Les messages d'erreur améliorés aident à diagnostiquer rapidement le problème
- Si le problème persiste, vérifier la configuration réseau du serveur et l'accès à Internet