נתקלנו פעמים רבות במצבים שבהם משתמשים ארגוניים לא יכלו להתחבר ל-VPN בגלל היעדר תוכנת לקוח במחשבים הניידים שלהם. פעם אחת נאלצנו להגדיר גישה מרחוק לחברה עם 300 עובדים, שבה כל משתמש שלישי עבד על macOS. IKEv2 פותר בעיה זו: לקוחות מקוריים ב-Windows, macOS, iOS ו-Android תומכים בו כברירת מחדל — ללא צורך בתוכנה נוספת. אנו מגדירים את StrongSwan, מימוש בוגר של IKEv2 עבור Linux, עם תמיכה מלאה באימות EAP ושילוב עם LDAP ארגוני. להלן נסקור את התצורה, בעיות טיפוסיות ותהליך היישום, שנמשך מיום אחד.
למה StrongSwan (IKEv2) עדיף על OpenVPN ו-WireGuard?
| קריטריון | StrongSwan (IKEv2) | OpenVPN | WireGuard |
|---|---|---|---|
| לקוחות מקוריים | Windows, macOS, iOS, Android | רק צד שלישי | מובנה ב-Linux, iOS/Android דרך אפליקציה |
| ביצועים | גבוהים (האצת AES בחומרה) | בינוניים | גבוהים מאוד |
| אימות | EAP-MSCHAPv2, תעודות, RADIUS, LDAP | תעודות, שם משתמש/סיסמה | מפתח משותף |
| מורכבות הגדרה | בינונית (דורש PKI) | גבוהה (OpenSSL) | נמוכה |
לגישה מרחוק ארגונית עם מאות משתמשים, StrongSwan נוח יותר: אין צורך בהתקנת לקוח, וניתן לרכז אימות דרך RADIUS ו-LDAP. זה מפחית עומס על צוות התמיכה — משתמשים מתחברים בעצמם ללא מעורבות מנהל.
הגדרת StrongSwan שלב אחר שלב: 4 שלבים
שלב 1. התקנה ויצירת תעודות
התקינו את StrongSwan וכלי PKI, ולאחר מכן צרו CA פרטי ותעודת שרת. ה-CN של תעודת השרת חייב להתאים ל-FQDN הציבורי או ל-IP של השרת.
apt install strongswan strongswan-pki libcharon-extra-plugins
# CA
pki --gen --type rsa --size 4096 --outform pem > /etc/ipsec.d/private/ca.key
pki --self --ca --lifetime 3650 --in /etc/ipsec.d/private/ca.key \
--dn "CN=VPN CA, O=Example Corp" \
--outform pem > /etc/ipsec.d/cacerts/ca.crt
# Сертификат сервера (с флагами serverAuth и ikeIntermediate)
pki --gen --type rsa --size 2048 --outform pem > /etc/ipsec.d/private/server.key
pki --pub --in /etc/ipsec.d/private/server.key | \
pki --issue --lifetime 730 \
--cacert /etc/ipsec.d/cacerts/ca.crt \
--cakey /etc/ipsec.d/private/ca.key \
--dn "CN=vpn.example.com" \
--san vpn.example.com \
--flag serverAuth \
--flag ikeIntermediate \
--outform pem > /etc/ipsec.d/certs/server.crt
שלב 2. תצורה באמצעות swanctl
מאז StrongSwan 5.7+, השתמשו ב-apt install strongswan strongswan-pki libcharon-extra-plugins # CA pki --gen --type rsa --size 4096 --outform pem > /etc/ipsec.d/private/ca.key pki --self --ca --lifetime 3650 --in /etc/ipsec.d/private/ca.key \ --dn "CN=VPN CA, O=Example Corp" \ --outform pem > /etc/ipsec.d/cacerts/ca.crt # Сертификат сервера (с флагами serverAuth и ikeIntermediate) pki --gen --type rsa --size 2048 --outform pem > /etc/ipsec.d/private/server.key pki --pub --in /etc/ipsec.d/private/server.key | \ pki --issue --lifetime 730 \ --cacert /etc/ipsec.d/cacerts/ca.crt \ --cakey /etc/ipsec.d/private/ca.key \ --dn "CN=vpn.example.com" \ --san vpn.example.com \ --flag serverAuth \ --flag ikeIntermediate \ --outform pem > /etc/ipsec.d/certs/server.crt . דוגמה עם EAP-MSCHAPv2 ומאגר כתובות ל-250 לקוחות:
# /etc/swanctl/swanctl.conf
authorities {
vpn-ca {
cacert = ca.crt
}
}
connections {
ikev2-eap {
version = 2
proposals = aes256gcm16-sha256-ecp256,aes256-sha256-modp2048
local_addrs = %any
remote_addrs = %any
local {
auth = pubkey;
certs = server.crt;
id = vpn.example.com
}
remote {
auth = eap-mschapv2;
eap_id = %any
}
children {
ikev2-eap {
local_ts = 0.0.0.0/0
remote_ts = dynamic
dpd_action = clear
esp_proposals = aes256gcm16-sha256,aes256-sha256
}
}
pools = vpn-pool
dpd_delay = 30s
send_cert = always
}
}
pools {
vpn-pool {
addrs = 10.20.0.0/24;
dns = 10.0.0.1, 8.8.8.8
}
}
secrets {
eap-user1 {
id = user1;
secret = "UserPassword123"
}
eap-user2 {
id = user2;
secret = "AnotherPassword"
}
}טעינת תצורה ללא הפעלה מחדש: swanctl.conf.
שלב 3. חומת אש והעברת IP
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p esp -j ACCEPT
iptables -A FORWARD -s 10.20.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.20.0.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.20.0.0/24 -o ens3 -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1אל תשכחו לשמור את הכללים: # /etc/swanctl/swanctl.conf authorities { vpn-ca { cacert = ca.crt } } connections { ikev2-eap { version = 2 proposals = aes256gcm16-sha256-ecp256,aes256-sha256-modp2048 local_addrs = %any remote_addrs = %any local { auth = pubkey; certs = server.crt; id = vpn.example.com } remote { auth = eap-mschapv2; eap_id = %any } children { ikev2-eap { local_ts = 0.0.0.0/0 remote_ts = dynamic dpd_action = clear esp_proposals = aes256gcm16-sha256,aes256-sha256 } } pools = vpn-pool dpd_delay = 30s send_cert = always } } pools { vpn-pool { addrs = 10.20.0.0/24; dns = 10.0.0.1, 8.8.8.8 } } secrets { eap-user1 { id = user1; secret = "UserPassword123" } eap-user2 { id = user2; secret = "AnotherPassword" } } . StrongSwan מטפל ב-NAT-T כראוי, וזה חשוב ללקוחות מאחורי NAT.
שלב 4. אימות דרך LDAP/RADIUS
לתשתיות גדולות (500+ משתמשים), חברו את FreeRADIUS עם backend של LDAP:
# /etc/strongswan.d/charon/eap-radius.conf
eap-radius {
servers {
primary {
address = 10.0.0.5;
secret = radius_shared_secret
}
}
}בחיבור, שנו את swanctl --load-all. כל המשתמשים מאמתים דרך ספרייה מרכזית — AD או OpenLDAP.
איך לשלב את StrongSwan עם Active Directory?
השילוב עם Active Directory נעשה דרך פרוקסי RADIUS, כפי שמוצג בשלב 4. FreeRADIUS שואל את LDAP (AD) ומחזיר את התוצאה ל-StrongSwan. בנוסף, ניתן להגדיר הנפקת תעודות אוטומטית דרך Microsoft NDES או CA משלכם עם מדיניות קבוצתית. זה מאפשר למשתמשים להתחבר ללא הזנת סיסמה — רק באמצעות תעודה שהונפקה על ידי ה-CA הארגוני.
איך להגדיר לקוחות מקוריים?
Windows 10/11: הגדרות → VPN → הוספת חיבור VPN → IKEv2. סוג התחברות: שם משתמש וסיסמה. לפני כן, ייבאו את ca.crt לחנות 'רשויות אישורים מהימנות' (certmgr.msc).
macOS/iOS: הגדרות → VPN → IKEv2. התקינו את תעודת ה-CA דרך פרופיל (Apple Configurator או ידנית).
Android: IKEv2 מקורי (Android 11+) או אפליקציית StrongSwan.
אילו שגיאות טיפוסיות מתרחשות בהגדרת IKEv2?
הנפוצה ביותר היא ש-Windows לא מתחבר. יומני ניהול משא ומתן מפורטים עוזרים למצוא במהירות את הגורם:
swanctl --log journalctl -u strongswan -f כמעט תמיד הסיבה: בתעודת השרת חסר iptables -A INPUT -p udp --dport 500 -j ACCEPT iptables -A INPUT -p udp --dport 4500 -j ACCEPT iptables -A INPUT -p esp -j ACCEPT iptables -A FORWARD -s 10.20.0.0/24 -j ACCEPT iptables -A FORWARD -d 10.20.0.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -s 10.20.0.0/24 -o ens3 -j MASQUERADE sysctl -w net.ipv4.ip_forward=1 ב-Extended Key Usage, או שה-CA השורשי אינו מהימן בלקוח. בדקו את השרשרת וייבאו מחדש את ca.crt. השנייה בשכיחות היא אי-התאמה בין מזהה השרת (CN או SAN) לכתובת שהוזנה על ידי הלקוח. השלישית היא חסימת יציאות UDP 500 ו-4500 על ידי חומת האש. זמן האבחון אינו עולה על 30 דקות.
מה כלול?
- שרת StrongSwan מוגדר עם תעודות ומאגר משתמשים
- כללי חומת אש וסקריפטים לאוטומציה
- הוראות לחיבור לקוחות מקוריים (Windows, macOS, iOS, Android)
- שילוב עם LDAP/RADIUS (אופציונלי)
- בדיקות והעברת תיעוד
ניטור חיבורים פעילים
לניטור מספר הפגישות המקבילות, ניתן להשתמש במדדי Prometheus דרך StrongSwan IPsec pki. האקספורטר אוסף נתונים על מצבי מנהרות ועומס CPU. אנו מבטיחים שאחרי ההגדרה, תהיה לכם תצוגה שקופה של החיבורים.
לוחות זמנים ועלות
| שלב | לוח זמנים |
|---|---|
| פריסת שרת + PKI + בדיקה עם לקוחות מקוריים | מיום אחד |
| שילוב LDAP/RADIUS | +0.5–1 יום |
| פרופילי MDM למכשירים ארגוניים | +0.5 יום |
העלות מחושבת באופן אישי לאחר ביקורת תשתית. הזמינו הגדרת VPN — קבלו פתרון מוכן תוך 1-2 ימים. קבלו ייעוץ ממהנדס בנושא הגדרת StrongSwan. צרו קשר: נעריך את הפרויקט שלכם תוך יום אחד. היישום משתלם על ידי הפחתת עלויות תמיכה ביישומי לקוח ופישוט תהליך קליטת עובדים חדשים.







