בעידן בו רוב ספקיות האינטרנט אם לא כולן אין מקצות למשתמשים כתובת IP קבוע. בשל כך כמעט בכל אתחול של הראוטר גורם לכך שכתובת ה IP של המשתמש משתנה. ישנם משתמשים, כמוני למשל שהמחשב בבית וכן מכשור נוסף חייב גישה מבחוץ לצרכי עבודה, בקרה וכן למערכות בית חכם.
במצב שכזה בו כתובת ה IP משתנה מעת לעת נוצר קושי כמעט תמידי להתחבר מבחוץ. מצב זה ניתן לשינוי על ידי שימוש בשרותי Dynamic DNS אשר מאפשרים התקנת "תוכנת לקוח" באחד ממכשירי הבית ולתרגם את כתובת ה IP לשם דומיין ובכך למנוע את הצורך בלשנן את כתובת ה- IP בכל פעם מחדש. רוב ספקיות ה Dynamic DNS חינמיות אך מוגבלות לדומיין אחד בלבד ודורשות כניסה קבועה דרך דפדפן אחת לחודש על מנת לשמור על חשבון פעיל וכן משתמשות בטווח רחב של שמות דומיין.
במאמר זה נלמד כיצד ניתן להשתמש בדומיין שבבעלותנו אן עלי ידי רכישת דומיין חדש להקים לעצמנו שרות Dynamic DNS פשוט וקל. במאמר זה אתרכז בביצוע ההתקנה על גבי מערכת הפעלה לינוקס ובהמשך אוסיף מאמר על עבודה עם חלונות.
על מנת להתקין ולהגדיר את המערכת יש לוודא כי קויימו התנאים הבאים:
- יש בבעלותכם Domain קיים (ניתן לרכוש דומיין בעלות של 49 ש"ח באתר http://box.co.il או להשיג דומיין בחינם דרך http://dot.tk).
- חשבון פעיל ב CloudFlare (במאמר הבא תוכלו ללמוד מהו CloudFlare ומה יתרונותיו).
- שרת המריץ Linux (לצורך המאמר השתמשתי ב Ubuntu Server).
- Python מותקן על השרת.
וכעת להתקנה עצמה:
יש לוודא כי לאחר רכישת הדומיין יש להעביר את הדומיין לניהול בשרת CloudFlare על פי השלבים הבאים:
בצד ימין למעלה יש ללחוץ על Add Site.
כעת נוסיף את הדומיין שברשותנו ונלחץ על Begin Scan
כעת תתבצע סריקה ובמהלכה יבוצע אימות כי אכן הדומיין קיים ורשום וכן במידה וישנן רשומות DNS הן יסרקו לטובת העברתן. בסיום הסריקה נלחץ על Continue Setup.
כעת נתבקש להוסיף רשומות DNS. בשלב זה נוסיף את הכתובת בה נרצה להשתמש עבור ה IP שלנו (ניתן להקיש כרגע סתם כתובת IP כגון 1.1.1.1, 127.0.0.1 וכו').
*** חשוב לוודא כי הסימן המוקף בעיגול אינו פעיל (בצבע כתום) במידה וכן יש לבטלו על ידי לחיצה עליו. ונלחץ על Add Record על מנת לשמור את השינוי.***
כעת נלחץ על Continue על מנת לעבור לשלב הבא בו נגדיר את שרתי ה DNS.
כעת נצטרך לבחור את סוג התכנית בה נרצה להשתמש, במקרה שלנו התכנית החינמית מספיקה בהחלט.
שינוי שרתי DNS.
כאשר רוכשים דומיין דרך ספק זה או אחר, השרתים האחראים על "פרסום" המידע ברחבי הרשת הם שרתי ה NS הנקראים גם שרתי SOA (אחראים על ניהול הדומיין). על מנת ש CloudFlare ינהלו את הדומיין יש להגדיר בספק אצלו רכשתם את הדומיין כי כעת שרתי ה NS ינוהלו על ידי CloudFlare. בצד ימין נוכל לראות את שמות השרתים של הספק דרכו רכשנו את הדומיין ובצד שמאל את השרתים בהם נשתמש (שימו לב כי יתכנו שינויםן בשמות וכתובת השרתים בין החשבונות השונים).
ונלחץ על Continue.
זהו, עד כאן הקמת החשבון ב CloudFlare. כעת עלינו לגשת ולייצר לעצמנו Global APi Key הנחוץ לנו עבור ניהל הרשומות בצורה דינמית. לשם כך נלחץ על החץ הקטן שנמצא ליד כתובת המייל בצד ימין של הסרגל העליון ונבחר ב "My Settings", נגלול את החלון מטה עד אשר נראה את החלק הבא:
כאן נלחץ על View API Key (בשורה של Global) ונקבל את המסך הבא:
יש להעתיק את ה Api Key, בו נשתמש בהמשך.
כעת, נתקין את pycfdns שהוא ה api client של cloudflare ואת התלויות שלו, לצורך כך הקלידו את הפקודות הבאות:
apt install python-pip --yes pip install pycfdns requests
כעת נכתוב את קובץ ה python שיהיה אחראי על ביצוע העדכון. לצורך כך כתבו את הפקודות הבאות:
cd /opt mkdir ddns cd ddns nano ddns.py
העתיקו את הטקסט הבא אל תוך הקובץ שזה אתה יצרנו:
from pycfdns import CloudflareUpdater cfupdate = CloudflareUpdater() zone = '_zone_' email = '_email_' key = '_token_' records = [_subdomains_] headers = cfupdate.set_header(email, key) zoneid = cfupdate.get_zoneID(headers, zone) update_records = cfupdate.get_recordInfo(headers, zoneid, zone, records) result = cfupdate.update_records(headers, zoneid, update_records) print(result)
כאשר יש לעדכן את המשתנים הבאים על פי ההסבר.
Email – כתובת המייל המשמשת להתחברות ל cloudflare.
key – מחרוזת ה token שהעתקתם בשלב הקודם.
zone – הדומיין אותו תרצו לעדכן (למשל example.com).
records – מערך של מחרוזות המכיל את ה subdomains לעדכון (למשל www).
כעת שמרו והריצו אותו על ידי הפקודה הבאה:
python /opt/ddns/ddns.py
אם הכל תקין, והדומיין התעדכן בהצלחה נקבל הודעה שמסתכמת במילה True.
את הסקריפט ניתן להריץ ידנית או באמצעות cron jpb .
בהצלחה!
אפשרות נוספת, דוקר..
https://github.com/oznu/docker-cloudflare-ddns
לאחרונה התרגלתי לחפש על כמעט כל פתרון קיים מקבילה דוקרית.