CloudFlare استعمال ڪندي توهان جو پنهنجو متحرڪ DNS

اڳوڻي

CloudFlare استعمال ڪندي توهان جو پنهنجو متحرڪ DNS گهر ۾ ذاتي ضرورتن لاءِ، مون VSphere انسٽال ڪيو، جنهن تي مان هڪ ورچوئل روٽر هلائيان ٿو ۽ هڪ Ubuntu سرور بطور ميڊيا سرور ۽ ٻين شين جو هڪ گروپ، ۽ اهو سرور انٽرنيٽ تان دستياب هجڻ گهرجي. پر مسئلو اهو آهي ته منهنجو مهيا ڪندڙ پئسا لاء جامد ڊيٽا ڏئي ٿو، جيڪو هميشه وڌيڪ مفيد مقصدن لاء استعمال ڪري سگهجي ٿو. تنهن ڪري، مون استعمال ڪيو ddclient + cloudflare ميلاپ.

سڀ ڪجھ ٺيڪ هو جيستائين ddclient ڪم ڪرڻ بند نه ڪيو. ٿورو گھمڻ ڦرڻ کان پوءِ، مون محسوس ڪيو ته وقت اچي ويو آهي ڪچين ۽ سائيڪلن جو، ڇاڪاڻ ته اهو مسئلو ڳولڻ ۾ تمام گهڻو وقت وٺي رهيو هو. آخر ۾، هر شيء هڪ ننڍڙي ڊيمن ۾ تبديل ٿي وئي جيڪا صرف ڪم ڪري ٿي، ۽ مون کي ڪنهن ٻئي جي ضرورت ناهي.
جيڪڏهن ڪنهن کي دلچسپي آهي، ڀلي ڪري آيا cat.

اوزار استعمال ڪيا ويا ۽ ڪيئن "اهو" ڪم ڪري ٿو

تنهنڪري پهرين شيء جيڪا مون کي ڪلائوڊ فليئر ويب سائيٽ تي ملي آهي اها هر شي آهي جنهن بابت توهان کي ڄاڻڻ جي ضرورت آهي API. ۽ مان پٿون ۾ سڀڪنھن شيءِ تي عمل ڪرڻ لاءِ اڳي ئي بيٺو ھوس (پائٿون سان واقفيت ٿيڻ کان پوءِ، مان ان کي وڌ کان وڌ استعمال ڪريان ٿو ڪجھ سادو ڪمن لاءِ يا جڏھن مون کي تڪڙو ھڪڙو پروٽوٽائپ ٺاھڻ جي ضرورت آھي)، جڏھن اوچتو مون کي ھڪ لڳ ڀڳ تيار ٿيل عملدرآمد نظر آيو.
عام طور تي، چادر هڪ بنياد طور ورتو ويو python- Cloudflare.

مون DNS کي اپڊيٽ ڪرڻ لاءِ ھڪڙو مثال ورتو ۽ ھڪڙي ترتيب واري فائل جي استعمال کي شامل ڪيو ۽ ھڪڙي زون اندر ڪيترن ئي A ريڪارڊ کي اپڊيٽ ڪرڻ جي صلاحيت ۽ يقينا، زونن جي لامحدود تعداد.

منطق هن ريت آهي:

  1. اسڪرپٽ زونن جي هڪ فهرست وصول ڪري ٿي ترتيب واري فائل مان ۽ انهن جي ذريعي لوپ
  2. هر زون ۾، اسڪرپٽ ٽائپ A يا AAAA جي هر DNS رڪارڊ ذريعي لوپ ڪري ٿو ۽ رڪارڊ سان پبلڪ IP کي چيڪ ڪري ٿو.
  3. جيڪڏهن IP مختلف آهي، اهو ان کي تبديل ڪري ٿو؛ جيڪڏهن نه، اهو لوپ جي ورهاڱي کي ڇڏي ٿو ۽ ايندڙ هڪ ڏانهن هلندو آهي.
  4. ترتيب ۾ بيان ڪيل وقت لاءِ سمهي ٿو

انسٽاليشن ۽ ترتيب ڏيڻ

اهو ممڪن هوندو ته هڪ .deb پيڪيج ٺاهڻ، پر مان هن تي سٺو نه آهيان، ۽ اهو سڀ ڪجهه ڏکيو ناهي.
مون عمل کي تفصيل سان بيان ڪيو README.md تي مخزن جو صفحو.

پر صرف ان صورت ۾، مان ان کي روسي ۾ عام اصطلاحن ۾ بيان ڪندس:

  1. پڪ ڪريو ته توهان وٽ python3 ۽ python3-pip انسٽال ٿيل آهي، جيڪڏهن نه، ان کي انسٽال ڪريو (ونڊوز تي، python3-pip Python سان گڏ نصب ٿيل آهي)
  2. ڪلون يا ڊائون لوڊ ڪريو مخزن
  3. گهربل انحصار کي انسٽال ڪريو.
    python3 -m pip install -r requirements.txt

  4. انسٽاليشن اسڪرپٽ کي هلايو
    لينڪس لاءِ:

    chmod +x install.sh
    sudo ./install.sh

    ونڊوز لاءِ: windows_install.bat

  5. ترتيب واري فائل کي تبديل ڪريو
    لينڪس لاءِ:

    sudoedit /etc/zen-cf-ddns.conf

    ونڊوز لاءِ:

    zen-cf-ddns.conf فائل کوليو ان فولڊر ۾ جتي توهان اسڪرپٽ انسٽال ڪيو آهي.

    هي هڪ باقاعده JSON فائل آهي، سيٽنگون ڪجھ به پيچيده نه آهن - مون خاص طور تي بيان ڪيو آهي 2 مختلف زونون ان ۾ مثال طور.

انسٽالر جي پويان ڇا آهي؟

لينڪس لاءِ install.sh:

  1. ھڪڙو صارف ٺاھيو ويو آھي ڊيمن کي هلائڻ لاءِ، ھوم ڊاريڪٽري ٺاھڻ کان سواءِ ۽ لاگ ان ڪرڻ جي صلاحيت کان سواءِ.
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. هڪ لاگ فائل ٺاهي وئي آهي /var/log/
  3. نئين ٺاهيل استعمال ڪندڙ کي لاگ فائل جو مالڪ ٺاهيو
  4. فائلون انهن جي جڳهن تي نقل ڪيون ويون آهن (config in /etc، executable فائل /usr/bin، سروس فائل ۾ /lib/systemd/system)
  5. خدمت چالو آهي

windows_install.bat ونڊوز لاءِ:

  1. نقل ڪري ٿو قابل عمل ۽ ترتيب واري فائل کي صارف جي مخصوص فولڊر ۾
  2. سسٽم جي شروعات تي اسڪرپٽ کي هلائڻ لاء شيڊولر ۾ هڪ ڪم ٺاهي ٿو
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

ترتيب کي تبديل ڪرڻ کان پوء، اسڪرپٽ کي ٻيهر شروع ڪرڻ جي ضرورت آهي؛ لينڪس ۾ هر شيء سادو ۽ واقف آهي:

sudo service zen-cf-ddns start
sudo service zen-cf-ddns stop
sudo service zen-cf-ddns restart
sudo service zen-cf-ddns status

ونڊوز لاءِ توهان کي pythonw پروسيس کي ختم ڪرڻو پوندو ۽ اسڪرپٽ کي ٻيهر هلائڻو پوندو (مان سي # ۾ ونڊوز لاءِ سروس لکڻ ۾ تمام سست آهيان):

taskkill /im pythonw.exe

هي انسٽاليشن ۽ ترتيب مڪمل ڪري ٿو، ان کي پنهنجي صحت لاء لطف اندوز ڪريو.

انھن لاءِ جيڪي ڏسڻ چاھين ٿا نه تمام خوبصورت پٿون ڪوڊ، ھتي آھي GitHub تي مخزن.

MIT لائسنس يافته آهي، تنهنڪري هن شين سان ڪريو جيڪو توهان ڪندا.

پي ايس: مان سمجهان ٿو ته اهو هڪ ڪچري جو ٿورو نڪتو، پر اهو پنهنجو ڪم هڪ ڌڪ سان ڪري ٿو.

UPD: 11.10.2019/17/37 XNUMX:XNUMX
مون کي 1 وڌيڪ مسئلو مليو، ۽ جيڪڏهن ڪو مون کي ٻڌائي ته ان کي ڪيئن حل ڪجي، مان تمام گهڻو شڪرگذار ٿيندس.
مسئلو اهو آهي ته جيڪڏهن توهان sudo python -m pip install -r کان سواءِ انحصار انسٽال ڪريو ٿا ... ته پوءِ ماڊيولز سروس استعمال ڪندڙ کان نظر نه ايندا، ۽ مان نه چاهيندس ته صارفين کي مجبور ڪرڻ لاءِ ماڊيول sudo تحت انسٽال ڪريو، ۽ هي آهي. درست ناهي.
ان کي ڪيئن خوبصورت ڏسڻ لاء؟
UPD: 11.10.2019/19/16 XNUMX:XNUMX مسئلو حل ڪيو ويو venv استعمال ڪندي.
اتي ڪيتريون ئي تبديليون ڪيون ويون آهن. ايندڙ رليز ايندڙ ڪجهه ڏينهن ۾ ٿيندي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو