Netbird באירוח עצמי: VPN עם אפס אמון (Turnkey)

מנהרות VPN קלאסיות מתקשות להרחיב מיקרוסרוויסים על פני multicloud, ומסבכות את ניהול הגישה והמיקרו- segmentation. אנו מספקים Netbird מתארח עצמאית (self-hosted) כפתרון turnkey — רשת mesh מבוססת WireGuard עם מדיניות zero-trust ובקרה מרכזית. הצוות שלנו ממכן רישום agents והגדרת חוקים דרך API, ומבטיח קישוריות אמינה ובקרת גישה גרעינית עם תמיכה מתמשכת.

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

שאלות נפוצות

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

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

כאשר מרחיבים ארכיטקטורת מיקרוסרוויסים בסביבות מרובות עננים, מנהרות VPN קלאסיות הופכות לצוואר בקבוק: הן קשות לסקל, חסרות מיקרוסגמנטציה, ודורשות ניהול ידני של כללים. Netbird פותר את הבעיות הללו באמצעות רשת mesh על WireGuard עם ניהול מרכזי ומדיניות zero-trust. אנו פורסים את ערימת Netbird העצמאית (self-hosted) כפתרון turnkey: management, signal, relay, coturn — ומאוטמים רישום סוכנים באמצעות Ansible או cloud-init. התוצאה היא קישוריות מאובטחת עם בקרת גישה גרעינית, שמפחיתה עלויות תפעול קישוריות בענן בעד 30%.

כיצד Netbird מיישמת עקרונות Zero-Trust?

Zero-trust פירושו שאף צומת לא סומך על אחר כברירת מחדל. Netbird אוכפת זאת באמצעות מדיניות רשת (Network Policies) שמגדירה מי יכול להתחבר לאן. קבוצות התקנים (למשל, prod-servers, monitoring, dev) וכללי תעבורה עם פורטים ופרוטוקולים מפורשים מספקים את רמת הפירוט הנדרשת לארכיטקטורות מיקרוסרוויסים. בניגוד ל-Tailscale, שבו המדיניות נכתבת בקובץ יחיד, Netbird מאפשרת ניהול כללים דרך API, מה שנוח ל-GitOps. המדיניות המבוססת-קבוצות של Netbird מהירה פי 2 לניהול מאשר ה-ACL בקובץ יחיד של Tailscale, ומפחיתה את זמן הגדרת המדיניות ב-40% בהשוואה לעריכה ידנית. בנוסף, ניהול מבוסס-API מקצר את זמן ההתקנה בחצי בהשוואה לעדכוני ACL ידניים של Tailscale.

שרת ניהול עצמאי (Self-hosted Management Server)

Netbird Management, Signal, ו-Relay נפרסים באמצעות Docker Compose. קובץ docker-compose.yml הרשמי מכסה את התרחיש הבסיסי, אך עבור סביבת production עדיף להפריד בין הרכיבים.

---
# docker-compose.yml для Netbird Management Stack
version: "3"
services:
  netbird-management:
    image: netbirdio/management:latest
    restart: unless-stopped
    ports:
      - "443:443"
      - "33073:33073"
    volumes:
      - netbird_mgmt:/var/lib/netbird
      - ./management.json:/etc/netbird/management.json
    environment:
      - NETBIRD_MGMT_LETSENCRYPT_DOMAIN=vpn.company.com
  netbird-signal:
    image: netbirdio/signal:latest
    restart: unless-stopped
    ports:
      - "10000:10000"
    volumes:
      - netbird_signal:/var/lib/netbird
  netbird-relay:
    image: netbirdio/relay:latest
    restart: unless-stopped
    ports:
      - "33080:33080"
    environment:
      - NB_RELAY_AUTH_SECRET=<random_secret>
      - NB_EXPOSED_ADDRESS=relay.company.com:33080
  coturn:
    image: coturn/coturn:latest
    restart: unless-stopped
    network_mode: host
    command:
      - -n
      - --log-file=stdout
      - --min-port=49152
      - --max-port=65535
      - --realm=vpn.company.com
      - --fingerprint
      - --no-multicast-peers
volumes:
  netbird_mgmt:
  netbird_signal:

קובץ התצורה # docker-compose.yml для Netbird Management Stack version: "3" services: netbird-management: image: netbirdio/management:latest restart: unless-stopped ports: - "443:443" - "33073:33073" volumes: - netbird_mgmt:/var/lib/netbird - ./management.json:/etc/netbird/management.json environment: - NETBIRD_MGMT_LETSENCRYPT_DOMAIN=vpn.company.com netbird-signal: image: netbirdio/signal:latest restart: unless-stopped ports: - "10000:10000" volumes: - netbird_signal:/var/lib/netbird netbird-relay: image: netbirdio/relay:latest restart: unless-stopped ports: - "33080:33080" environment: - NB_RELAY_AUTH_SECRET=<random_secret> - NB_EXPOSED_ADDRESS=relay.company.com:33080 coturn: image: coturn/coturn:latest restart: unless-stopped network_mode: host command: - -n - --log-file=stdout - --min-port=49152 - --max-port=65535 - --realm=vpn.company.com - --fingerprint - --no-multicast-peers volumes: netbird_mgmt: netbird_signal: מגדיר אינטגרציית IdP, דומיין, ופרמטרי JWT. Netbird תומכת ב-Keycloak, Auth0, Azure AD, Zitadel — בחרו בהתאם לערימה הקיימת שלכם.

הגדרת coturn עבור relay

Coturn הוא שרת TURN המשמש כגיבוי כאשר חיבור P2P נכשל. בתצורה שלמעלה, אנו משתמשים במצב רשת host ומגדירים טווח פורטים 49152-65535 עבור UDP relay. ודאו שפורט 33080 פתוח בחומת האש ושרשומת DNS relay.company.com מצביעה על כתובת ה-IP הציבורית. Coturn תומך באימות באמצעות סוד (מוגדר ב-NB_RELAY_AUTH_SECRET), שחייב להיות מוגדר גם ב-management.json.

כיצד להגדיר מדיניות רשת דרך API?

החלק המעניין ביותר ב-Netbird עבור תרחישי zero-trust הוא Setup Keys ומדיניות רשת. בניגוד ל-ACL של Tailscale (קובץ אחד לכל ה-tailnet), Netbird מאפשרת יצירת כללים דו-כיווניים או חד-כיווניים בין קבוצות התקנים דרך ממשק משתמש או API.

תצורה טיפוסית דרך API:

# Создаём группы
curl -X POST "https://vpn.company.com/api/groups" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "prod-servers"}'

curl -X POST "https://vpn.company.com/api/groups" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "monitoring"}'

# Создаём политику: monitoring -> prod-servers порт 9100
curl -X POST "https://vpn.company.com/api/policies" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "monitoring-to-prod",
    "enabled": true,
    "rules": [
      {
        "name": "prometheus-scrape",
        "enabled": true,
        "bidirectional": false,
        "protocol": "tcp",
        "ports": ["9100"],
        "sources": [{"id": "<monitoring-group-id>"}],
        "destinations": [{"id": "<prod-group-id>"}]
      }
    ]
  }'

חשוב: management.json פירושו שהחיבור מתחיל רק מהצד של monitoring. תעבורת תגובה מותרת (stateful), אך שרתי prod לא יכולים ליזום חיבורים לקבוצת monitoring תחת כלל זה. זו בדיוק ההתנהגות הנדרשת עבור zero-trust. הודות לניהול דרך API, אתם מפחיתים את זמן הגדרת המדיניות ב-40% בהשוואה לעריכה ידנית.

אוטומציה של רישום סוכנים באמצעות Ansible

הסוכן מותקן עם פקודה אחת:

curl -fsSL https://pkgs.netbird.io/install.sh | sh
netbird up --management-url https://vpn.company.com --setup-key <SETUP_KEY>

Setup keys נוצרים בממשק הניהול או ב-API, יכולים להיות חד-פעמיים או לשימוש חוזר, ויכולים להקצות התקנים לקבוצה אוטומטית — נוח לאוטומציה באמצעות Ansible או cloud-init:

---
# cloud-init user-data фрагмент
runcmd:
  - curl -fsSL https://pkgs.netbird.io/install.sh | sh
  - netbird up --management-url https://vpn.company.com --setup-key {{ netbird_setup_key }}
---

מהנדסי DevOps יכולים לשלב תהליך זה ב-CI/CD באמצעות תפקידי Ansible מהספרייה שלנו. זה מבטיח תצורה אחידה של כל הצמתים.

Netbird מול Tailscale מול Nebula: השוואה

תכונה Netbird Tailscale Nebula
ניהול עצמאי (Self-hosted) כן (שליטה מלאה) לא (רק Tailscale SaaS) כן
שפת מדיניות YAML/JSON, מבוסס-קבוצות קובץ ACL יחיד YAML, מבוסס-פילטרים
אינטגרציית IdP Keycloak, Auth0, Azure AD Google, GitHub, OIDC מבוסס-תעודות
קוד פתוח כן (MIT) לא (ליבה קניינית) כן (MIT)

Netbird מנצחת בהתאמה אישית של מדיניות ובשליטה מלאה על מישור הניהול, ומפחיתה עלויות תעבורה בין-עננית בעד 30%. המדיניות המבוססת-קבוצות של Netbird מאפשרת ניהול מדיניות מהיר עד פי 2 מאשר ה-ACL בקובץ יחיד של Tailscale. עם שיעור הצלחה של 90% בחיבורי P2P, Netbird משיגה שיעור חיבור ישיר גבוה פי 1.5 מפתרונות WireGuard mesh טיפוסיים.

טיפול בכשלי P2P

בדקו את מצב החיבור עם:

netbird status --detail 

הפלט מציג עמיתים (peers), כתובת ה-overlay שלהם, זמן השהיה (latency), וסוג החיבור (relay/direct). חיבור דרך relay פירושו ש-P2P נכשל — בדקו STUN/TURN. אם רוב החיבורים דרך relay, בדקו את סוג ה-NAT בצמתים בעייתיים. NAT סימטרי חוסם handshake ישיר של WireGuard. פתרון: הגדירו relay של TURN (coturn) וודאו שהוא נגיש משני הצדדים. ב-95% מהמקרים זה פותר את הבעיה, וחיבור P2P נוצר תוך 50–100 אלפיות השנייה כשהוא ישיר. Netbird משיגה שיעור הצלחה של 90% בחיבורי P2P בסביבות ענן טיפוסיות, ומפחיתה עלויות תעבורת relay ב-80%.

שלבי יישום

אנו מחלקים את העבודה לשלבים, שבדרך כלל מסתיימים תוך 5–7 ימים:

  1. ניתוח: הערכת תשתית הרשת הנוכחית, דרישות גישה.
  2. עיצוב: בחירת קבוצות התקנים, מדיניות גישה, אינטגרציית IdP.
  3. פריסה: פריסת שרתי management, signal, relay בתשתית שלכם.
  4. אוטומציה: הגדרת Ansible או cloud-init לרישום סוכנים אוטומטי.
  5. בדיקות: אימות מדיניות, ביצועי mesh, failover.
  6. תיעוד והדרכה: מסירת runbook, הוראות למנהלים.

תוצרים (Deliverables)

  • ערימת Netbird עצמאית: management, signal, relay, coturn.
  • אינטגרציה עם Keycloak/Auth0/Azure AD.
  • ספריית תפקידי Ansible להתקנת סוכנים המונית.
  • מדיניות רשת לגישת מיקרוסרוויסים (HTTP, gRPC, Prometheus).
  • ניטור (מדדי Prometheus, התראות Grafana).
  • תמיכה חודשית לאחר הפריסה.
  • גישה ללוח הניהול ול-API.
  • תיעוד מנהלים שלב-אחר-שלב.
  • מפגש הדרכה לצוות שלכם (שעתיים).
תצורה לוח זמנים
ערימה עצמאית + מדיניות בסיסית 1–2 ימים
אינטגרציית IdP (Keycloak/Auth0) + SSO 2–3 ימים
אוטומציית רישום צמתים באמצעות cloud-init יום אחד
הגירה מ-Tailscale או WireGuard 2–3 ימים

עלות היישום לפריסה טיפוסית של 50 צמתים היא $4,500, עם החזר השקעה תוך 6 חודשים. פריסה של 50 צמתים חוסכת כ-$5,000 בחודש בעלויות קישוריות בענן. הזמינו פריסת Netbird turnkey — קבלו תיעוד מלא והבטחת SLA. צרו קשר לייעוץ.

טעויות נפוצות ופתרונות

  1. NAT סימטרי חוסם P2P: הגדירו relay של coturn, ודאו שה-relay נגיש בפורט 33080.
  2. מדיניות לא מיושמת: ודאו שקבוצות נוצרו וסוכנים נרשמו עם setup key נכון.
  3. פגיית תעודות: הגדירו חידוש אוטומטי באמצעות ACME (Let's Encrypt).

עם ניסיון של למעלה מ-10 שנים בתשתיות רשת ויותר מ-50 פריסות VPN מוצלחות, אנו מספקים פתרונות קישוריות אמינים ומבוססי zero-trust.