שיעור 09: רשתות¶
**חלק א': מאגר ידע למדריך **
1. ממשקים וסדרי עדיפויות: ניהול מיקומי רשת (Network Locations) ו-Service Order¶
1. High-Level Theory & History¶
היסטורית, במערכות Mac OS קלאסיות הגדרות הרשת והמדפסות נוהלו באופן נפרד לחלוטין דרך כלי שנקרא Chooser, הרבה לפני שרוכזו תחת קורת גג אחת ב-System Preferences (שהפך ב-macOS 13 ל-System Settings והמשיך להתפתח עד macOS 26 Tahoe).
[!TIP] הערת מורשת (Legacy): ה-Chooser היה חלק איקוני מ-Mac OS 9 ומטה, ושימש לבחירת אזורי AppleTalk ומדפסות. הוא יצא לגמלאות מזמן, והוחלף על ידי ה-System Preferences המאוחד וכיום על ידי האפליקציה המודרנית System Settings.
מערכת ההפעלה macOS מתוכננת לאפשר ניידות מרבית עבור משתמשים המדלגים בין סביבות עבודה שונות (בית, משרד, בתי קפה). כדי למנוע את הצורך בהגדרה ידנית מחדש של כתובות IP, שרתי DNS והגדרות Proxy בכל פעם, אפל פיתחה את מנגנון ה-Network Location (מיקום רשת). מיקומי רשת מאפשרים לשמור קבוצות של הגדרות רשת תחת פרופילים נפרדים (למשל "Office" לעומת "Automatic") ולדלג ביניהם בלחיצת כפתור.
בנוסף, מנגנון ה-Service Order (סדר שירותים) קובע את סדר העדיפויות שבו המערכת תנסה לנתב את התעבורה כאשר מספר ממשקי רשת (כגון Wi-Fi, Ethernet וחיבור סלולרי) פעילים ומחוברים במקביל. המערכת תמיד תעביר תעבורה דרך הממשק שנמצא בראש הרשימה, אלא אם כן הוא נכשל או אינו מסוגל לנתב החוצה.
ב-macOS Tahoe 26, הגדרה זו הוצנעה מעט בממשק המשתמש. ייתכן שגם ה-Ethernet וגם ה-Wi-Fi יציגו מחוון ירוק המעיד על התחברות תקינה, אך Safari ייכשל בהתחברות לאתרים חיצוניים אם חיבור Ethernet מקומי-בלבד יקבל עדיפות על פני חיבור Wi-Fi שיש לו גישה לאינטרנט. הגדרה זו מבוצעת דרך תפריט ה-... (שלוש נקודות) בתחתית חלונית הגדרות הרשת, מיקום UI קריטי שמשתמשים מרבים לפספס.
2. Deep Technical Architecture¶
הניהול המערכתי של ממשקי הרשת והתצורות השונות מבוצע על ידי תהליך הרקע (Background Process) המרכזי שנקרא configd (חלק מ-SystemConfiguration framework). תהליך זה מאזין לשינויים בסטטוס החיבור הפיזי (Link State) ומעדכן באופן דינמי את טבלת הניתוב (Routing Table) של הקרנל. כאשר מתבצע שינוי של Service Order, התהליך configd מעדכן את ה-Default Gateway בהתאם לממשק בעל העדיפות הגבוהה ביותר שיש לו חיבור חוקי (Link Up).
המידע נשמר מבחינה היררכית במאגר SystemConfiguration, כך שאפליקציות שזקוקות לחיבור יכולות לשאול את ה-framework איזה ממשק רשת פעיל כעת מבלי לנהל את הניתוב בעצמן.
גם ממשקי רשת וירטואליים מגופשרים (Bridged virtual network interfaces) משחקים כאן תפקיד. ב-macOS Tahoe 26, משתמשים ומנהלי מערכת יכולים לגשר ממשקים וירטואליים לרשתות פיזיות, מה שמאפשר למכונות וירטואליות או מנהרות VPN ייעודיות לשתף בדיוק את אותו Subnet כמו מכונת המארח (Host), דבר שמשנה את האופן שבו configd מתעדף את מדדי הניתוב (Metrics) הפנימיים.
3. Terminal Commands, Plists & Logs¶
- מסוף הפקודות (Terminal) Commands:
networksetup -listalllocations(הצגת כל מיקומי הרשת המוגדרים במערכת).networksetup -switchtolocation <LocationName>(החלפה מהירה בין מיקומי רשת).networksetup -listnetworkserviceorder(הדפסת סדר העדיפויות הנוכחי של ממשקי הרשת).networksetup -listallnetworkservices(הצגת רשימת כל שירותי הרשת הזמינים, שימושי מאוד לסקרפטים).netstat -rn(צפייה בטבלת הניתוב של הקרנל להבנת ניתוב ברירת המחדל).netstat -an(צפייה בכל החיבורים הפעילים).ifconfig(כלי מיושן אך פועל במלואו לצפייה בסטטוס ממשקים).ipconfig getifaddr en0(חלופה מודרנית ומהירה לקבלת ה-IP של ממשק ה-Wi-Fi הראשי).-
system_profiler SPNetworkDataType(הפקת דו"ח מלא של מצב הרשת והחומרה). -
Plists:
-
ההגדרות נשמרות בקובץ
preferences.plistהממוקם בנתיב:/Library/Preferences/SystemConfiguration/preferences.plist -
Logs:
log show --predicate 'process == "configd"' --info(מעקב אחר שינויים במצב הרשת והחלפות מיקומים כפי שמנוהלים על ידי ה-Daemon).
4. Edge Cases & Troubleshooting¶
מצב שכיח הוא שלמשתמש יש חיבור Wi-Fi תקין לרשת, אך אין לו גישה לאינטרנט. פעמים רבות הבעיה נעוצה ב-Service Order: ממשק וירטואלי (כמו תוכנת VPN ישנה או תחנת עגינה שאינה מחוברת לכבל) נמצא בראש הרשימה, ולמרות שהוא לא מספק אינטרנט, המערכת מנסה לנתב דרכו את התעבורה. הדבר עלול לגרום למצבים שבהם Safari מחזיר כישלון התחברות מלא (Complete failure to connect) גם כשהחומרה נראית תקינה.
הפתרון הוא כניסה ל-System Settings -> Network, לחיצה על לחצן ה-..., בחירה ב-Set Service Order, וגרירת ממשק ה-Wi-Fi לראש הרשימה, או שימוש בפקודת networksetup. במקרי קצה של שחיתות בקובץ ההגדרות, שבהם שינוי הגדרות IP לא נשמר, מומלץ ליצור Network Location חדש (היוצר סביבת SystemConfiguration נקייה לחלוטין מאפס) – מה שלרוב פותר את כל תקלות התצורה ללא צורך במחיקת קבצים ידנית.
אם אתר ספציפי נכשל אך אתרים אחרים פועלים כרגיל, ייתכן שזו בעיה ספציפית לדפדפן. macOS Ventura וגרסאות מאוחרות יותר של Safari הציגו תפריט Develop מוסתר (מופעל דרך הגדרות מתקדמות). לעיתים קרובות, שינוי ה-User Agent של Safari דרך תפריט זה יכול לעקוף חסימות שרת שרירותיות שאינן מזהות גרסאות WebKit חדשות של אפל.
2. כלי אבחון: ניטור קישוריות עם Activity Monitor ו-Wireless Diagnostics¶
1. High-Level Theory & History¶
[!TIP] הערת מורשת (Legacy): היסטורית, macOS כללה אפליקציה בשם Network Utility עבור פינגים, traceroute ושאילתות WHOIS. אפל זנחה והסירה אפליקציה זו, ומעודדת משתמשים להשתמש ב-Terminal או בכלים צד-שלישי.
כדי לתמוך ולפתור תקלות רשת, אנשי IT חייבים להבין האם הבעיה היא מקומית (במחשב), בתשתית הראוטר, או בשרת היעד. בעבר macOS נסמכה רבות על Terminal לצורך זה, אך כיום היא מציעה כלים גרפיים מצוינים לקבלת תמונת מצב מדויקת. ה-Activity Monitor מספק ניתוח ברמת ה-Byte בזמן אמת לגבי אפליקציות שזוללות רוחב פס, בעוד Wireless Diagnostics מציע ניתוח RF (Radio Frequency) מעמיק.
כמו כן, כלי GUI צד-שלישי כמו WhatRoute של Bryan Christianson מילאו את החלל שהותירה Network Utility, ומציעים ויזואליזציה חזקה של הניתוב. עם זאת, Wireless Diagnostics נותר חבוי (קבור ב-/System/Library/CoreServices/Applications), והגישה הקלה ביותר אליו היא באמצעות לחיצה יחד עם מקש ה-Option על אייקון ה-Wi-Fi בשורת התפריטים (Menu Bar).
2. Deep Technical Architecture¶
הפקודה ping שולחת מנות ICMP Echo Request אל היעד וממתינה לתשובת ICMP Echo Reply ברמת הקרנל. traceroute עובדת על ידי שליחת מנות UDP עם ערך Time-To-Live (TTL) שהולך וגדל; כל ראוטר בדרך מפחית את ה-TTL, וכאשר הוא מגיע לאפס, הראוטר מחזיר הודעת ICMP Time Exceeded, וכך המערכת ממפה את כל "התחנות" בדרך.
פעולות תרגום שמות דומיין ל-IP (DNS) מתבצעות ומטומנות (Cached) על ידי תהליך הרקע mDNSResponder. כאשר Safari לא מצליח להתחבר לאתר, אחד האשמים הבלתי נראים הנפוצים ביותר הוא זיכרון מטמון מיושן של DNS בתוך ה-mDNSResponder.
בצד ה-Wi-Fi, המערכת רושמת ברצף את ה-RSSI (Received Signal Strength Indicator), רעשי הרקע (Noise) וקצב השידור (Tx Rate). הקובץ הבינארי airport (הדורש יצירת קישור סימבולי ל-/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport) מאפשר סריקה מעמיקה של BSSIDs וערוצים דרך שורת הפקודה, אותה מנגנון ה-Wireless Diagnostics הגרפי עוטף בתוך מנוע אבחון אוטומטי.
3. Terminal Commands, Plists & Logs¶
- מסוף הפקודות (Terminal) Commands:
ping -c 4 www.apple.com(ביצוע 4 בדיקות פינג בלבד, ומונע לולאות אינסופיות).traceroute www.google.com(איתור נתיב הניתוב).curl ifconfig.meאוcurl ipecho.net/plain(שולף את כתובת ה-IP החיצונית והציבורית ישירות מהטרמינל).dig www.google.com(מספק מידע מפורט על שאילתת DNS).sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder(מחיקת מטמון ה-DNS ואילוץ ה-Daemon לקרוא מחדש הגדרות).lsof -i(מפרט את כל פורטי הרשת הפתוחים והתהליכים המשתמשים בהם).-
networksetup -getinfo "Wi-Fi"(הצגת כל הגדרות ה-IP, ה-Subnet וה-Router של ממשק ה-Wi-Fi). -
Plists:
-
N/A (כלים אלו פועלים מול ה-Daemon בזיכרון או שהם כלי אבחון רשתיים בזמן אמת, אינם שומרים הגדרות בקבצי Plist עצמאיים).
-
Logs:
log show --predicate 'process == "mDNSResponder"'(איתור שגיאות בשאילתות DNS).
4. Edge Cases & Troubleshooting¶
מקרה נפוץ הוא כאשר בדיקת ping לשרת נכשלת (Packet Loss 100%) למרות שיש גלישה תקינה והשרת למעשה פעיל. במקרים כאלו חשוב לזכור שרשתות מודרניות, נתבים או שרתים (וגם macOS עצמה אם פועל Stealth Mode) חוסמים פקודות ICMP מטעמי אבטחה, ולכן כישלון ב-ping אינו מעיד בהכרח על חוסר קישוריות לשירות עצמו (כמו שרת Web בפורט 443).
בנוסף, תקלות רבות שבהן המשתמש לא מצליח לגשת לשרת מסוים למרות שכתובת ה-IP שלו השתנתה נובעות מזיכרון מטמון מיושן של DNS. הרצת פקודת ה-flushcache ושליחת סיגנל HUP ל-mDNSResponder מאלצת את המערכת למחוק את הזיכרון ולבצע שאילתת DNS חדשה ונקייה.
אם דווקא Safari לא מצליח להתחבר לאתר, אך ping מתרגם את ה-IP ודפדפנים אחרים עובדים, ייתכן שזה קשור לבעיות CG-NAT מצד הספק (ISP) או שהאתר חוסם את מחרוזת ה-User Agent הספציפית של Safari.
3. חומת האש: ה-Firewall המובנה של macOS וכיצד הוא פועל¶
1. High-Level Theory & History¶
כחלק מפילוסופיית האבטחה של אפל, רוב מנגנוני ההגנה של המק (כגון XProtect, Gatekeeper, SIP ו-SSV) פועלים כיום בשקט מוחלט עמוק מאחורי הקלעים, ללא ממשק ניהול מרכזי או התראות אם אחד מהם כובה בשוגג. חומת האש (ה-ALF) היא יוצאת מן הכלל, שכן היא אחת ההגנות הבודדות שעדיין מנוהלת ישירות מהממשק הגרפי.
באופן מסורתי, חומות אש נוהלו לפי "פורטים" (Port-based Firewall), דבר שדרש מהמשתמש להבין אילו פורטים לפתוח (כמו פורט 80 ל-HTTP). אפל בחרה בגישה שונה וידידותית יותר למשתמש ב-macOS, והטמיעה Application Layer Firewall (ALF). ה-Firewall המובנה של מק לא שואל "האם לפתוח את פורט 22?", אלא "האם לאפשר לאפליקציה Zoom לקבל חיבורים נכנסים?". גישה זו קושרת את הרשאות התקשורת לחתימה הדיגיטלית (Code Signature) של האפליקציה, ומאפשרת למערכת לנהל חסימות ואישורים באופן אוטומטי עבור תוכנות מוכרות, מבלי להציק למשתמש בהתראות טכניות.
2. Deep Technical Architecture¶
ה-Application Layer Firewall פועל תחת התהליך socketfilterfw. כאשר תוכנה מבקשת להאזין לתקשורת נכנסת (Listen to an incoming connection), מנגנון ה-ALF יבדוק את החתימה הדיגיטלית שלה (Code Signature). אם התוכנה חתומה כדין על ידי מפתח מורשה של אפל (והאפשרות "Automatically allow downloaded signed software to receive incoming connections" מסומנת), התהליך socketfilterfw יוסיף אותה לרשימת ההיתרים באופן שקט.
אם החתימה שבורה או שהתוכנה לא חתומה, קופצת התראת TCC המבקשת אישור מהמשתמש (Admin).
בנוסף, ה-Firewall כולל מצב "Stealth Mode", אשר מנחה את הקרנל להתעלם לחלוטין מבקשות סריקה כגון ICMP Echo Requests (פינגים) ובקשות TCP שאינן מורשות, מבלי להחזיר אפילו הודעת סירוב (RST) – כך שהמק נראה כ"בלתי נראה" ברשת. ראוי לציין שיש למק גם מנוע Packet Filter (pf) ברמת הקרנל עבור חוקים מתקדמים, אך ה-GUI שולט רק ב-ALF.
3. Terminal Commands, Plists & Logs¶
- מסוף הפקודות (Terminal) Commands:
/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate(בדיקה האם ה-ALF מופעל)./usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on(הפעלת מצב Stealth מהטרמינל).-
/usr/libexec/ApplicationFirewall/socketfilterfw --listapps(רשימת כל האפליקציות והרשאות ה-Firewall שלהן). -
Plists:
-
תצורת ה-Firewall נשמרת בנתיב:
/Library/Preferences/com.apple.alf.plist -
Logs:
- פעולות וחסימות מתועדות בלוג הייעודי:
/var/log/appfirewall.log - או דרך ה-Unified Logging System:
log show --predicate 'subsystem == "com.apple.alf"'
4. Edge Cases & Troubleshooting¶
תקלה קלאסית מתרחשת כאשר מפתחים מעדכנים אפליקציה באופן לא תקני והחתימה הדיגיטלית שלה משתבשת (Code Signature invalidation). במקרה כזה, גם אם האפליקציה נמצאת ברשימת המורשים של ה-Firewall, המערכת תזהה שמדובר ב"מתחזה" ותחסום את התקשורת הנכנסת שלה, או שתקפיץ למשתמש בקשת אישור בכל פעם מחדש שהתוכנה נפתחת. במקרים אלו, מחיקת האפליקציה מרשימת ה-Firewall והוספתה מחדש לרוב לא תעזור עד שהחתימה תתוקן.
במקרה של שחיתות כללית ברשימת ה-ALF שבה החוקים לא נאכפים, הפתרון הקיצוני הוא כיבוי ה-Firewall, מחיקת הקובץ com.apple.alf.plist, הפעלה מחדש של המק והדלקת ה-Firewall לקביעת תצורה נקייה.
4. תיבול ארגוני: אבחון פרופילי Wi-Fi מסוג 802.1X ארגוני וחיבורי VPN פרוקסי פרוסים מרחוק¶
1. High-Level Theory & History¶
בסביבה הארגונית (Enterprise), רשתות ה-Wi-Fi והגישה הפנימית מאובטחות בצורה מחמירה בהרבה מרשת ביתית של סיסמה אחת (WPA2 Personal). ארגונים משתמשים בפרוטוקול 802.1X (כגון PEAP או EAP-TLS) הדורש מכל מחשב להזדהות באמצעות שם משתמש וסיסמה אישיים, או באמצעות תעודה דיגיטלית (Certificate) המושתלת במחשב.
כדי למנוע טעויות הקלדה ולפשט את התהליך, מנהלי IT אינם מצפים מהעובד להגדיר זאת ידנית, אלא משתמשים ב-MDM כדי לדחוף Configuration Profile (פרופיל תצורה) המכיל Payload עם הגדרות ה-Wi-Fi, התעודות הארגוניות, ואף הגדרות VPN ו-Proxy אוטומטיות לסינון תעבורה.
2. Deep Technical Architecture¶
תהליך ההזדהות הארגוני 802.1X מנוהל ב-macOS על ידי תהליך שנקרא eapolclient. התהליך מבצע משא ומתן (Handshake) מול הראוטר המקומי ומול שרת ה-RADIUS הארגוני. אם התהליך מוגדר ל-EAP-TLS (הזדהות מבוססת תעודה), ה-eapolclient חייב לגשת אל מערכת מחזיק המפתחות (Keychain) של macOS כדי לקרוא את ה-Identity Certificate הרלוונטי שהושתל על ידי ה-MDM.
כאשר Configuration Profile מסוג Wi-Fi או VPN מופץ דרך MDM, ההגדרות ננעלות (Managed) במערכת. המשתמש מאבד את ההרשאה לשנות את ההגדרות הללו ואף כפתור "Forget This Network" מנוטרל או נעלם מהממשק הגרפי, כדי למנוע מהעובד לנתק עצמו משוגג מהרשת הארגונית המסופקת כפרופיל.
חיבורי VPN מודרניים (כמו GlobalProtect או Cisco) עברו ל-System Extensions. הם מבוססים על Network Extension framework (במקום IPSec ישן). ה-MDM מתקין Payload מסוג VPN/App-Proxy, שלרוב חוסם מהמשתמש את היכולת להתנתק ידנית דרך הממשק.
3. Terminal Commands, Plists & Logs¶
- מסוף הפקודות (Terminal) Commands:
profiles list(הצגת כל פרופילי התצורה והפיילודים המותקנים המכתיבים מדיניות רשת).security find-identity -p macos -v(בדיקת התעודות הדיגיטליות החוקיות המותקנות ב-Keychain למטרות 802.1X).-
networksetup -setwebproxy "Wi-Fi" proxy.company.com 8080(דוגמה להגדרת פרוקסי ידנית אם נדרש עוקף אבחוני). -
Plists:
-
N/A (הגדרות רשת מנוהלות יושבות בתוך ה-MDM database ולא בקבצי plist סטנדרטיים של משתמש).
-
Logs:
log show --predicate 'process == "eapolclient"' --debug(צפייה בזמן אמת בתהליך לחיצת היד הארגונית והבנת מדוע השרת דחה את החיבור).
4. Edge Cases & Troubleshooting¶
בעיה ארגונית שכיחה ביותר בהתחברות ל-802.1X מבוסס EAP-TLS היא תוקף תעודות. אם התעודה הדיגיטלית (Identity) פגת תוקף, תהליך ה-eapolclient ייכשל וה-Wi-Fi לא יתחבר, לרוב מבלי לספק שגיאה ברורה למשתמש.
במקרים של PEAP (סיסמה ארגונית), בעיה נפוצה היא שהמשתמש משנה את סיסמת ה-Active Directory שלו בארגון, אך הסיסמה הישנה נשארת שמורה ב-Keychain עבור רשת ה-Wi-Fi, מה שגורם לנעילת החשבון שלו לאחר ניסיונות התחברות כושלים ברקע.
כיוון שהפרופיל מנוהל על ידי MDM, טכנאי IT לא יכול למחוק את הרשת ידנית במק במקרה של תקלה חמורה. דרך המלך לפתרון היא שליחת פקודת מחיקת פרופיל מה-MDM, אילוץ עדכון פוליסות, ודחיפת Payload חדש ומעודכן, או מחיקת הסיסמאות הרלוונטיות דרך אפליקציית Keychain Access כדי לאלץ קפיצת חלון הקלדת סיסמה מחדש.
💡 עזרים ויזואליים להרצאה (Presentation Visuals)¶
המחשה ויזואלית (עזר לתלמיד)
תמונות אלו ממחישות את הממשק או המנגנון הרלוונטי לנושא השיעור.
