J'ai besoin de créer un serveur DNS de mise en cache simple et non-autorisé en C/C++. Des conseils? Liens? Des échantillons? Merci!Comment construire un serveur DNS simple personnalisé en C/C++
Répondre
Il n'existe pas de serveur DNS de mise en cache «simple», en particulier si vous souhaitez une sécurité correcte. Les attaques DNS récentes ont montré que la fonction de mise en cache dans les serveurs DNS récursifs est particulièrement vulnérable. Ré-évaluez si vous avez réellement besoin de la mise en cache locale de votre choix. Si vous ne le faites pas, il est probablement préférable de modifier le code proxy DNS existant (tel que 'dnsmasq').
Si vous voulez faire un roll-own, il existe de bonnes bibliothèques telles que ldns
qui peuvent fournir l'accès aux paquets DNS sous-jacents.
J'utilise ldns
moi-même en conjonction avec libevent
pour implémenter le serveur DNS Fuzzing que j'ai mentionné dans une question précédente.
Commencez par djbdns.
Je ferais attention à ce sujet. Le logiciel de djb a des licences très restrictives. assurez-vous qu'il est en accord avec votre utilisation prévue. – SingleNegationElimination
djbdns est maintenant public domain, mais je ne l'utiliserais toujours pas ... – Alnitak
Il existe un ensemble d'implémentations de logiciels libres de DNS. Vous pouvez regarder leur code source. Par exemple:
Le livre DNS and BIND pourrait être utile. Et, bien sûr, il y a les RFC qui spécifient DNS, voir http://rfc-editor.org/.
Alternativement, vous pouvez utiliser le Ragel State Machine Compiler pour créer votre serveur à partir de zéro.
La machine d'état est une très petite partie du code d'un serveur ... – bortzmeyer
Pour quelque chose défini par une spécification très stricte comme un serveur DNS, c'est un (et sans doute le plus important). –
Si vous avez vraiment besoin de le faire (il est un énorme travail, voir la réponse de Alnitak), commencer à partir d'un bon programme (pas une expérience d'un homme unmaintained depuis longtemps comme djbdns) existant et modifier il.
Unbound est probablement un choix raisonnable pour cela. (La base de code est plus petite que celle de BIND.)
Note aux lecteurs: n'oublie pas d'ignorer les downvotes s'il n'y a pas de commentaire pour les expliquer. – bortzmeyer
Le logiciel de djb a été régulièrement connu pour se comporter contrairement aux normes en raison de sa croyance générale que son chemin est meilleur que les normes, et il a également été connu pour nier l'existence de graves bogues altitude élévation de privilèges dans son code. Avec la longue période au cours de laquelle les djbdns étaient complètement non entretenus, je pense que ces facteurs font qu'il est parfaitement juste pour bortzmeyer de l'appeler «une expérience personnelle non maintenue depuis longtemps» et de décourager son déploiement dans des environnements non-amateurs. –
J'ai écrit un serveur DNS de base pour un entretien d'embauche sous licence BSD.
Peut être quelqu'un pourrait trouver utile:
- 1. Comment construire ImageButton Control Adapter (ou plus général, comment construire un adaptateur de contrôle simple)?
- 2. DNS - Route DNS pour le sous-dossier vers un serveur différent?
- 3. Gurus DNS: Comment rediriger www.domain.com vers domain.com en utilisant DNS uniquement?
- 4. Comment construire un serveur TCP non bloquant avec cryptage ssl
- 5. Comment puis-je trouver le serveur DNS actuel?
- 6. Comment déplacer toutes les zones à un nouveau serveur DNS BIND
- 7. Comment construire un éditeur de code source simple en utilisant WPF?
- 8. Construire un lexer en C
- 9. Comment construire un projet PyQT?
- 10. Configuration du serveur DNS BIND, je suis perdu
- 11. Recherche DNS inversée en perl
- 12. Comment construire un navigateur de fichiers web?
- 13. Comment construire un serveur pour diffuser de la vidéo en temps réel?
- 14. Détection de serveur DNS de client d'application Web
- 15. Construire un arbre en Java
- 16. Comment construire un moteur de traduction de langue en Java
- 17. Serveur DNS gratuit pour Windows XP/Vista/Win7?
- 18. DNS du serveur sur lequel l'application ASP.NET est exécutée
- 19. Rails/Passenger/Apache: redirection simple d'URL ponctuelle pour récupérer le DNS obsolète après le déplacement du serveur
- 20. Création d'un serveur DNS externe avec Windows Server 2008
- 21. Comment supprimer cc, bcc dans MailComposerViewController?
- 22. serveur de VMWare 2.0.0 et vista 64bit DNS dosnt résoudre
- 23. Windows DNS hooks
- 24. Possibilité d'avoir un contrôle interne sur un contrôle serveur personnalisé?
- 25. voulez construire l'équivalent SMS d'un serveur web
- 26. Construire un exécutable Linux en utilisant GCC
- 27. Comment déployer un serveur RubyGem
- 28. serveur HTTP Python personnalisé simple pour ne pas servir des fichiers css
- 29. Comment construire un contrôle personnalisé dans Xcode pour le SDK iPhone?
- 30. Impossible de résoudre DNS
Pourquoi la Terre que vous pourriez avoir besoin pour construire votre propre serveur DNS? –
Cause J'ai besoin d'un serveur DNS avec une fonctionnalité non standart –
Je vous recommande fortement de rechercher des solutions alternatives, mais si c'est la façon dont vous devez aller ... djbdns est public domain, donc vous pouvez le pirater autant que vous le souhaitez. –