CloudFlare کا استعمال کرتے ہوئے آپ کا اپنا متحرک DNS

کردار

CloudFlare کا استعمال کرتے ہوئے آپ کا اپنا متحرک DNS گھر میں ذاتی ضروریات کے لیے، میں نے VSphere انسٹال کیا، جس پر میں ایک ورچوئل راؤٹر اور ایک Ubuntu سرور بطور میڈیا سرور اور دیگر سامانوں کا ایک گروپ چلاتا ہوں، اور یہ سرور انٹرنیٹ سے قابل رسائی ہونا چاہیے۔ لیکن مسئلہ یہ ہے کہ میرا فراہم کنندہ رقم کے لیے جامد ڈیٹا دیتا ہے، جسے ہمیشہ زیادہ مفید مقاصد کے لیے استعمال کیا جا سکتا ہے۔ لہذا، میں نے ddclient + cloudflare مجموعہ استعمال کیا۔

جب تک ddclient نے کام کرنا بند نہیں کیا سب کچھ ٹھیک تھا۔ تھوڑا گھومنے کے بعد، میں نے محسوس کیا کہ بیساکھیوں اور سائیکلوں کا وقت آ گیا ہے، کیونکہ مسئلہ کو تلاش کرنے میں بہت زیادہ وقت لگ رہا تھا. آخر میں، سب کچھ ایک چھوٹے ڈیمون میں بدل گیا جو صرف کام کرتا ہے، اور مجھے کسی اور چیز کی ضرورت نہیں ہے۔
اگر کوئی دلچسپی رکھتا ہے تو بلی میں خوش آمدید۔

استعمال شدہ ٹولز اور "یہ" کیسے کام کرتا ہے۔

لہذا سب سے پہلے مجھے کلاؤڈ فلیئر ویب سائٹ پر معلوم ہوا وہ سب کچھ ہے جس کے بارے میں آپ کو جاننے کی ضرورت ہے۔ API. اور میں پہلے ہی Python میں ہر چیز کو لاگو کرنے کے لئے بیٹھ گیا تھا (Python سے واقف ہونے کے بعد، میں اسے تیزی سے کچھ آسان کاموں کے لئے استعمال کرتا ہوں یا جب مجھے فوری طور پر ایک پروٹو ٹائپ بنانے کی ضرورت ہوتی ہے)، جب مجھے اچانک تقریباً ایک تیار شدہ نفاذ نظر آیا۔
عام طور پر، چادر ایک بنیاد کے طور پر لیا گیا تھا 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. فائلوں کو ان کی جگہوں پر کاپی کیا جاتا ہے (/etc میں تشکیل، /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 کے عمل کو ختم کرنا پڑے گا اور اسکرپٹ کو دوبارہ چلانا پڑے گا (میں C# میں ونڈوز کے لیے سروس لکھنے میں بہت سست ہوں):

taskkill /im pythonw.exe

یہ انسٹالیشن اور کنفیگریشن کو مکمل کرتا ہے، اپنی صحت کے لیے اس سے لطف اٹھائیں۔

ان لوگوں کے لیے جو انتہائی خوبصورت Python کوڈ دیکھنا چاہتے ہیں، یہ یہاں ہے۔ GitHub پر ذخیرہ.

MIT لائسنس یافتہ ہے، تو اس چیز کے ساتھ وہی کریں جو آپ چاہتے ہیں۔

PS: میں سمجھتا ہوں کہ یہ تھوڑا سا بیساکھی نکلا، لیکن یہ اپنا کام زور سے کرتا ہے۔

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

نیا تبصرہ شامل کریں