{"id":38840,"date":"2019-10-31T22:26:17","date_gmt":"2019-10-31T19:26:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/svoj-dynamic-dns-s-pomoshhyu-cloudflare\/"},"modified":"2019-10-31T22:26:17","modified_gmt":"2019-10-31T19:26:17","slug":"svoj-dynamic-dns-s-pomoshhyu-cloudflare","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/svoj-dynamic-dns-s-pomoshhyu-cloudflare","title":{"rendered":"Votre DNS dynamique avec CloudFlare","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>Pr\u00e9face<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Votre DNS dynamique avec CloudFlare\" src=\"\/wp-content\/uploads\/2019\/10\/d1405e23e86048a05e6707bb5e9e215f.jpg\" style=\"display:block;margin: 0 auto;\" \/> Pour des besoins personnels, j'ai mis en place VSphere \u00e0 la maison, sur lequel je fais tourner un routeur virtuel et un serveur Ubuntu en tant que serveur multim\u00e9dia ainsi que plein d'autres choses int\u00e9ressantes, et ce serveur doit \u00eatre accessible depuis Internet. Le probl\u00e8me, c'est que mon fournisseur impose des frais pour la connexion statique, que j'aimerais utiliser \u00e0 des fins plus utiles. C'est pourquoi j'utilisais une combinaison de ddclient et cloudflare. <\/p>\n<p>Tout allait bien jusqu'\u00e0 ce que ddclient cesse de fonctionner. Apr\u00e8s un petit examen, j'ai compris qu'il \u00e9tait temps de bricoler, car chercher le probl\u00e8me devenait trop chronophage. Au final, cela a donn\u00e9 naissance \u00e0 un petit d\u00e9mon qui fonctionne simplement, ce qui me suffit. <br \/>\nPour ceux que cela int\u00e9resse \u2013 bienvenue sous le capot.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Outils utilis\u00e9s et comment \u00ab \u00e7a \u00bb fonctionne<\/h3>\n<p>\nAlors d'abord, je me suis renseign\u00e9 sur le site de cloudflare, tout ce que je devais savoir sur <noindex><a rel=\"nofollow\" href=\"https:\/\/api.cloudflare.com\/\">API<\/a><\/noindex>. Et j'\u00e9tais d\u00e9j\u00e0 pr\u00eat \u00e0 tout impl\u00e9menter en Python (depuis que j'ai d\u00e9couvert Python, je l'utilise de plus en plus pour des t\u00e2ches simples ou quand je dois rapidement cr\u00e9er un prototype), quand je suis tomb\u00e9 sur une impl\u00e9mentation presque pr\u00eate.<br \/>\nEn gros, j'ai pris comme base un wrapper <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/cloudflare\/python-cloudflare\">python-cloudflare<\/a><\/noindex>.<\/p>\n<p>J'ai pris un des exemples pour mettre \u00e0 jour le DNS et ajout\u00e9 l'utilisation d'un fichier de configuration ainsi que la possibilit\u00e9 de mettre \u00e0 jour plusieurs enregistrements A dans une zone et, bien s\u00fbr, un nombre illimit\u00e9 de zones.<\/p>\n<p>La logique est la suivante :<\/p>\n<ol>\n<li>Le script obtient de fichier de configuration une liste de zones et les parcourt en boucle<\/li>\n<li>Dans chaque zone, le script parcourt en boucle chaque enregistrement DNS de type A ou AAAA et compare l'IP publique \u00e0 l'enregistrement<\/li>\n<li>Si l'IP diff\u00e8re, il la change, sinon il passe \u00e0 l'it\u00e9ration suivante de la boucle. <\/li>\n<li>Il fait une pause pour le temps indiqu\u00e9 dans le fichier de configuration<\/li>\n<\/ol>\n<p><\/p>\n<h3>Installation et configuration<\/h3>\n<p>\nIl serait probablement possible de cr\u00e9er un paquet .deb, mais je ne suis pas tr\u00e8s comp\u00e9tent dans ce domaine, et ce n'est pas si compliqu\u00e9.<br \/>\nJ'ai d\u00e9crit le processus assez en d\u00e9tail dans le README.md sur <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/DzenDyn\/zen-cf-ddns\">la page du d\u00e9p\u00f4t<\/a><\/noindex>.<\/p>\n<p>Mais au cas o\u00f9, je vais expliquer en russe de mani\u00e8re g\u00e9n\u00e9rale :<\/p>\n<ol>\n<li>Assurez-vous d'avoir install\u00e9 python3 et python3-pip, sinon installez-les (sur Windows, python3-pip s'installe avec Python)<\/li>\n<li>Clonez ou t\u00e9l\u00e9chargez le d\u00e9p\u00f4t<\/li>\n<li>Installez les d\u00e9pendances n\u00e9cessaires.\n<pre><code class=\"plaintext\">python3 -m pip install -r requirements.txt<\/code><\/pre>\n<p>\n<\/li>\n<li>Ex\u00e9cutez le script d'installation<br \/>\nPour Linux :<\/p>\n<pre><code class=\"plaintext\">chmod +x install.sh\nsudo . \/install.sh<\/code><\/pre>\n<p>\nPour Windows : windows_install.bat\n<\/li>\n<li>Modifiez le fichier de configuration<br \/>\nPour Linux :<\/p>\n<pre><code class=\"plaintext\">sudoedit \/etc\/zen-cf-ddns.conf<\/code><\/pre>\n<p>\nPour Windows :<\/p>\n<p>Ouvrez le fichier zen-cf-ddns.conf dans le dossier o\u00f9 vous avez install\u00e9 le script.<\/p>\n<p>C'est un fichier JSON ordinaire, avec des param\u00e8tres simples - j'ai sp\u00e9cialement d\u00e9crit comme exemple 2 zones diff\u00e9rentes.\n<\/li>\n<\/ol>\n<p><\/p>\n<h4>Que cache les installateurs ?<\/h4>\n<p>\ninstall.sh pour Linux :<\/p>\n<ol>\n<li>Un utilisateur est cr\u00e9\u00e9 pour lancer le d\u00e9mon, sans cr\u00e9ation de r\u00e9pertoire personnel et sans possibilit\u00e9 de connexion.\n<pre><code class=\"plaintext\">sudo useradd -r -s \/bin\/false zen-cf-ddns<\/code><\/pre>\n<p>\n<\/li>\n<li>Un fichier est cr\u00e9\u00e9 pour \u00e9crire des logs dans \/var\/log\/<\/li>\n<li>Nous devenons le propri\u00e9taire du fichier log du nouvel utilisateur cr\u00e9\u00e9<\/li>\n<li>Les fichiers sont copi\u00e9s \u00e0 leurs emplacements respectifs (configuration dans \/etc, fichier ex\u00e9cutable dans \/usr\/bin, fichier de service dans \/lib\/systemd\/system)<\/li>\n<li>Le service est activ\u00e9<\/li>\n<\/ol>\n<p>\nwindows_install.bat pour Windows :<\/p>\n<ol>\n<li>Il copie le fichier ex\u00e9cutable et le fichier de configuration dans le dossier sp\u00e9cifi\u00e9 par l'utilisateur<\/li>\n<li>Il cr\u00e9e une t\u00e2che dans le planificateur pour ex\u00e9cuter le script au d\u00e9marrage du syst\u00e8me<br \/>\n<code>schtasks \/create \/tn \"CloudFlare Update IP\" \/tr \"%newLocation%\" \/sc onstart<\/code>\n<\/li>\n<\/ol>\n<p>\nApr\u00e8s avoir modifi\u00e9 la configuration, le script doit \u00eatre red\u00e9marr\u00e9, sous Linux, c'est simple et habituel :<\/p>\n<pre><code class=\"plaintext\">sudo service zen-cf-ddns start\nsudo service zen-cf-ddns stop\nsudo service zen-cf-ddns restart\nsudo service zen-cf-ddns status\n<\/code><\/pre>\n<p>\npour Windows, il faudra tuer le processus pythonw et red\u00e9marrer le script (je n'ai vraiment pas envie d'\u00e9crire un service sous Windows en C#) :<\/p>\n<pre><code class=\"plaintext\">taskkill \/im pythonw.exe<\/code><\/pre>\n<p>\nVoil\u00e0, l'installation et la configuration sont termin\u00e9es, utilisez-le en toute sant\u00e9.<\/p>\n<p>Pour ceux qui souhaitent voir un code Python pas tr\u00e8s joli, le voici <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/DzenDyn\/zen-cf-ddns\">d\u00e9p\u00f4t sur GitHub<\/a><\/noindex>.<\/p>\n<p>Licence MIT, donc faites ce que vous voulez avec ce bon.<\/p>\n<p>P.S. : Je comprends que cela semble un peu bancal, mais il remplit sa t\u00e2che \u00e0 merveille.<\/p>\n<p>UPD : 11.10.2019 17:37<br \/>\nJ'ai trouv\u00e9 un autre probl\u00e8me, et si quelqu'un peut m'aider \u00e0 le r\u00e9soudre, je lui en serai tr\u00e8s reconnaissant.<br \/>\nLe probl\u00e8me est que si vous installez des d\u00e9pendances sans sudo python -m pip install -r &#8230;, les modules ne seront pas visibles sous l'utilisateur du service, et je ne voudrais pas forcer les utilisateurs \u00e0 installer des modules avec sudo, ce qui n'est pas correct non plus.<br \/>\nComment faire correctement pour que ce soit joli ?<br \/>\nUPD : 11.10.2019 19:16 Le probl\u00e8me est r\u00e9solu en utilisant venv.<br \/>\nIl y a eu plusieurs changements. Une nouvelle version sera disponible dans quelques jours.<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/471102\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435 \u0414\u043b\u044f \u043b\u0438\u0447\u043d\u044b\u0445 \u043d\u0443\u0436\u0434 \u0434\u043e\u043c\u0430 \u043f\u043e\u0434\u043d\u044f\u043b VSphere, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0440\u0443\u0447\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440 \u0438 Ubuntu \u0441\u0435\u0440\u0432\u0435\u0440 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0434\u0438\u0430-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0435\u0449\u0435 \u043a\u0443\u0447\u0438 \u0432\u0441\u044f\u043a\u0438\u0445 \u0432\u043a\u0443\u0441\u043d\u044f\u0448\u0435\u043a, \u0438 \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0438\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u041d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0434\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u043a\u0443 \u0437\u0430 \u0434\u0435\u043d\u044c\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u0432\u044f\u0437\u043a\u043e\u0439 ddclient + [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29132,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38840","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435 \u0414\u043b\u044f \u043b\u0438\u0447\u043d\u044b\u0445 \u043d\u0443\u0436\u0434 \u0434\u043e\u043c\u0430 \u043f\u043e\u0434\u043d\u044f\u043b.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/svoj-dynamic-dns-s-pomoshhyu-cloudflare\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0432\u043e\u0439 dynamic DNS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CloudFlare | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435 \u0414\u043b\u044f \u043b\u0438\u0447\u043d\u044b\u0445 \u043d\u0443\u0436\u0434 \u0434\u043e\u043c\u0430 \u043f\u043e\u0434\u043d\u044f\u043b.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/svoj-dynamic-dns-s-pomoshhyu-cloudflare\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:26:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:26:17+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Mon dynamic DNS avec CloudFlare | ProHoster","description":"Pr\u00e9face Pour des besoins personnels \u00e0 la maison, j'ai mis en place.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/svoj-dynamic-dns-s-pomoshhyu-cloudflare","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0432\u043e\u0439 dynamic DNS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CloudFlare | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435 \u0414\u043b\u044f \u043b\u0438\u0447\u043d\u044b\u0445 \u043d\u0443\u0436\u0434 \u0434\u043e\u043c\u0430 \u043f\u043e\u0434\u043d\u044f\u043b.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/svoj-dynamic-dns-s-pomoshhyu-cloudflare","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:26:17+00:00","article:modified_time":"2019-10-31T19:26:17+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38840","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 23:37:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:01:36","updated":"2026-01-23 23:37:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/38840","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=38840"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/38840\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/29132"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=38840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=38840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=38840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}