CloudFlareని ఉపయోగించి మీ స్వంత డైనమిక్ DNS

ముందుమాట

CloudFlareని ఉపయోగించి మీ స్వంత డైనమిక్ DNS ఇంట్లో వ్యక్తిగత అవసరాల కోసం, నేను VSphereని ఇన్‌స్టాల్ చేసాను, దానిపై నేను వర్చువల్ రూటర్ మరియు ఉబుంటు సర్వర్‌ని మీడియా సర్వర్‌గా మరియు ఇతర గూడీస్‌ల సమూహంగా నడుపుతున్నాను మరియు ఈ సర్వర్ ఇంటర్నెట్ నుండి యాక్సెస్ చేయబడాలి. కానీ సమస్య ఏమిటంటే, నా ప్రొవైడర్ డబ్బు కోసం స్టాటిక్ డేటాను అందిస్తుంది, ఇది ఎల్లప్పుడూ మరింత ఉపయోగకరమైన ప్రయోజనాల కోసం ఉపయోగించబడుతుంది. అందువల్ల, నేను ddclient + cloudflare కలయికను ఉపయోగించాను.

ddclient పని చేయడం ఆపే వరకు అంతా బాగానే ఉంది. కొంచెం చుట్టుముట్టిన తర్వాత, సమస్యను కనుగొనడానికి చాలా సమయం తీసుకుంటున్నందున, క్రచెస్ మరియు సైకిళ్ల కోసం సమయం ఆసన్నమైందని నేను గ్రహించాను. చివరికి, ప్రతిదీ కేవలం పని చేసే చిన్న డెమోన్‌గా మారిపోయింది మరియు నాకు ఇంకేమీ అవసరం లేదు.
ఎవరైనా ఆసక్తి కలిగి ఉంటే, పిల్లికి స్వాగతం.

ఉపయోగించిన సాధనాలు మరియు "ఇది" ఎలా పని చేస్తుంది

కాబట్టి క్లౌడ్‌ఫ్లేర్ వెబ్‌సైట్‌లో నేను కనుగొన్న మొదటి విషయం మీరు తెలుసుకోవలసిన ప్రతిదీ API. మరియు నేను ఇప్పటికే పైథాన్‌లోని ప్రతిదాన్ని అమలు చేయడానికి కూర్చున్నాను (పైథాన్‌తో పరిచయం పొందిన తర్వాత, నేను దీన్ని కొన్ని సాధారణ పనుల కోసం ఎక్కువగా ఉపయోగిస్తాను లేదా నేను త్వరగా ప్రోటోటైప్ చేయవలసి వచ్చినప్పుడు), నేను అకస్మాత్తుగా దాదాపు సిద్ధంగా ఉన్న అమలును చూసినప్పుడు.
సాధారణంగా, రేపర్ ఆధారంగా తీసుకోబడింది పైథాన్-క్లౌడ్‌ఫ్లేర్.

నేను DNSని అప్‌డేట్ చేయడానికి ఉదాహరణలలో ఒకదాన్ని తీసుకున్నాను మరియు కాన్ఫిగరేషన్ ఫైల్ యొక్క ఉపయోగాన్ని మరియు ఒక జోన్‌లో అనేక A రికార్డ్‌లను అప్‌డేట్ చేయగల సామర్థ్యాన్ని మరియు అపరిమిత సంఖ్యలో జోన్‌లను జోడించాను.

తర్కం క్రింది విధంగా ఉంది:

  1. స్క్రిప్ట్ కాన్ఫిగరేషన్ ఫైల్ నుండి జోన్‌ల జాబితాను అందుకుంటుంది మరియు వాటి ద్వారా లూప్ చేస్తుంది
  2. ప్రతి జోన్‌లో, స్క్రిప్ట్ A లేదా AAAA రకం ప్రతి DNS రికార్డ్ ద్వారా లూప్ అవుతుంది మరియు రికార్డ్‌తో పబ్లిక్ IPని తనిఖీ చేస్తుంది
  3. IP భిన్నంగా ఉంటే, అది దానిని మారుస్తుంది; కాకపోతే, అది లూప్ పునరావృతాన్ని దాటవేసి తదుపరిదానికి వెళుతుంది.
  4. కాన్ఫిగరేషన్‌లో పేర్కొన్న సమయానికి నిద్రపోతుంది

సంస్థాపన మరియు ఆకృతీకరణ

.deb ప్యాకేజీని తయారు చేయడం బహుశా సాధ్యమవుతుంది, కానీ నేను ఈ విషయంలో బాగా లేను మరియు ఇది అంత కష్టం కాదు.
నేను README.mdలో ప్రక్రియను చాలా వివరంగా వివరించాను రిపోజిటరీ పేజీ.

అయితే, నేను దానిని రష్యన్ భాషలో సాధారణ పరంగా వివరిస్తాను:

  1. మీరు python3 మరియు python3-pip ఇన్‌స్టాల్ చేశారని నిర్ధారించుకోండి, లేకపోతే, దాన్ని ఇన్‌స్టాల్ చేయండి (Windowsలో, పైథాన్‌తో పాటు python3-pip ఇన్‌స్టాల్ చేయబడింది)
  2. రిపోజిటరీని క్లోన్ చేయండి లేదా డౌన్‌లోడ్ చేయండి
  3. అవసరమైన డిపెండెన్సీలను ఇన్‌స్టాల్ చేయండి.
    python3 -m pip install -r requirements.txt

  4. ఇన్‌స్టాలేషన్ స్క్రిప్ట్‌ను రన్ చేయండి
    Linux కోసం:

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

    Windows కోసం: windows_install.bat

  5. కాన్ఫిగరేషన్ ఫైల్‌ను సవరించండి
    Linux కోసం:

    sudoedit /etc/zen-cf-ddns.conf

    విండోస్ కోసం:

    మీరు స్క్రిప్ట్‌ను ఇన్‌స్టాల్ చేసిన ఫోల్డర్‌లో zen-cf-ddns.conf ఫైల్‌ను తెరవండి.

    ఇది సాధారణ JSON ఫైల్, సెట్టింగ్‌లు సంక్లిష్టంగా ఏమీ లేవు - నేను అందులో 2 వేర్వేరు జోన్‌లను ఉదాహరణగా ప్రత్యేకంగా వివరించాను.

ఇన్‌స్టాలర్‌ల వెనుక ఏమి ఉంది?

Linux కోసం 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

కాన్ఫిగరేషన్‌ను మార్చిన తర్వాత, స్క్రిప్ట్‌ను పునఃప్రారంభించాలి; 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 ప్రాసెస్‌ని చంపి, స్క్రిప్ట్‌ను మళ్లీ అమలు చేయాలి (Windows కోసం C#లో సేవను వ్రాయడానికి నేను చాలా సోమరిగా ఉన్నాను):

taskkill /im pythonw.exe

ఇది ఇన్‌స్టాలేషన్ మరియు కాన్ఫిగరేషన్‌ను పూర్తి చేస్తుంది, మీ ఆరోగ్యాన్ని ఆస్వాదించండి.

అంత అందంగా లేని పైథాన్ కోడ్‌ని చూడాలనుకునే వారి కోసం, ఇదిగోండి 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

ఒక వ్యాఖ్యను జోడించండి