Pi-Hole – NAT Loopback workaround

Pi-Hole Nat loopback

היישום הנפוץ ביותר של NAT כיום הוא חיבור מחשבים רבים הנמצאים באותה ברשת המקומית לרשת האינטרנט באמצעות כתובת IP אחת בלבד. יישום זה שימושי לצורך צמצום כתובות ה-IP בעולם, שהרי במקום שלכל מחשב תינתן כתובת IP חיצונית, כל המחשבים מיוצגים ככתובת אחת בלבד, וכן לשם חיבור לאינטרנט של רשת בעלת יותר ממחשב אחד, באמצעות חשבון אחד של חיוג או חיבור מהיר לאינטרנט. לצורך ביצוע NAT כזה, נותנים כתובות IP פרטיות למחשבים ברשת. הנתב שמתחבר לאינטרנט גם מקבל מהחיבור כתובת IP חוקית ציבורית אחת. אותו נתב בדרך כלל גם יבצע את הניתוב עם NAT, ועל כן יקרא שער הגישה של הרשת הפנימית אל רשת האינטרנט. הניתוב מתבצע באופן הבא:

  1. כאשר מתקבלת מנת מידע מהרשת הפנימית, המיועדת לרשת האינטרנט:
    • כתובת המקור של מנת המידע מתורגמת כאילו שהמנה נשלחה מהנתב עצמו לאינטרנט
    • פורט המקור המקורי מתורגם לפורט מקור גבוה הניתן על ידי הנתב. פורט זה משמש כאינדקס לטבלת ה-NAT כדי שהנתב יידע להתאים את מנת החזור ל-IP הפנימי אליו היא שייכת (שימוש זה בפורטים גבוהים הוא הפתרון לבעיה של הסתרת מספר כתובות פנימיות על ידי כתובת אחת).
  2. כאשר מתקבלת מנת מידע מהאינטרנט אשר מיועדת לאחד ממחשבי הרשת הפנימית:
    • פורט היעד משמש כאינדקס לטבלת ה-NAT כדי למצוא את ה-IP הפנימי שאליו המנה צריכה להיות מנותבת.
    • פורט היעד מתורגם לפורט המקורי (הפנימי) שממנו יצאה המנה המקורית.
    • כתובת היעד מתורגמת כאילו מנת המידע נשלחה אל המחשב המתאים עם הכתובת הפנימית
    • מנת המידע מנותבת מחיבור האינטרנט אל החיבור של הרשת הפנימית בצירוף מס' הפורט שאיתו יצאה המנה מהרשת הפנימית.

כאשר רוצים לנתב בקשה שמגיעה מחוץ לרשת הביתית (מהאינטרנט) ולהפנות אותה לכתובת IP ספציפית בתוך הרשת משמשים ב Port forwarding אשר תפקידו לבצע את הניתוב של הבקשה מבחוץ פנימה.
איפה נשתמש ב Port forwarding? למשל כאשר בבית ישנה מצלמת IP ואנו רוצים לגשת אליה מבחוץ, אם באמצעות כתובת ה-IP החיצונית שלנו או באמצעות שירות של Dynamic DNS (שבפעול מקשר את הדומיין לכתובת ה IP החיצונית שלנו) אזי נרצה שהבקשה שמגיעה דרך האינטרנט תמצא את דרכה אל המצלמה אשר "מוסתרת" מאחורי ה NAT.

אז מה הבעיה? למה בכלל צריך NAT Loopbak?
Nat Loopbak משמש למצב בו נרצה להגיע לכתובת פנימית בתוך הרשת אבל על ידי הקשת כתובת האינטנרט האמיתית שלנו. לדוגמא, נניח שאנו משתמשים באפליקציה לצפות באותה המצלמה אך אנחנו רוצים שבהגדרה אחת נוכל להשתמש באפליקציה גם בתוך הבית וגם מחוצה לו. במקרה זה נצטרך להגדיר את כתובת ה IP החיצונית (אמיתית) שלנו או  Dynamic DNS ולא את הכתובת הפנימית. היות ורוב הראוטרים לא תומכים ב Nat loopback מה שיקרה הוא שהאפליקציה תוכל להתחבר למצלמה כאשר נשהה מחוץ לבית אך כאשר נהיה מוחברים לרשת הבתית הבקשה לא תגיע למצלה (תיחסם בראוטר).

אז איך בכל זאת נוכל להתגבר על הבעיה? כאן נכנסת לשימוש מערכת ה Pi-Hole עליה הסברתי כאן!
מערכת זו משמשת כשרת DNS פנימי בתוך הרשת ומאפשרת חסימות של דומיינים (בעיקר של פרסומות, וירוסים ועוד) אך ניתן לרתום אותה גם עבור מעקף של הצורך ב NAT Loopback.
על מנת לעשות זאת כל שעלינו לעשות הוא להוסיף רשומות לקובץ ה hosts של השרת עליו מותקנת המערכת עם הפניה לכתובת הרצוייה.

לדוגמא, אם נרצה שבתוך הרשת הביתית נוכל לגשת ל example.domain.com אשר מפנה לכתובת החיצונית 141.10.10.10 וממנה מתבצע Port forwarding למחשב שכתובתו הפנימית היא 192.168.0.1 נצטרך לערוך את קובץ ה hosts על ידי הפקודה:

nano /etc/hosts

ולהוסיף לתוכו את השורה הבאה:

192.168.0.1 example.domain.com

ניתן להוסיף מספר דומיינים באותה שורה בצורה הבאה:

192.168.0.1 example.domain.com example2.domain.com

או בשורות נפרדות:

192.168.0.1 example.domain.com
192.168.0.1 example2.domain.com

העדכון יתבצע עם שמירת הקובץ ואינו מצריך אתחול של המערכת.

 

בהצלחה!

Be the first to comment

Leave a Reply

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


*