עשה לעצמך Dynamic DNS בקלות, במהירות וכמעט ללא עלות

dynamic dns
dynamic dns

בעידן בו רוב ספקיות האינטרנט אם לא כולן אין מקצות למשתמשים כתובת 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.

Cloudflare add site
Cloudflare add site

כעת נוסיף את הדומיין שברשותנו ונלחץ על Begin Scan

Cloudflare enter domain
Cloudflare enter domain

כעת תתבצע סריקה ובמהלכה יבוצע אימות כי אכן הדומיין קיים ורשום וכן במידה וישנן רשומות DNS הן יסרקו לטובת העברתן. בסיום הסריקה נלחץ על Continue Setup.

CloudFlare Continue Setup
CloudFlare Continue Setup

 

כעת נתבקש להוסיף רשומות DNS. בשלב זה נוסיף את הכתובת בה נרצה להשתמש עבור ה IP שלנו (ניתן להקיש כרגע סתם כתובת IP כגון 1.1.1.1, 127.0.0.1 וכו').
*** חשוב לוודא כי הסימן המוקף בעיגול אינו פעיל (בצבע כתום) במידה וכן יש לבטלו על ידי לחיצה עליו. ונלחץ על Add Record על מנת לשמור את השינוי.***

כעת נלחץ על Continue על מנת לעבור לשלב הבא בו נגדיר את שרתי ה DNS.

CloudFlare Add Record
CloudFlare Add Record

כעת נצטרך לבחור את סוג התכנית בה נרצה להשתמש, במקרה שלנו התכנית החינמית מספיקה בהחלט.

CloudFlare Choose free plan
CloudFlare Choose free plan

 

שינוי שרתי DNS.
כאשר רוכשים דומיין דרך ספק זה או אחר, השרתים האחראים על "פרסום" המידע ברחבי הרשת הם שרתי ה NS הנקראים גם שרתי SOA (אחראים על ניהול הדומיין). על מנת ש CloudFlare ינהלו את הדומיין יש להגדיר בספק אצלו רכשתם את הדומיין כי כעת שרתי ה NS ינוהלו על ידי CloudFlare. בצד ימין נוכל לראות את שמות השרתים של הספק דרכו רכשנו את הדומיין ובצד שמאל את השרתים בהם נשתמש (שימו לב כי יתכנו שינויםן בשמות וכתובת השרתים בין החשבונות השונים).

CloudFlare Change NS
CloudFlare Change NS

ונלחץ על Continue.
זהו, עד כאן הקמת החשבון ב CloudFlare. כעת עלינו לגשת ולייצר לעצמנו Global APi Key הנחוץ לנו עבור ניהל הרשומות בצורה דינמית.  לשם כך נלחץ על החץ הקטן שנמצא ליד כתובת המייל בצד ימין של הסרגל העליון ונבחר ב "My Settings", נגלול את החלון מטה עד אשר נראה את החלק הבא:

CloudFlare Get API
CloudFlare Get API

כאן נלחץ על View API Key (בשורה של Global) ונקבל את המסך הבא:

 

View API
View API

יש להעתיק את ה 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 .

בהצלחה!

1 Comment

Leave a Reply

כתובת האימייל שלך לא תפורסם


*