{"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\/sv\/blog\/administrirovanie\/svoj-dynamic-dns-s-pomoshhyu-cloudflare","title":{"rendered":"Din dynamiska DNS med hj\u00e4lp av CloudFlare","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>F\u00f6rord<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Din dynamiska DNS med hj\u00e4lp av CloudFlare\" src=\"\/wp-content\/uploads\/2019\/10\/d1405e23e86048a05e6707bb5e9e215f.jpg\" style=\"display:block;margin: 0 auto;\" \/> F\u00f6r personliga \u00e4ndam\u00e5l hemma har jag installerat VSphere, d\u00e4r jag k\u00f6r en virtuell router och en Ubuntu-server som medieserver samt en massa andra trevligheter, och denna server m\u00e5ste vara tillg\u00e4nglig fr\u00e5n Internet. Problemet \u00e4r att min leverant\u00f6r tar betalt f\u00f6r statiska IP-adresser, vilket alltid kan anv\u00e4ndas till n\u00e5got mer nyttigt. S\u00e5 jag anv\u00e4nde en kombination av ddclient + cloudflare. <\/p>\n<p>Det gick bra tills ddclient slutade fungera. Efter att ha gr\u00e4vt lite i det ins\u00e5g jag att det var dags f\u00f6r provisoriska l\u00f6sningar och cyklar, eftersom jag la ner f\u00f6r mycket tid p\u00e5 att leta efter problemet. I slut\u00e4ndan resulterade det i en liten daemon som bara fungerar, och det \u00e4r allt jag beh\u00f6ver. <br \/>\nDen som \u00e4r intresserad \u00e4r v\u00e4lkommen under kat.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Anv\u00e4nda verktyg och hur \"det\" fungerar<\/h3>\n<p>\nS\u00e5 f\u00f6rst kollade jag p\u00e5 cloudflare:s webbplats f\u00f6r allt som beh\u00f6vdes veta om <noindex><a rel=\"nofollow\" href=\"https:\/\/api.cloudflare.com\/\">API<\/a><\/noindex>. Jag hade redan b\u00f6rjat implementera allt i Python (efter att ha l\u00e4rt mig Python anv\u00e4nder jag det allt oftare f\u00f6r enkla uppgifter eller n\u00e4r jag snabbt beh\u00f6ver g\u00f6ra en prototyp), n\u00e4r jag pl\u00f6tsligt snubblade \u00f6ver en n\u00e4stan f\u00e4rdig implementation.<br \/>\nSom grundval anv\u00e4ndes en wrapper <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/cloudflare\/python-cloudflare\">python-cloudflare<\/a><\/noindex>.<\/p>\n<p>Jag tog ett av exemplen f\u00f6r att uppdatera DNS och lade till anv\u00e4ndningen av en konfigurationsfil samt m\u00f6jligheten att uppdatera flera A-poster inom en zon och naturligtvis ett obegr\u00e4nsat antal zoner.<\/p>\n<p>Logiken \u00e4r f\u00f6ljande:<\/p>\n<ol>\n<li>Skriptet h\u00e4mtar zonlistan fr\u00e5n konfigurationsfilen och g\u00e5r igenom dem i en loop<\/li>\n<li>I varje zon g\u00e5r skriptet igenom varje DNS-post av typ A eller AAAA i en loop och j\u00e4mf\u00f6r den offentliga IP-adressen med posten<\/li>\n<li>Om IP-adressen skiljer sig \u2014 \u00e4ndrar det den, annars hoppar det \u00f6ver iterationen av loopen och g\u00e5r vidare till n\u00e4sta <\/li>\n<li>Skripten sover under den tid som anges i konfigurationsfilen<\/li>\n<\/ol>\n<p><\/p>\n<h3>Installation och konfiguration<\/h3>\n<p>\nDet hade kanske varit m\u00f6jligt att skapa ett .deb-paket, men jag \u00e4r inte s\u00e5 duktig p\u00e5 det, och det \u00e4r inte s\u00e5 komplicerat.<br \/>\nProcessen har jag beskrivit ganska detaljerat i README.md p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/DzenDyn\/zen-cf-ddns\">projektets repository-sida<\/a><\/noindex>.<\/p>\n<p>Men f\u00f6r s\u00e4kerhets skull ska jag kortfattat beskriva det p\u00e5 svenska:<\/p>\n<ol>\n<li>Se till att du har python3 och python3-pip installerat, om inte \u2014 installera (i Windows installeras python3-pip tillsammans med Python)<\/li>\n<li>Klona eller ladda ner repositoryt<\/li>\n<li>Installerar de n\u00f6dv\u00e4ndiga beroenden.\n<pre><code class=\"plaintext\">python3 -m pip install -r requirements.txt<\/code><\/pre>\n<p>\n<\/li>\n<li>K\u00f6r installationsskriptet<br \/>\nF\u00f6r Linux:<\/p>\n<pre><code class=\"plaintext\">chmod +x install.sh\nsudo .\/install.sh<\/code><\/pre>\n<p>\nF\u00f6r Windows: windows_install.bat\n<\/li>\n<li>Redigera konfigurationsfilen<br \/>\nF\u00f6r Linux:<\/p>\n<pre><code class=\"plaintext\">sudoedit \/etc\/zen-cf-ddns.conf<\/code><\/pre>\n<p>\nF\u00f6r Windows:<\/p>\n<p>\u00d6ppna filen zen-cf-ddns.conf i mappen d\u00e4r du installerade skriptet.<\/p>\n<p>Det h\u00e4r \u00e4r en vanlig JSON-fil, inst\u00e4llningarna \u00e4r inte komplicerade \u2013 jag har specifikt beskrivit tv\u00e5 olika omr\u00e5den som exempel i den.\n<\/li>\n<\/ol>\n<p><\/p>\n<h4>Vad d\u00f6ljer sig bakom installat\u00f6rerna?<\/h4>\n<p>\ninstall.sh f\u00f6r Linux:<\/p>\n<ol>\n<li>En anv\u00e4ndare skapas f\u00f6r att k\u00f6ra demon, utan att skapa en hemmakatalog och utan inloggningsm\u00f6jlighet.\n<pre><code class=\"plaintext\">sudo useradd -r -s \/bin\/false zen-cf-ddns<\/code><\/pre>\n<p>\n<\/li>\n<li>En fil skapas f\u00f6r att skriva loggar i \/var\/log\/<\/li>\n<li>Vi g\u00f6r den nyligen skapade anv\u00e4ndaren till \u00e4gare av loggfilen<\/li>\n<li>Filer kopieras till sina platser (konfigurering i \/etc, k\u00f6rbar fil i \/usr\/bin, servicemanifest i \/lib\/systemd\/system)<\/li>\n<li>Tj\u00e4nsten aktiveras<\/li>\n<\/ol>\n<p>\nwindows_install.bat f\u00f6r Windows:<\/p>\n<ol>\n<li>Kopierar den k\u00f6rbara filen och konfigurationsfilen till den angivna mappen av anv\u00e4ndaren<\/li>\n<li>Skapar en uppgift i schemal\u00e4ggaren f\u00f6r att k\u00f6ra skriptet vid systemstart<br \/>\n<code>schtasks \/create \/tn \"CloudFlare Update IP\" \/tr \"%newLocation%\" \/sc onstart<\/code>\n<\/li>\n<\/ol>\n<p>\nEfter att ha \u00e4ndrat konfigurationen m\u00e5ste skriptet startas om, i Linux \u00e4r det enkelt och bekant:<\/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>\nf\u00f6r Windows m\u00e5ste man d\u00f6da processen pythonw och starta skriptet igen (jag har inte lust att skriva en tj\u00e4nst f\u00f6r Windows i C#):<\/p>\n<pre><code class=\"plaintext\">taskkill \/im pythonw.exe<\/code><\/pre>\n<p>\nDetta avslutar installationen och konfigurationen, anv\u00e4nd det med gl\u00e4dje.<\/p>\n<p>F\u00f6r dem som vill se lite oestetisk Python-kod, h\u00e4r \u00e4r den <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/DzenDyn\/zen-cf-ddns\">faktablad p\u00e5 GitHub<\/a><\/noindex>.<\/p>\n<p>MIT-licens, s\u00e5 g\u00f6r vad du vill med detta.<\/p>\n<p>P.S.: Jag f\u00f6rst\u00e5r att det blev lite hackigt, men det fungerar utm\u00e4rkt f\u00f6r mitt syfte.<\/p>\n<p>UPD: 11.10.2019 17:37<br \/>\nJag har hittat ett problem till, och om n\u00e5gon kan ge r\u00e5d om hur man l\u00f6ser det \u2013 skulle jag vara mycket tacksam.<br \/>\nProblemet \u00e4r att om jag installerar beroenden utan sudo python -m pip install -r ..., s\u00e5 kommer modulerna inte att vara synliga f\u00f6r tj\u00e4nsteanv\u00e4ndaren, och jag skulle og\u00e4rna tvinga anv\u00e4ndare att installera moduler med sudo, och det \u00e4r heller inte r\u00e4tt.<br \/>\nHur g\u00f6r man r\u00e4tt s\u00e5 att det blir snyggt?<br \/>\nUPD: 11.10.2019 19:16 Problemet l\u00f6st genom att anv\u00e4nda venv.<br \/>\nDet blev n\u00e5gra \u00e4ndringar. En ny version kommer snart.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/svoj-dynamic-dns-s-pomoshhyu-cloudflare\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Din dynamiska DNS med CloudFlare | ProHoster","description":"F\u00f6rord Jag har satt upp det f\u00f6r personligt bruk hemma.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/svoj-dynamic-dns-s-pomoshhyu-cloudflare","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/38840","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=38840"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/38840\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/29132"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=38840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=38840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=38840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}