25/10/2022 7:22
MrHicUp כתב:
תוכל להסביר מדוע חשוב IP ללא Double NAT בשימוש עם הורדות טורנטים?
...
זה מאוד פשוט - כי ברמת TCP/IP יש תמיד צד לקוח, שיוצר חיבור (TCP במקרה הזה) לצד שרת. השרת הוא זה שפותח את הפורט והלקוח הוא זה שמתחבר אליו. עכשיו ככל שמדובר באפליקציות P2P כמו ביטורנט משתמשים אמורים להעביר מידע באופן ישיר ביניהם, אבל מכיוון ש-TCP/IP עובד בתצורת שרת/לקוח אז כשקובץ עובר בין משתמשי ביטורנט אחד מהמשתמשים פותח פורט (ומבחינת TCP הוא ה"שרת") והשני מתחבר אליו. מבחינת ביטורנט כיוון פתיחת החיבור לא משנה שום דבר, כלומר אין הכרח שמי שמוריד את הקובץ יפתח את החיבור למי שמשתף לדוגמה, זה יכול להיות גם ההיפך.
בכל מקרה באפליקציות P2P לפחות אחד מהמשתמשים חייב לפתוח פורט כדי לקבל חיבור נכנס. העניין עם NAT באופן כללי הוא שהרבה משתמשים חולקים את אותה כתובת IP באינטרנט ולכן אם מגיע חיבור נכנס ה-NAT לא יודע לאיזה מחשב זה מיועד והתוצאה היא שהחיבור נכשל (אגב, זה דה פקטו גם סוג של Firewall). כשמדובר ב-NAT שהראוטר הביתי שלך מבצע אתה יכול לפתוח פורטים בקונפיגורציה שלו - שזה אומר בעצם שאתה מגדיר לו שאם הוא מקבל בקשת חיבור נכנס בפורט ספציפי X אז הוא צריך להעביר אותה למחשב ספציפי כלשהו ברשת הביתית שלך (יש גם אפשרות לבצע את זה באופן אוטומטי דרך פרוטוקול UPnP אבל זה לא מומלץ בלשון המעטה כי זה שער הגהינום מבחינת אבטחת מידע).
בכל מקרה כשמדובר ב-CGNAT אין לך את אותה אפשרות לפתוח פורט בראוטר כי אין לך גישה לקונפיגורציה של הראוטרים של ספקית האינטרנט. התוצאה היא שכשאתה מאחורי CGNAT אתה לא יכול לקבל חיבורים נכנסים בכלל.
עכשיו כמו שאמרנו ב-P2P מישהו חייב לקבל חיבור נכנס, אז המישהו הזה יכול להיות הצד השני (בין אם הוא זה שמשתף או זה שמוריד) - אבל זה רק בהנחה שהוא יכול לקבל חיבור נכנס ולא נמצא באותה סיטואציה כמוך. המצב הוא בעצם שאם שני הצדדים נמצאים מאחורי CGNAT (ו/או שלא פתחו פורטים בראוטר שלהם כמו שצריך) אז לא יכולה להיות תקשורת ישירה בינהם - אם אין לך אפשרות לקבל חיבורים נכנסים תוכל לדבר רק עם כאלה שיש להם את האפשרות הזאת. בטורנטים מאוד פופולריים זה לרוב יהיה בלתי-מורגש אבל נסה להוריד משהו קצת יותר נדיר וזה יכול במקרה הטוב להתבטא במהירות מאוד נמוכה, ובמקרה היותר גרוע לא יהיה ניתן להוריד את הטורנט בכלל.
הנה דוגמה למצב הגרוע ביותר - אתה מנסה להוריד טורנט ממש נדיר, שיש רק Seed אחד שמשתף אותו, ולרוע המזל גם הוא מאחורי CGNAT. אם לך היתה אפשרות לפתוח פורט לחיבור נכנס הוא היה יכול לפתוח את החיבור אליך, אבל אם גם אתה מאחורי CGNAT אתם לא יכולים לדבר אחד עם השני בכלל ולכן לא תוכל להוריד את הטורנט, אלא אם מתישהו משתמש שלישי כלשהו יוריד אותו, ואותו משתמש יכול לקבל חיבורים נכנסים.
מקווה שזה מובן.