הגדרת ממשקי רשת בלינוקס (Netplan/NetworkManager)

אובדן גישה לשרת לאחר שינוי הגדרות רשת הוא כאב מוכר לכל מהנדס DevOps. אנחנו מגדירים ממשקי רשת של Linux במתכונת turnkey, ופותרים קונפליקטים בין Netplan, NetworkManager ו-systemd-networkd. הצוות שלנו מטפל במחזור המלא—מביקורת התצורה הנוכחית ועד ליישום ותמיכה שוטפת, תוך הבטחת פעילות יציבה של התשתית שלכם.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

אחד התקלות הנפוצות ביותר ב-DevOps הוא אובדן גישה לשרת מרוחק לאחר עריכת הגדרות רשת. ב-90% מהמקרים, הסיבה היא קונפליקט בין עריכה ידנית של /etc/network/interfaces לבין תצורת Netplan שנוצרה אוטומטית. לדוגמה, מהנדס מוסיף כתובת IP סטטית באמצעות כלים legacy, ולאחר netplan apply התצורה מתאפסת—SSH נופל. נראה כיצד להימנע מכך ונספק תצורות עובדות לתרחישים מרכזיים: IP סטטי, bonding, VLAN, Jumbo Frames. הניסיון שלנו כולל למעלה מ-80 פרויקטים של הגדרת תשתית רשת לקמעונאות, פינטק ולוגיסטיקה, מה שהפחית תקלות ב-30% וחסך עד $450–650 לשרת בשנה.

אילו בעיות אנחנו פותרים?

נפרק שלוש בעיות אופייניות שנתקלים בהן בעת הגדרת רשת בלינוקס.

קונפליקט בין Netplan ל-NetworkManager

באובונטו, Netplan מנהל את התצורה כברירת מחדל, אבל אם עורכים ידנית קבצים ב-/etc/network/interfaces או /etc/NetworkManager/system-connections/, שינויים עלולים ללכת לאיבוד ב-netplan apply הבא. זו הסיבה הנפוצה ביותר לניתוקי SSH פתאומיים—כ-60% מהתקלות בניסיון שלנו.

MTU שגוי

הגדרת Jumbo Frames ללא תיאום עם ציוד הרשת מובילה לפיצול מנות ולירידת ביצועים של עד 40%. ראינו מקרים שבהם חוסר התאמת MTU בין צמתים גרם לכשל בתעבורת NFS ו-iSCSI.

מורכבות עם bonding ו-VLAN

הגדרת איגוד ערוצים (bonding) דורשת בחירה מדויקת של מצב (active-backup, LACP, balance-xor) והתחשבות בתמיכת המתג. מצב שגוי יוצר חוסר יציבות במקום failover. מעבר מ-ifupdown ל-Netplan חוסך עד 30% מזמן תחזוקת הרשת.

כיצד אנו מגדירים ממשקי רשת

Netplan: YAML על גבי NetworkManager או systemd-networkd

Netplan הוא שכבת הפשטה שמייצרת תצורה עבור NetworkManager או systemd-networkd. בשרתים אנו משתמשים בדרך כלל ב-systemd-networkd כ-backend; במחשבים שולחניים, ב-NetworkManager. תיעוד Netplan מסביר: "Netplan משתמש ב-YAML כדי להגדיר ממשקי רשת ומייצר את התצורה הנדרשת עבור ה-backend הנבחר."

IP סטטי באובונטו:

---
# /etc/netplan/00-installer-config.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses:
        - 10.0.1.100/24
      routes:
        - to: default
          via: 10.0.1.1
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]
        search: [company.internal]
      dhcp4: false
# Проверить синтаксис netplan generate # Применить с откатом (120 секунд) netplan try # Без отката netplan apply 

Bonding (איגוד קישורים) באמצעות Netplan:

---
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0: {}
    eth1: {}
  bonds:
    bond0:
      interfaces: [eth0, eth1]
      addresses: [10.0.1.100/24]
      routes:
        - to: default
          via: 10.0.1.1
      parameters:
        mode: active-backup # или 802.3ad для LACP
        mii-monitor-interval: 100

NetworkManager: nmcli למשימות שרת

ב-RHEL/Rocky/CentOS, NetworkManager הוא הכלי הראשי. # /etc/netplan/00-installer-config.yaml network: version: 2 renderer: networkd ethernets: eth0: addresses: - 10.0.1.100/24 routes: - to: default via: 10.0.1.1 nameservers: addresses: [1.1.1.1, 8.8.8.8] search: [company.internal] dhcp4: false נוח יותר מעריכה ידנית של קבצים:

# Список интерфейсов
nmcli device status
# Статический IP
nmcli connection modify "Wired connection 1" \
    ipv4.method manual \
    ipv4.addresses "10.0.1.100/24" \
    ipv4.gateway "10.0.1.1" \
    ipv4.dns "1.1.1.1,8.8.8.8"
nmcli connection up "Wired connection 1"
# VLAN
nmcli connection add type vlan \
    con-name vlan100 \
    dev eth0 \
    id 100 \
    ipv4.method manual \
    ipv4.addresses "192.168.100.10/24"

systemd-networkd: לשרתים ללא NetworkManager

אפשרות מינימליסטית—systemd-networkd ללא NetworkManager. בשימוש בהפצות קונטיינרים ושרתים:

# /etc/systemd/network/20-wired.network
[Match]
Name=eth0

[Network]
Address=10.0.1.100/24
Gateway=10.0.1.1
DNS=1.1.1.1
DNS=8.8.8.8
Domains=company.internal

[Link]
MTUBytes=9000
systemctl enable systemd-networkd systemctl start systemd-networkd networkctl status eth0 

MTU 9000 (Jumbo Frames) יעיל רק כאשר הוא מופעל במתגים. MTU סטנדרטי הוא 1500; הגדלה ל-9000 מפחיתה עומס CPU בעד 20% להעברות קבצים גדולות.

השוואת כלי ניהול רשת

כלי תחום שימוש תכונות
Netplan Ubuntu, Debian (תיאור YAML) מייצר תצורות עבור NetworkManager או systemd-networkd
NetworkManager RHEL/CentOS/Rocky, מחשבים שולחניים תומך בממשקים דינמיים, VPN, רשתות סלולריות
systemd-networkd שרתים, קונטיינרים קל משקל, מינימליסטי, ללא תלות מיותרת

מצבי bonding: השוואה

מצב סובלנות לתקלות תפוקה דרישות מתג
active-backup ✅ קישור יחיד כל מתג
802.3ad (LACP) ✅ מצטבר תמיכת LACP
balance-xor ✅ מצטבר ללא LACP כל מתג, אך ללא הבטחת איזון

למה Netplan עדיף על ifupdown

# Проверить синтаксис netplan generate # Применить с откатом (120 секунд) netplan try # Без отката netplan apply (כלי network: version: 2 renderer: networkd ethernets: eth0: {} eth1: {} bonds: bond0: interfaces: [eth0, eth1] addresses: [10.0.1.100/24] routes: - to: default via: 10.0.1.1 parameters: mode: active-backup # или 802.3ad для LACP mii-monitor-interval: 100 /nmcli) מיושן ואינו תומך בתרחישים מודרניים: bonding, VLAN, גשרים. Netplan מתאר הכל בקובץ YAML אחד, קל לקריאה ולניהול גרסאות. יתרה מכך, # Список интерфейсов nmcli device status # Статический IP nmcli connection modify "Wired connection 1" \ ipv4.method manual \ ipv4.addresses "10.0.1.100/24" \ ipv4.gateway "10.0.1.1" \ ipv4.dns "1.1.1.1,8.8.8.8" nmcli connection up "Wired connection 1" # VLAN nmcli connection add type vlan \ con-name vlan100 \ dev eth0 \ id 100 \ ipv4.method manual \ ipv4.addresses "192.168.100.10/24" מונע אובדן גישה לשרתים מרוחקים—תכונה ש-ifupdown חסרה. עלות המעבר מ-ifupdown ל-Netplan מתחילה ב-$45–65 לשרת ומחזירה את עצמה דרך הפחתת תקלות.

כיצד להימנע מקונפליקטים בין NetworkManager ל-systemd-networkd?

הרצת שני הדמונים בו-זמנית עלולה לגרום לנתיבים כפולים ולתקלות. אנו ממליצים לבחור backend אחד: לשרתים—systemd-networkd (השבתת NetworkManager), לתחנות עבודה—NetworkManager (השבתת systemd-networkd). ב-Netplan, הגדר # /etc/systemd/network/20-wired.network [Match] Name=eth0 [Network] Address=10.0.1.100/24 Gateway=10.0.1.1 DNS=1.1.1.1 DNS=8.8.8.8 Domains=company.internal [Link] MTUBytes=9000 או systemctl enable systemd-networkd systemctl start systemd-networkd networkctl status eth0 בהתאם.

הגדרת IP סטטי שלב אחר שלב באמצעות Netplan

  1. ערוך את הקובץ ifupdown.
  2. הגדר את הפרמטרים הרצויים (דוגמה למעלה).
  3. הרץ ifup כדי לאמת את התחביר.
  4. החל עם ifdown—אם מתרחשת שגיאה, החיבור מתגלגל לאחור אוטומטית לאחר 120 שניות.
  5. אם הכל עובד, אשר עם netplan try.

מה כלול בעבודה?

הגדרת ממשקי רשת היא חלק ממשימות גדולות יותר. החבילה הסטנדרטית כוללת:

  • ביקורת תצורה נוכחית: בדיקת MTU, מצבי bonding, DNS, ניתוב.
  • תכנון סכמה חדשה: התחשבות בטופולוגיה, דרישות סובלנות לתקלות וביצועים.
  • יישום: כתיבת תצורות, החלתן באמצעות renderer: networkd או renderer: NetworkManager, בדיקות.
  • תיעוד: תיעוד התצורה הסופית, הוראות לצוות הכוננות (runbook).
  • תמיכה: ניטור רשת 24/7 (אופציונלי) ותגובה לתקלות.

אימות לאחר הגדרת התצורה

לאחר החלת התצורה, הרץ /etc/netplan/00-installer-config.yaml, netplan generate ו-netplan try. אם ping נכשל, בדוק MTU ושער. זמן ממוצע להגדרת ממשק אחד הוא 30 דקות, כולל בדיקות.

לוחות זמנים ועלות

לוחות זמנים: משעתיים ל-IP סטטי פשוט ועד 1-2 ימים ל-bonding + VLAN + jumbo frames עם בדיקות עומס. העלות מחושבת באופן אישי—צור קשר להערכת פרויקט. למהנדסים שלנו יש הסמכות לינוקס (RHCE, LPIC) וניסיון של למעלה מ-10 שנים. בשנים האחרונות השלמנו למעלה מ-80 פרויקטים של תשתית רשת.

קבל ייעוץ: נעזור לך לבחור את המחסנית האופטימלית ולהגדיר את הרשת שלך ללא תקלות. הזמן הגדרת רשת turnkey.