CloudFlare ကို အသုံးပြု၍ သင့်ကိုယ်ပိုင် dynamic DNS

စကားချီး

CloudFlare ကို အသုံးပြု၍ သင့်ကိုယ်ပိုင် dynamic DNS အိမ်တွင် ကိုယ်ရေးကိုယ်တာလိုအပ်ချက်များအတွက် ကျွန်ုပ်သည် virtual router နှင့် Ubuntu ဆာဗာကို မီဒီယာဆာဗာတစ်ခုအဖြစ် လုပ်ဆောင်ပေးသည့် VSphere ကို ထည့်သွင်းခဲ့ပြီး၊ ဤဆာဗာသည် အင်တာနက်မှ ဝင်ရောက်အသုံးပြုနိုင်မည်ဖြစ်သည်။ သို့သော် ပြဿနာမှာ ကျွန်ုပ်၏ဝန်ဆောင်မှုပေးသူက ငွေအတွက် static data ပေးသည်၊ ၎င်းသည် ပို၍အသုံးဝင်သောရည်ရွယ်ချက်များအတွက် အမြဲသုံးနိုင်သည်။ ထို့ကြောင့်၊ ကျွန်ုပ်သည် ddclient + cloudflare ပေါင်းစပ်မှုကို အသုံးပြုခဲ့သည်။

ddclient အလုပ်မလုပ်တော့ဘဲ အားလုံးအဆင်ပြေပါတယ်။ ခဏလောက် ချောင်းကြည့်ပြီးနောက်၊ ပြဿနာရှာဖို့ အချိန်အရမ်းယူနေတာကြောင့် ချိုင်းထောက်၊ အဆုံးတွင်၊ အရာအားလုံးသည် အလုပ်လုပ်ရုံသာရှိသော daemon အဖြစ်ပြောင်းလဲသွားပြီး အခြားဘာမှမလိုအပ်ပါ။
စိတ်ဝင်စားတဲ့သူရှိရင် ကြောင်ကိုကြိုဆိုပါတယ်။

အသုံးပြုသည့်ကိရိယာများနှင့် "၎င်း" အလုပ်လုပ်ပုံ

ဒါကြောင့် cloudflare ဝဘ်ဆိုဒ်မှာ ပထမဆုံးတွေ့ခဲ့ရတာက သင်သိထားသင့်တဲ့ အရာပါ။ API ကို. ပြီးတော့ Python မှာ အရာအားလုံးကို အကောင်အထည်ဖော်ဖို့ ထိုင်ပြီးပြီ (Python နဲ့ ရင်းနှီးလာပြီးနောက်၊ ရိုးရှင်းတဲ့ အလုပ်တချို့ ဒါမှမဟုတ် နမူနာပုံစံကို အမြန်လုပ်ဖို့လိုအပ်တဲ့အခါ) မှာ အဆင်သင့်ဖြစ်လုနီးပါးဖြစ်နေတဲ့ အကောင်အထည်ဖော်မှုကို ရုတ်တရက်တွေ့လိုက်တဲ့အခါ ကျွန်တော်ထိုင်ပြီးပါပြီ။
ယေဘုယျအားဖြင့် ထုပ်ပိုးခြင်းကို အခြေခံအဖြစ် ယူထားသည်။ python-cloudflare.

DNS ကိုမွမ်းမံခြင်းအတွက်နမူနာများထဲမှတစ်ခုကိုယူ၍ configuration ဖိုင်တစ်ခုအသုံးပြုခြင်းနှင့် ဇုန်တစ်ခုအတွင်း A မှတ်တမ်းများစွာကို အပ်ဒိတ်လုပ်နိုင်စွမ်းနှင့် အကန့်အသတ်မဲ့ဇုန်အရေအတွက်ကို ထပ်ထည့်ပါသည်။

ယုတ္တိဗေဒမှာ အောက်ပါအတိုင်းဖြစ်သည်။

  1. script သည် configuration file မှဇုန်များစာရင်းကိုလက်ခံရရှိပြီး ၎င်းတို့ကို လှည့်ပတ်သည်။
  2. ဇုန်တစ်ခုစီတွင်၊ script သည် အမျိုးအစား A သို့မဟုတ် AAAA ၏ DNS မှတ်တမ်းတစ်ခုစီကို လှည့်ပတ်ပြီး Public IP ကို ​​မှတ်တမ်းဖြင့် စစ်ဆေးသည်
  3. IP မတူပါက၊ ၎င်းကိုပြောင်းမည်၊ မဟုတ်ပါက၊ ၎င်းသည် loop iteration ကို ကျော်သွားကာ နောက်တစ်ခုသို့ ဆက်လက်သွားပါမည်။
  4. config တွင်သတ်မှတ်ထားသောအချိန်အတွက်အိပ်ပျော်သည်။

တပ်ဆင်ခြင်းနှင့်ဖွဲ့စည်းမှု

.deb ပက်ကေ့ဂျ်ကို ပြုလုပ်ရန် ဖြစ်နိုင်သော်လည်း ကျွန်ုပ်သည် ၎င်းကို ကောင်းစွာ မလုပ်ဆောင်နိုင်သည့်အပြင် ခက်ခဲသည်တော့ မဟုတ်ပါ။
လုပ်ငန်းစဉ်ကို README.md တွင် အသေးစိတ်ဖော်ပြခဲ့ပါသည်။ repository စာမျက်နှာ.

သို့သော် အခြေအနေအရ၊ ရုရှားဘာသာဖြင့် ၎င်းကို ယေဘူယျအားဖြင့် ဖော်ပြပါမည်။

  1. သင့်တွင် python3 နှင့် python3-pip ကိုထည့်သွင်းထားကြောင်း သေချာပါစေ၊ မဟုတ်ပါက ၎င်းကို install လုပ်ပါ (Windows တွင်၊ python3-pip ကို Python နှင့်အတူ ထည့်သွင်းထားသည်)
  2. Clone သို့မဟုတ် repository ကိုဒေါင်းလုဒ်လုပ်ပါ။
  3. လိုအပ်သော မှီခိုမှုများကို ထည့်သွင်းပါ။
    python3 -m pip install -r requirements.txt

  4. တပ်ဆင်မှု script ကို run
    Linux အတွက်-

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

    Windows အတွက်- windows_install.bat

  5. ဖွဲ့စည်းမှုဖိုင်ကို တည်းဖြတ်ပါ။
    Linux အတွက်-

    sudoedit /etc/zen-cf-ddns.conf

    Windows အတွက်:

    ဇာတ်ညွှန်းကို သင်ထည့်သွင်းသည့် ဖိုင်တွဲတွင် zen-cf-ddns.conf ဖိုင်ကို ဖွင့်ပါ။

    ၎င်းသည် ပုံမှန် JSON ဖိုင်ဖြစ်ပြီး ဆက်တင်များသည် ရှုပ်ထွေးခြင်းမရှိပါ - ၎င်းတွင် မတူညီသောဇုန် 2 ခုကို နမူနာအဖြစ် ကျွန်ုပ်ဖော်ပြခဲ့သည်။

တပ်ဆင်သူများ၏နောက်ကွယ်တွင်ဘာရှိသနည်း။

Linux အတွက် install.sh

  1. အသုံးပြုသူတစ်ဦးသည် home directory ကိုမဖန်တီးဘဲနှင့် login လုပ်နိုင်စွမ်းမရှိဘဲ daemon ကိုလည်ပတ်ရန်ဖန်တီးထားသည်။
    sudo useradd -r -s /bin/false zen-cf-ddns

  2. မှတ်တမ်းဖိုင်ကို /var/log/ တွင် ဖန်တီးထားသည်။
  3. အသစ်ဖန်တီးထားသော အသုံးပြုသူကို မှတ်တမ်းဖိုင်၏ ပိုင်ရှင်ဖြစ်စေပါ။
  4. ဖိုင်များကို ၎င်းတို့၏ နေရာများသို့ ကူးယူသည် (config in /etc၊ /usr/bin တွင်၊ /lib/systemd/system ရှိ ဝန်ဆောင်မှုဖိုင်)
  5. ဝန်ဆောင်မှုကို အသက်သွင်းထားသည်။

Windows အတွက် windows_install.bat

  1. အသုံးပြုသူသတ်မှတ်ထားသော ဖိုင်တွဲသို့ လည်ပတ်နိုင်သော နှင့် ဖွဲ့စည်းမှုပုံစံဖိုင်ကို မိတ္တူကူးပါ။
  2. စနစ်စတင်ချိန်တွင် script ကို run ရန် အချိန်ဇယားဆွဲသူတွင် အလုပ်တစ်ခုဖန်တီးပါ။
    schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart

config ကိုပြောင်းပြီးနောက်၊ script ကိုပြန်လည်စတင်ရန်လိုအပ်သည်၊ Linux တွင်အရာအားလုံးသည်ရိုးရှင်းပြီးရင်းနှီးသည်-

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

Windows အတွက် သင်သည် pythonw လုပ်ငန်းစဉ်ကိုသတ်ပြီး script ကိုပြန်လည်လုပ်ဆောင်ရပါမည် (C# တွင် Windows အတွက် ၀ န်ဆောင်မှုတစ်ခုရေးရန်အလွန်ပျင်းသည်) ။

taskkill /im pythonw.exe

၎င်းသည် တပ်ဆင်ခြင်းနှင့် ဖွဲ့စည်းမှုတို့ကို ပြီးမြောက်စေပြီး သင့်ကျန်းမာရေးကို နှစ်သက်သည်။

သိပ်လှတဲ့ Python ကုဒ်ကို ကြည့်ချင်သူတွေအတွက်တော့ ဒီမှာ GitHub ရှိ သိုလှောင်မှု.

MIT လိုင်စင်ရထားသောကြောင့် ဤအရာများကို သင်လုပ်ပါ။

PS: အဲဒါက ချိုင်းထောက်နည်းနည်းဖြစ်သွားတာကို ကျွန်တော်နားလည်ပါတယ်၊ ဒါပေမယ့် အဲဒါက ပေါက်ကွဲသံနဲ့ သူ့အလုပ်ကို လုပ်တယ်။

UPD- 11.10.2019/17/37 ၁၇:၃၇
နောက်ထပ် ပြဿနာ 1 ခုကို တွေ့ပြီး တစ်စုံတစ်ယောက်က ဖြေရှင်းနည်းကို ပြောပြပါက၊ ကျွန်ုပ် အလွန်ကျေးဇူးတင်ပါမည်။
ပြဿနာမှာ sudo python -m pip install -r မပါဘဲ မှီခိုအားထားမှုကို တပ်ဆင်ပါက မော်ဂျူးများကို ဝန်ဆောင်မှုအသုံးပြုသူမှ မြင်နိုင်မည်မဟုတ်ပါ၊ ၎င်းသည် sudo အောက်တွင် မော်ဂျူးများကို ထည့်သွင်းရန် အသုံးပြုသူများကို အတင်းအကျပ်ခိုင်းစေခြင်း မပြုလိုပါ။ မမှန်ပါ။
ဘယ်လိုပုံစံနဲ့ လှပအောင် လုပ်မလဲ။
UPD- 11.10.2019/19/16 XNUMX:XNUMX ပြဿနာကို venv သုံးပြီး ဖြေရှင်းခဲ့သည်။
အပြောင်းအလဲများစွာရှိခဲ့သည်။ လာမည့်ရက်အနည်းငယ်အတွင်း ထွက်ရှိလာမည်ဖြစ်သည်။

source: www.habr.com

မှတ်ချက် Add