CloudFlare භාවිතා කරන ඔබේම ගතික DNS

පෙරවදන

CloudFlare භාවිතා කරන ඔබේම ගතික DNS නිවසේ පුද්ගලික අවශ්‍යතා සඳහා, මම VSphere ස්ථාපනය කළෙමි, එහි මා අතථ්‍ය රවුටරයක් ​​සහ Ubuntu සේවාදායකයක් මාධ්‍ය සේවාදායකයක් ලෙස ක්‍රියාත්මක කරන අතර තවත් හොඳ දේවල් රාශියක් ඇති අතර මෙම සේවාදායකය අන්තර්ජාලයෙන් ප්‍රවේශ විය යුතුය. නමුත් ගැටළුව වන්නේ මගේ සැපයුම්කරු මුදල් සඳහා ස්ථිතික දත්ත ලබා දීමයි, එය සෑම විටම වඩා ප්රයෝජනවත් අරමුණු සඳහා භාවිතා කළ හැකිය. ඒ නිසා මම ddclient + cloudflare සංයෝජනය භාවිතා කළා.

ddclient වැඩ නතර කරන තුරු සියල්ල හොඳින් විය. පොඩ්ඩක් එහාට මෙහාට වෙලා බලද්දී මට තේරුණා ප්‍රශ්නය හොයාගන්න සෑහෙන වෙලාවක් යන නිසා කිහිලිකරු සහ බයිසිකල් ගන්න කාලය ඇවිත් කියලා. අවසානයේදී, සෑම දෙයක්ම වැඩ කරන කුඩා ඩීමන් බවට පත් විය, මට වෙන කිසිවක් අවශ්ය නැත.
කවුරුහරි කැමති නම්, cat වෙත සාදරයෙන් පිළිගනිමු.

භාවිතා කරන මෙවලම් සහ "එය" ක්රියා කරන ආකාරය

ඉතින් මම cloudflare වෙබ් අඩවියෙන් මුලින්ම සොයා ගත්තේ ඔබ දැනගත යුතු සියල්ලයි 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. ස්ථාපන ස්ක්‍රිප්ට් ධාවනය කරන්න
    Linux සඳහා:

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

    වින්ඩෝස් සඳහා: windows_install.bat

  5. වින්‍යාස ගොනුව සංස්කරණය කරන්න
    Linux සඳහා:

    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 file in /usr/bin, service file in /lib/systemd/system)
  5. සේවාව සක්රිය කර ඇත

Windows සඳහා 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

Windows සඳහා ඔබට pythonw ක්‍රියාවලිය විනාශ කර ස්ක්‍රිප්ට් එක නැවත ක්‍රියාත්මක කිරීමට සිදුවේ (C# වලින් Windows සඳහා සේවාවක් ලිවීමට මට කම්මැලියි):

taskkill /im pythonw.exe

මෙය ස්ථාපනය සහ වින්‍යාසය සම්පූර්ණ කරයි, එය ඔබේ සෞඛ්‍යයට භුක්ති විඳින්න.

එතරම් ලස්සන නැති Python කේතය බලන්න කැමති අය සඳහා මෙන්න 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

අදහස් එක් කරන්න