iptables עם מקור דומיין במקום כתובת IP



  • פתיחה נורמלית של כתובת בiptables היא לפי IP

    iptables -A INPUT -s 192.168.0.0/24 -d 192.168.0.5 -p tcp -j ACCEPT
    

    אני מעוניין לעשות פתיחה לפי דומיין, ושiptables יתרגם לבד את הכתובת (או שזה יהיה במשתנה כלשהוא ושהוא יקח משם כל פעם)

    דוגמא:

    iptables -A INPUT -s example.com -d 192.168.0.5 -p tcp -j ACCEPT
    

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

    תודה על כל רעיון...



  • מבדקה שעשיתי כעת, עולה כי הכלל

    -A INPUT -s 955.co.il -j ACCEPT
    
    

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


  • ניהול

    @clickone באינטרנט כולם כותבים שזה לא נכון ואפשרי לעשות זאת באמצעות IPTABLE
    לגבי למה, ומה שהצבעת בעניין הDNS, אני רואה סתירה בעניין.
    אנשים באינטרנט כותבים שזה סתם כינוי לIP, כלומר מייד בהרצת הפקודה (!) זה מומר לכתובת אייפי נצחית שלא תשתנה כלל.
    מאידך בתיעוד ישנה אזהרה לא לא לעשות כללים שמתבססים על DNS בגלל ביצועים, משמע שאפשר...

    ציטוט:

    Source specification. Address can be either a network name, a hostname (please note that specifying
    any name to be resolved with a remote query such as DNS is a really bad idea
    ), a network IP address
    (with /mask), or a plain IP address. The mask can be either a network mask or a plain number,
    specifying the number of 1's at the left side of the network mask. Thus, a mask of 24 is equivalent
    to 255.255.255.0. A "!" argument before the address specification inverts the sense of the address.
    The flag --src is an alias for this option.

    מקור https://community.rackspace.com/products/f/public-cloud-forum/174/introduction-to-iptables
    זה נראה כמו דף עזרה של man.
    סליחה על המקור הלא רשמי, ככה זה בעולם הנפלא של הקוד הפתוח 🙂


  • תכנות

    @clickone ,
    לא יודע אם זה עדיין מעניין אותך,
    בכל אופן, מנסיון שלי, ה IP-Tables ממיר את הדומיין ל IP ברגע החלת הכלל ותו לא.
    הוא לא בודק מעצמו אף פעם האם הכתובת השתנתה.

    אני לצורך העניין כתבתי סקריפט קטן שמתוזמן ע"י crontab, ששומר את הכתובת הפעילה "בצד" (בקובץ או במסד נתונים), ובמידה והוא מזהה שהכתובת התחלפה, הוא מוחק את הכתובת הישנה ב IP-Tables ומוסיף במקומה את הכתובת החדשה, ואז מחליף את הכתובת הישנה שהיתה שמורה בצד.

    אבל!!!
    תקח בחשבון שאם אתה צריך זמינות מיידית מהלקוח אל השרת שלך לאחר שהתחלף לו ה-IP (כגון לצורך חיבור שלוחות SIP אל מרכזייה), כל פתרון מבוסס DNS דינמי יהיה בעייתי!
    כי מאז ששרת ה DNS הדינמי מתעדכן בכתובת החדשה ועד שבפועל הקאש נמחק בכל השרתים שבדרך, יכול לקחת גם 20 דקות בלי בעייה!
    תוכל לעשות נסיון פשוט: תעדכן DNS כלשהו שיש לך אצל No-IP וכדו', ואז תבצע שאילתא מהמחשב על ה DNS, ותראה כמה זמן לוקח עד שאתה מקבל את התשובה המעודכנת...

    לא יודע אם הועלתי לך, אבל אולי לבאים בתור שיקראו את זה.



  • @איש-אחד
    הועלת וודאי!
    אני עדיין מחפש פיתרון.
    חשבתי לעשות דף שבכל קריאה אליו יעדכן את הIP החדש של המשתמש. (זה אכן לשלוחת סיפ) - ואז בכל החלפת רשת שהמשתמש יקרא לדף הזה, או קריאה מאחורי הקלעים כשמתחלפת רשת
    לכאורה בפיתרון שלך (בלי להתייחס כרגע לבעיית הדיליי), למה היית צריך להחליף את הכתובת? לא יותר פשוט לעשות ריסטארט לiptables ואז הוא יקח את הכתובת הנוכחית מהDNS?
    לגבי NO-IP אני מניח שאפשר לבקש את הIP הנוכחי בAPI בדרך מסויימת

    עריכה:
    הנה טעיתי. הקוד הזה הוא לעידכון ולא לקבלת הIP החדש

    http://username:password@dynupdate.no-ip.com/nic/update?hostname=mytest.testdomain.com&myip=1.2.3.4
    

    אפילו הם מכירים בנטפרי 😛
    מקור לקוד
    https://www.noip.com/integrate/request


  • חשמל ואלקטרוניקה תכנות

    @איש-אחד אמר בiptables עם מקור דומיין במקום כתובת IP:

    כי מאז ששרת ה DNS הדינמי מתעדכן בכתובת החדשה ועד שבפועל הקאש נמחק בכל השרתים שבדרך, יכול לקחת גם 20 דקות בלי בעייה!

    מנסיוני, לפעמים זה גם יכול לקחת כמה שעות.


  • תכנות

    @clickone אמר בiptables עם מקור דומיין במקום כתובת IP:

    לכאורה בפיתרון שלך (בלי להתייחס כרגע לבעיית הדיליי), למה היית צריך להחליף את הכתובת? לא יותר פשוט לעשות ריסטארט לiptables ואז הוא יקח את הכתובת הנוכחית מהDNS?

    סתם לתזמן כל דקה ריסטרט ל IP-Tables מריח לי קצת עקום.

    ולתזמן סקריפט שיכנס לפעולה רק במידה והוא מזהה שהכתובת השתנתה, ורק אז הוא עושה ריסטרט ל IP-Tables, זה כמעט כמו הסקריפט שאני עשיתי, לא?

    ההבדל הוא שאצלי בסקריפט יש 2 שורות, אחת שמוחקת את הכתובת הישנה והשניה שמכניסה את החדשה, ואצלך שורה אחת שעושה ריסטרט.
    האם לא יותר תקני לעדכן רשמית את ה IP-Tables מאשר לעשות לו ריסטרט?



  • @איש-אחד נכון, הרעיו שלך יותר נכון מלעשות סתם ריסטארט.
    וכנראה אין ברירה אלא לעשות ככה או משהו דומה.
    יש עוד משהו, שיכול להיות שלמשתמש מסויים הIP הזה כבר התחלף, אבל הוא נדרש עבור משתמש אחר. בזה גם אם הולכים לפי NO-IP אז לכל אחד יש כתובת משלו, אבל אצלך איך אתה מזהה את כלל המשתמשים?




  • תכנות

    @clickone ,

    צריך לשנות את הקובץ בשביל שבתזמון הבא של הסקריפט הוא ישווה לכתובת IP המעודכנת, לא?

    לכאורה מה שהבאת מסטאק מיישם בדיוק את השיטה שאני עשיתי, לא כך?

    לא הבנתי מה ששאלת לגבי כמה משתמשים.
    נניח לראובן יש DNS שמפנה לכתובת של נטפרי 1.2.3.4
    ולשמעון יש DNS שמפנה לכתובת של גוגל 8.8.8.8
    אז בקובץ / במסד נתונים שמורות שתי הכתובות הנ"ל להשוואה.

    בתזמון הבא של הסקריפט, נניח שהכתובת של ראובן השתנתה ל 5.6.7.8, ושל שמעון ל 1.2.3.4.
    הלולאה שבסקריפט תבדוק בסיבוב הראשון האם ה DNS של ראובן מפנה עדיין ל 1.2.3.4. תשובה לא. אין בעייה. מוחקים ב IP-Tables את 1.2.3.4 ובמקומו מוסיפים 5.6.7.8.
    הסיבוב השני של הלולאה בודק את ה DNS של שמעון האם הוא עדיין מפנה ל 8.8.8.8. תשובה לא. אין בעייה. מוחקים את 8.8.8.8 ובמקומו מוסיפים (חזרה) את 1.2.3.4.
    פספסתי פה משהו?


 

בא תתחבר לדף היומי!