קונפיגורציות מעניינות של EdgeRouter

פורום רשתות, IT ומחשוב כללי - רשתות, ראוטרים, מחשבים ניידים, אביזרים וכו'.
eran405 (פותח השרשור)
אחראי תחום רשתות
אחראי תחום רשתות
הודעות: 3388
הצטרף: פברואר 2012
נתן תודות: 380 פעמים
קיבל תודות: 790 פעמים

קונפיגורציות מעניינות של EdgeRouter

נושא שלא נקרא #1 

בתקווה אני לא היחיד שמתלהב מה-EdgeRouters של Ubiquiti.

אני פותח שירשור לשיתוף הגדרות לא טריוויאליות או לא ברורות שיכולות לעניין גם אחרים. אפילו הגדרה בסיסית בראוטרים ביתיים של DMZ לא כזו טריוויאלית ב-edgerouter.

אתחיל את השירשור בכמה נושאים שימושיים לדעתי ובהגדרות שרת VPN שאני כרגע משתמש. אני מנחש שהנושאים באופן כללי יכולים להיות רלוונטים לראוטרים מתקדמים אחרים כגון pfsense או openwrt אבל הקונפיגורציה עצמה לרב תהיה ספציפית ל-edgerouters.

אשמח לתגובות גם על הנושאים שאני מעלה וגם לנושאים אחרים שלדעתכם מעניינים.

eran405 (פותח השרשור)
אחראי תחום רשתות
אחראי תחום רשתות
הודעות: 3388
הצטרף: פברואר 2012
נתן תודות: 380 פעמים
קיבל תודות: 790 פעמים

SSH public key authentication

נושא שלא נקרא #2 

כלי הניהול העיקרי של ה-edgerouter הוא ה-CLI אליו מגיעים דרך SSH אבל באמת צריך להקיש את הסיסמא 123456 כל פעם שרוצים להכנס ל-CLI וכל פעם שרוצים להעביר קובץ ב-scp? לא רק שאפשר בלי סיסמא, זה גם יותר מאובטח, תודות ל-public key authentication.

כהערת אגב אציין שאני מכיר כבר שנים את הנושא והשתמשתי בו למערכות אחרות ועדיין הצלחתי להיות חודשים עם ה-edgerouter בלי לקנפג את הדבר הבסיסי הזה, ממש לא ברור לי למה ואיך.

החלק העיקרי של הפעלת public key authentication הוא לייצר מפתח rsa של המכונה. זה בכלל לא קשור ל-edgerouter ותלוי בקליינט ssh שמשתמשים:

א. openssh - הקליינט שכרגיל מגיע בהתקנות של msys ,linux וכו'. אישית אני פשוט פותח חלון cmd וכותב ssh וזה עובד לי (מסתבר שאצלי זה מגיע מההתקנה של git).
בכל מקרה לייצר מפתח rsa משתמשים ב-ssh-keygen (אפשר גם בלי פרמטרים אבל אני משתמש ב):

קוד: בחירת הכל

C:\Windows>ssh-keygen -t rsa -b 4096 -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/User/.ssh/id_rsa):
Created directory '/c/Users/User/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/User/.ssh/id_rsa.
Your public key has been saved in /c/Users/User/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:gbfL4DL4/osENm44R+HLjyd2WQsFRfQBphYltSrn0Eo [email protected]
The key's randomart image is:
+---[RSA 4096]----+
|    o*O..        |
|    .= + .       |
|  . o.o +        |
| . + ... o       |
|  E +.. S        |
| B @...o .       |
|o O =+..o        |
| +o=++.          |
| ..==.o.         |
+----[SHA256]-----+
כעת נוצרו 2 קצבים בתיקיה C:\Users\User\.ssh: ה-id_rsa בעל המפתח הפרטי שפקודת ה-ssh תשתמש בו אוטומטית, וה-id_rsa.pub שבדוגמא הזו מכיל:

קוד: בחירת הכל

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCc4lvNfuobdNUyG4rMRtmGrqbt11HPDxnAC4tp9N
dmo7GPRSwSSdsFsRJMecJXyoyC310tRjAODo4YTrIt1IDYXR+GiKrzCWYwGPcJ/DQcy3rmkLyx6FB3Z
R7kHkqJQydLcMwU9W7X9OkRW+oS6giHHUlWewGvqcYZSPaa/V/lJthS/io/eXOv711QYERcxpM53ulg
YpFrQ4/95FhoHyZiO22tJ0tQun5joMHlPDhdEg09ryRYeTFwIylOiD3XoSMksFy6Igmz6CCYCoCUPTs
aQfAXSl/glEH2LkDKp3quyDouC5+2eCWakRWEeYpPePyMVIxpfqIgzpG0VSmtlkRwSt4HFw4eO0mM36
2orIKXwNi18k+fIL3MnSSjWZ/TlrCsTY0OQ+/Q6aZ9z27/REspcNOuNnXacD/o/J43Ugm4hHADQR8Tf
zEf9oi4DYYpphsON1hUEJmLdpfioRmmIBZLhSzKs6r3avEFRpaXrblfxvPi+tPGcnoHHJdc9BSa5c1Z
SZnH4r8qGa5qsSSx9tP55bumbz5bMpfE0MJEE6eKHmh/6ISjxn52Lzki2UyUhde+62AMs4JKDU69GCc
+WQie9Icj2xRJr9NmnaALwHHXwHXdqiVDnjEszihRSZuiCunvYKsiWa9oZJo41dkd1BumPaFQO4ReUt
nvAmyAZYTlcQ== [email protected]
(אני שובר לשורות כי אחרת מערכת הפורמים מציגה את זה מוזר, במציאות זה הכל שורה אחת).
המפתח עצמו, שאותו נצטרך בשלב הבא, הוא ה"מילה" השניה (כלומר מה-"AAAA" ועד ה-"==" כולל).

ב. putty - ראו הוראות לדוגמא כאן:
https://devops.profitbricks.com/tutoria ... n-windows/
שימו לב שאם לא שמרתם את החלק הפומבי של המפתח, תמיד אפשר לפתוח את המפתח הפרטי ב-puttygen ולקבל את המפתח הפומבי (הפוך כמובן שאי אפשר).


נשאר רק להוסיף את המפתח הפומבי למפתחות המאושרים ב-edgerouter:

קוד: בחירת הכל

set system login user eran authentication public-keys computer1 key AAAAB3NzaC
1yc2EAAAADAQABAAACAQCc4lvNfuobdNUyG4rMRtmGrqbt11HPDxnAC4tp9Ndmo7GPRSwSSdsFsRJMe
cJXyoyC310tRjAODo4YTrIt1IDYXR+GiKrzCWYwGPcJ/DQcy3rmkLyx6FB3ZR7kHkqJQydLcMwU9W7X
9OkRW+oS6giHHUlWewGvqcYZSPaa/V/lJthS/io/eXOv711QYERcxpM53ulgYpFrQ4/95FhoHyZiO22
tJ0tQun5joMHlPDhdEg09ryRYeTFwIylOiD3XoSMksFy6Igmz6CCYCoCUPTsaQfAXSl/glEH2LkDKp3
quyDouC5+2eCWakRWEeYpPePyMVIxpfqIgzpG0VSmtlkRwSt4HFw4eO0mM362orIKXwNi18k+fIL3Mn
SSjWZ/TlrCsTY0OQ+/Q6aZ9z27/REspcNOuNnXacD/o/J43Ugm4hHADQR8TfzEf9oi4DYYpphsON1hU
EJmLdpfioRmmIBZLhSzKs6r3avEFRpaXrblfxvPi+tPGcnoHHJdc9BSa5c1ZSZnH4r8qGa5qsSSx9tP
55bumbz5bMpfE0MJEE6eKHmh/6ISjxn52Lzki2UyUhde+62AMs4JKDU69GCc+WQie9Icj2xRJr9Nmna
ALwHHXwHXdqiVDnjEszihRSZuiCunvYKsiWa9oZJo41dkd1BumPaFQO4ReUtnvAmyAZYTlcQ==
set system login user eran authentication public-keys computer1 type ssh-rsa
(אני שובר לשורות כי אחרת מערכת הפורמים מציגה את זה מוזר, במציאות פקודת כל פקודת set היא שורה אחת).
לחילופין אפשר להשתמש בפקודת ה-loadkey ולהעלות את המפתח מקובץ, במקרה כזה הוא יקבל את השם שמופיע אחרי המפתח עצמו, [email protected] בדוגמא לעיל, כדאי לשנות את זה לשם המכונה לפני שמריצים loadkey או לעשות rename אחר כך.

כעת ה-login יתבצע ללא סיסמא ובצורה יותר מאובטחת. במידה ויש מספר מחשבים, לא להתעצל ולייצר ולהוסיף מפתח שונה לכל מכונה. ככה במידה ואחד המפתחות נחשף (נגיד המחשב נגנב) אז פשוט מוחקים אותו וזה לא משפיע על המפתחות של שאר המכונות.

כעת, בשביל באמת להריווח גם את האבטחה המוגברת, כדאי לבטל לגמרי את האופציה של כניסה עם סיסמא:

קוד: בחירת הכל

set service ssh disable-password-authentication
שימו לב שעדיין אפשר להיכנס לממשק ה-web עם סיסמא ודרכו לשנות הגדרות, כגון לבטל את ההגדרה הנ"ל ואז להיכנס ל-CLI עם סיסמא. אני פתחתי את ה-CLI להתחברות מרחוק (על פורט לא סטנדרטי) אבל את ממשק ה-web לא - לכן יותר חשוב לי לאבטח כמה שיותר את ה-CLI.
נערך לאחרונה על ידי eran405 ב 14/12/2020 22:22, נערך פעם 1 בסך הכל.

eran405 (פותח השרשור)
אחראי תחום רשתות
אחראי תחום רשתות
הודעות: 3388
הצטרף: פברואר 2012
נתן תודות: 380 פעמים
קיבל תודות: 790 פעמים

HTTPS Certificate

נושא שלא נקרא #3 

אז אתם גולשים לממשק ניהול של ה-edgerouter החדש שלכם ומקבל את פניכם המסך המרנין:

אז כן בשביל הגדרה ראשונית כדאי להוסיף exception ולהתקדם איכשהוא אבל בשלב מסוים כדאי להתקין סרטיפיקט אמיתי או self signed. אם יש לכם סרטיפיקט אמיתי (בלי מרכאות) מצוין, ראו בהמשך איך להתקין אותו (זה מאד פשוט).

אם אין סרטיפיקט אמיתי אפשר להסתפק באחד self signed:
https://deliciousbrains.com/ssl-certifi ... velopment/
(יש הרבה מדריכים באינטרנט על איך לעשות את זה...)

כמה הערות לגבי חתימה עצמאית של סרטיפיקטים:

א. אם אין openssl במחשב אז אפשר להוריד מכאן (אני משתמש ב-windows builds מכאן, כנראה שתרצו את גירסת ה-Win64 OpenSSL Light האחרונה).

ב. יש קצת חוסר קונסיסטנטיות בסיימות של קבצי ה-ssl במדריכים השונים, אני אשתמש:
בקבצי key בשביל private key (נגיד router.key).
קבצי crt בשביל הסרטיפיקט לבדו (כגון router.crt או myCA.crt).
קבצי pem בשביל המפתח הפרטי + הסרטיפיקט (כגון router.pem). אפשר לקבל את קובץ ה-pem ע"י שירשור שני הקבצים הקודמים (לדוגמא ע"י cat router.key router.crt > router.pem).

ג. למי שלא מכיר את הנושא של סרטיפיקטים, הסרטיפיקט מוודא שהשרת שהגעתם אליו מתאים לכתובת שניווטתם אליה. לכן צריכים שכל הכתובת שדרכם אתם ניגשים לראוטר יהיו מעודכנות בסרטיפיקט. עושים זאת בעזרת ה-subjectAltName ב-extensions (קובץ ה-ext). לדוגמא הקובץ שלי נראה משהו כזה:

קוד: בחירת הכל

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth,clientAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = my.real.domain.not
DNS.2 = router.home.local
DNS.3 = router
IP.1 = 192.168.1.1
ד. בדוגמא לעיל הוספתי "extendedKeyUsage = serverAuth,clientAuth" (לעומת המדריך שקישרתי קודם). זה אמנם לא נדרש בשביל הסרטיפיקט של ה-https אבל אני משתמש באותו סרטיפיקט גם בשביל ה-roadwarrior VPN ולפחות וינדוס מסרב להתחבר בלי זה. לדעתי זה לא מפריע להוסיף גם אם אף פעם לא תצטרכו.

ה. התקנת הסרטיפיקט של ה-root CA העצמאי ב-windows נעשית ככה (שוב יש הרבה מדריכים באינטרנט בנושא). מתקינים רק את הסרטיפיקט לבדו (ה-myCA.crt בקונוונציה שלי).
לפחות ב-windows, ה-firefox לא מכבד את הסרטיפקטים שמותקנים ב-windows store - בשביל לסדר את זה צריך להיכנס ל-about:config ולהדליק את ה-security.enterprise_roots.enabled.

בין אם יש לנו סרטיפיקט אמיתי או רק self signed אפשר להתקין אותו ע"י ההעתקה של הסרטיפיקט והסרטיפיקט של ה-CA לראוטר לספריית /config/certs/ וקינפוג:

קוד: בחירת הכל

set service gui cert-file /config/certs/router.pem
set service gui ca-file /config/certs/myCA.crt
שימו לב שה-cert-file צריך להכיל גם את המפתח הפרטי וגם את הסרטיפקט של הראוטר.
נערך לאחרונה על ידי eran405 ב 14/12/2020 22:32, נערך 2 פעמים בסך הכל.

eran405 (פותח השרשור)
אחראי תחום רשתות
אחראי תחום רשתות
הודעות: 3388
הצטרף: פברואר 2012
נתן תודות: 380 פעמים
קיבל תודות: 790 פעמים

שימוש ב-dnsmasq בשביל פיענוח שמות לוקאליים

נושא שלא נקרא #4 

משהו יחסית בסיסי לרצות זה לכתוב "ping laptop" ולקבל בצורה יציבה וקונסיסטנטית את ה-IP המקומי של המחשב ששמו laptop. כן בין תחנות windows זה עובד באופן קוסמי עד שזה לא עובד ושוב חוזר לעבוד.... אפשר כמובן להוסיף ל-hosts בכל מכונה את השמות וכתובות של כל המכונות האחרות - שיא הנוחות במיוחד עבור תחנות עם כתובת משתנה (אל תעשו את זה).

ב-edgerouter זה פשוט ביותר לקבל DNS resolving על השמות לוקאליים מה-DHCP (גם סטטיים וגם דינמיים):
https://help.ubnt.com/hc/en-us/articles ... HCP-Server

חלקים רלוונטיים מקונפגירוציה דומה למה שאני משתמש:

קוד: בחירת הכל

service {
    dhcp-server {
        hostfile-update disable
        shared-network-name LAN1 {
            subnet 192.168.1.0/24 {
                dns-server 192.168.1.1
                domain-name home.local
            }
        }
        use-dnsmasq enable
    }
    dns {
        forwarding {
            cache-size 500
            listen-on eth1
            name-server 8.8.8.8
            name-server 8.8.4.4
            name-server 1.1.1.1
            name-server 1.0.0.1
            options bogus-priv
            options domain-needed
            options address=/router.home.local/192.168.1.1
        }
    }
}
system {
    domain-name home.local
    host-name erlite
    name-server 127.0.0.1
}
תוודאו שאין לכם "service dns forwarding system" (אם צריך תעשו לו delete). אם רוצים גם/רק DNS resolving מהשרתים שהספק נותן ב-dhcp אז אפשר להשתמש בפקודה כגון "set service dns forwarding dhcp eth0".
נערך לאחרונה על ידי eran405 ב 14/12/2020 22:20, נערך 2 פעמים בסך הכל.

eran405 (פותח השרשור)
אחראי תחום רשתות
אחראי תחום רשתות
הודעות: 3388
הצטרף: פברואר 2012
נתן תודות: 380 פעמים
קיבל תודות: 790 פעמים

IPsec Site-to-Site VPN

נושא שלא נקרא #5 

ההגדרה בסיסית של IPsec בין שני edgerouters היא ממש פשוטה וזו נקודת ההתחלה טובה:
https://help.ubnt.com/hc/en-us/articles/115012831287

השינויים העיקריים שביצעתי:

א. אני משתמש ב-connection-type של respond (שמתורגם ל-"auto=route" של strongswan). מה שגורם שה-vpn לא מאותחל אוטומטית אלא רק ברגע שהראוטר באחד הצדדים רואה בקשה שמיועדת לצד השני הוא מרים את החיבור. כנ"ל אם החיבור נופל לזמן ארוך אז הוא יוקם מחדש רק כאשר תהיה בקשה לתקשורת.

ב. אבטחה מוגברת בשלב הראשון של החיבור ע"י שימוש ב-aes256-sha256 (מוגדר ע"י ה-ike-group). שימו לב שה-erlite לא תומך ב-offload של sha256 אבל הביצועים בשלב זה של החיבור אינם משמעותיים.
בשלב השני של החיבור שימוש ב-aes256-md5 בשביל ביצועים יותר טובים (מוגדר ע"י ה-esp-group). לפחות בניסויים שלי בהרמת חיבור בין erlite ל-erx לא ראיתי ההבדל בביצועים בין aes128 ל-aes256, אבל כן יש שיפור משמעותי בשימוש ב-md5 במקום sha1 (sha256 בכלל לא נתמך ב-offloading של ה-erlite).
השינויים בהשראת החלק הרלוונטי מכאן .

ג. החלפת אימות ה-PSK באימות בעזרת מפתחות rsa. הנושא באופן כללי מוסבר כאן:
https://help.ubnt.com/hc/en-us/articles/115011373628

הבעיה העיקרית שנתקלתי בה היא שבהמשך הגדרתי גם חיבור של road warrior IKEv2 VPN, והקונפיגורציה שלו דורשת שימוש בסרטיפיקט אמיתי (או במקרה שלי "אמיתי") ומפתח פרטי מתאים. אולי אפשר להפריד בין המפתחות הפרטיים של שני השימושים אבל אני העדפתי והצלחתי לבסוף להשתמש במפתח הפרטי הרלוונטי גם בשביל ה-site-to-site:

במקום השימוש בפקודת ה-"generate vpn rsa-key", מעברים את המפתח הפרטי הרצוי לראוטר ומגדירים אותו בקונפיגורציה ע"י:
set vpn rsa-keys local-key file /config/ipsec.d/rsa-keys/routert.key
עושים commit ומשתמשים בפקודה "show vpn ike rsa-keys" בשביל לקבל את המפתח הפומבי בפורמט מתאים שיראה משהו כזה:

קוד: בחירת הכל

0sAwEAAzaC1yc2EAAAABJQAAAQEAzXs2RLg7jPYOPs26jhYC01MSOxbTWl7OJM1S/L41x0GEL6MENgL
BzmcwMk+p2YlunLKyeHlJnEwmdfByGtZgoSe5tN4/oeso+70PyDTyvVZGXBuVn7ZyufRKT5FTkxsamS
Igr3JsfoEzl/Pxn1IKDo3eXtT/99Q91PCmgRIUX/Eu/GVF8xQa4kVMMjbPfWQPWeSsRJJHcOoFutyHF
i98j7cU+ucFs3O/AZYwKyfxMLhg+v7aRa3Z+FiXyHyMmb7aOEkC7nL8Fr8C/TR5knaeWsnnMnvdvecj
K8U19xpq3+DSzHP+idpWqIx61FGfuAkmQ= 
וזה מה שצריך להכניס לקונפיגורציית ה-"set vpn rsa-keys rsa-key-name othersite rsa-key" בראוטר בצד השני.

לקח לי לא מעט זמן להבין מאיפה אני מקבל את הפורמט המוזר הזה למפתח הפומבי, למיטב ידעתי זה לא משהו סטדנרטי אלא משהו ש-vyatta המציאו.

ד. בשביל להפעיל חיבורי vpn אחרים ללא תלות בהגדרת חיבור ה-site-to-site (נגיד ה-road warrior VPN שאציג בפוסט הבא), בחרתי תמיד להגדיר את חוקי ה-firewall ידנית כמו שמוסבר כאן ובמדריכים של הגדרות חיבורי VPN אחרים. במיוחד עם יש רק חיבורי site-to-site אז עדיף לדעתי להשתמש ב-"auto-firewall-nat-exclude" וזהו.

ה. בשביל לאפשר גישה מה-VPN לראוטר עצמו (מ-ping לראוטר ועד לשימוש ב-dns forwarding של הראוטר מהצד השני של ה-vpn), נדרש חוק firewall כגון:

קוד: בחירת הכל

set firewall name WAN_LOCAL rule 90 action accept
set firewall name WAN_LOCAL rule 90 description "Allow router access from ipsec VPNs"
set firewall name WAN_LOCAL rule 90 destination address 192.168.1.0/24
set firewall name WAN_LOCAL rule 90 log disable
set firewall name WAN_LOCAL rule 90 ipsec match-ipsec
set firewall name WAN_LOCAL rule 90 source address 192.168.0.0/16

ו. בשביל לפנות ל-dns forwarding מה-VPN נדרשת גם קונפיגורציה כגון:

קוד: בחירת הכל

set service dns forwarding options "listen-address=192.168.1.1"
הסיבה שאני בכלל רוצה לפנות ל-dnsmasq של הראוטר המרוחק היא בשביל פענוח של שמות לוקאליים (ראו את הפוסט הקודם TODO LINK). אפשר לבקש מה-dnsmasq בצד אחד להשתמש ב-dnsmasq בצד השני רק בשביל ה-domain הרלוונטי כך:

קוד: בחירת הכל

set service dns forwarding options server=/.other.local/192.168.3.1
ז. הפעלת hardware offloading :
ב-erlite ה-offloading הרלוונטי מופעל אוטומטית.
ב-erx אפשר להפעיל את ה-offload ע"י:

קוד: בחירת הכל

set system offload hwnat enable
set system offload ipsec enable

בהפעלת offload ipsec ב-erx תקבלו את האזהרה הבאה:

קוד: בחירת הכל

WARNING : IPsec offload on ER-X platform is causing problems to L2TP remote-access VPN.
 and IPV6 site-to-site IPSec VPN
 You should *not* enable IPsec offload if you are using any of above.
 Other VPN modes are not affected by this issue:
 * IPv4 site-to-site IPsec VPN is working correctly with IPsec offload.
 * PPTP VPN is working correctly with IPsec offload.
 Only ER-X/ER-X-SFP/EP-R6 models are affected by this issue.
 This issue is to be fixed in future release.
במידה וכן יש צורך ב-IPv6 או שרת L2TP אז אין ברירה ואי אפשר להדליק את ה-offload ipsec ב-erx. נקווה שיפתרו את הבעיה בהקדם.

קונפיגורציה:

אם מחברים את כל זה ביחד, הקונפיגרוציה שאני משתמש כרגע היא משהו כזה:
https://pastebin.com/dJHeH8sk

ביצועים:

בקונפיגרוציה כזו בין erlite ל-erx המחוברים ביניהם ישירות (כלומר ה-WAN של השני הראוטר מחובר על אותו ה-switch) אני מקבל כ-85 מגה לכיוון אחד וכ-70 מגה לכיוון השני: https://pastebin.com/eECnHuAn
בהעברת קבצים מעל ה-VPN מתקבלים קצבים דומים.

בפריסה האמיתית ה-erx כרגע יושב על חיבור 200/5 של הוט (וה-erlite על 500/500 של אנלימטד) ואני מקבל כ-60/5 מה-VPN: https://pastebin.com/tuvB2KLp

מסתבר ש-VPN מהסוג הנ"ל רגיש לקצב ה-upload, כי קודם כשה-erx היה עם חיבור של 100/2 קיבלתי רק 38/2 מה-VPN: https://pastebin.com/M35EitvH
הירידה ל-2 מגה upload היא בגלל החיבור של הוט אבל הירידה ב-download ל-38 מגה כנראה בגלל overhead של ה-vpn שמגביל את ההורדה בגלל קצב ה-upload המוגבל.
נערך לאחרונה על ידי eran405 ב 18/03/2019 23:46, נערך 2 פעמים בסך הכל.

eran405 (פותח השרשור)
אחראי תחום רשתות
אחראי תחום רשתות
הודעות: 3388
הצטרף: פברואר 2012
נתן תודות: 380 פעמים
קיבל תודות: 790 פעמים

Road Warrior VPN Server

נושא שלא נקרא #6 

האופציה "הסטנדרטית" להתחברות מרחוק לרשת המקומית זה בעזרת L2TP:
https://help.ubnt.com/hc/en-us/articles/204950294

חיבור VPN של IKEv2 נחשב יותר קל על ציוד התקשורת ועדיין מאובטח ברמה גבוה ביותר ומאד יציב. הבעיה העיקרית הייתה להבין איך להרים קונפיגורציה של IKEv2 ב-edgerouter. מצאתי כמה פוסטים בנושא אבל עדיין לקח די הרבה מחקר וניסיונות כושלים עד שהצלחתי להרים את זה.

פירטתי את הקונפיגורציה שעובדת לי כאן:
https://community.ubnt.com/t5/EdgeRoute ... -p/2504853

במידה ואין סרטיפקטים אמיתיים אפשר להתשמש בסרטיפקט חתום עצמאית כמו שהסברתי בפוסט כאן.

פרט קטן שלא פירטתי בפוסט לעיל הוא שאני גם מגדיר את ה-dns suffix במתאים (נגיד home.local) בהגדרות VPN בתחנת הקצה (ב-windows זה מוכבה היטב בהגדרות networking של חיבור ה-VPN, נכנסים למאפיינים של ה-IPv4, הגדרות מתקדמות, ותחת DNS למטה אפשר למצוא את ה-dns suffix). זאת בשביל לאפשר גישה נוחה למחשבים ברשת ה-VPN ללא ה-domain המלא. אם מישהו מכיר דרך שה-strongswan ידחוף את זה אוטומטית אשמח לשמוע (כמו שה-dnsmasq עושה בשביל חיבור dhcp ללא VPN).

ביצועים:

בסוף הפוסט הנ"ל יש גם את הביצועים שאני מקבל: בחיבור ישיר ל-erlite כ-90/75 (בדומה ל-site-to-site ipsec) ול-erx באופן מרשים כ-200/150.
בחיבור מעל תשתית 100/3 של בזק מול ה-erlite אני מקבל כ-65/3 מגה.

למי שלא רוצה להסתבך ולהסתפק בחיבור L2TP זו גם אופציה לא רעה בכלל במיוחד ב-erlite: קיבלתי כ-72/65 מגה בחיבור ישיר ל-erlite ולא נתקלתי בבעיות בניסוי המוגבל שלי של ה-L2TP.

שימו לב שב ER-X, לפחות כרגע, חייבים לכבות את ה-hardware offloading בשביל שימוש ב-L2TP ולכן המהירות שם הרבה יותר נמוכה (הצלחתי לא לרשום את התוצאה של הבדיקה אבל אם אני זוכר נכון זה היה כ-6 מגה). בנוסף גם אי אפשר לכבות offloading רק בשביל L2TP, כלומר חיבורי site-to-site יספגו פגיעה רצינית בביצועים בשביל האופציה לחיבור ב-L2TP. נקווה שיפתרו את המגבלה הזו בהקדם.

rm1
חבר ותיק
חבר ותיק
הודעות: 1294
הצטרף: מרץ 2013
נתן תודות: 6 פעמים
קיבל תודות: 145 פעמים

נושא שלא נקרא #7 

פיייי איזה פוסט יפה, חזק ואמץ.
נקווה שיפתרו בקרוב את ה offload כי זה הורג את הביצועים וחונק את ה CPU
אני עובד עם pfsense אבל לפחות חלק מההגדרות תופס לכל נתב.

eran405 (פותח השרשור)
אחראי תחום רשתות
אחראי תחום רשתות
הודעות: 3388
הצטרף: פברואר 2012
נתן תודות: 380 פעמים
קיבל תודות: 790 פעמים

נושא שלא נקרא #8 

@rm1
·

לפי ההודעה שלהם ה-offload ipsec ב-ER-X שבור רק בשימוש של IPv6 או L2TP. היות שאני לא משתמש לא בזה ולא בזה הפעלתי אותו ולא נתקלתי בשום בעיות. אם צריכים חיבורי ipsec בקצב סביר וצריכים IPv6 או L2TP אז צריך לקנות דגם אחר (כגון ה-erlite או ה-edgerouter 4).

כמובן שהרצת pfsense על מכונה טובה זה פתרון אפילו יותר חזק (ה-edgerouters אמנם זולים אבל החומרה שלהם לא בדיוק כזו חזקה). אין לי ניסיון אישי עם pfsense אבל ההתרשמות שלי שגם ה-pfsense וגם ה-edgeOS יחסית נוחים למשתמש המבין - לטעמי הרבה יותר נוחים מ-openwrt ודומיהם (ובטח יותר נוחים מקושחות יצרן בראוטרים ביתיים).

rm1
חבר ותיק
חבר ותיק
הודעות: 1294
הצטרף: מרץ 2013
נתן תודות: 6 פעמים
קיבל תודות: 145 פעמים

נושא שלא נקרא #9 

אם offloading פעיל חשבתי שהביצועים יהיו מעל 100Mb בחיבור ישיר...

eran405 (פותח השרשור)
אחראי תחום רשתות
אחראי תחום רשתות
הודעות: 3388
הצטרף: פברואר 2012
נתן תודות: 380 פעמים
קיבל תודות: 790 פעמים

נושא שלא נקרא #10 

@rm1
·

בעיקר לגבי ביצועי ה-ipsec של ה-erlite יש קצת מידע באינטרנט (בעיקר בפורמים של ubiquiti, נגיד כאן): יש כאלה שטוענים שאפשר להגיע עם שני erlites למעל 100 מגה בחיבור ישיר אבל זה נראה לי קצת תמוהה לאור התוצאות שלי עם erlite מול erx. בנוסף הרבה אחרים מציינים את האיזור של 50-100 מגה שזה מתאים בול לתוצאות שלי.

לגבי erx ו-edgerouter 4 (הדגמים האחרים שרלוונטים מבחינתי) אני לא מצליח למצוא מידע. לפי ביצועי ה-erx בקונפיגורצית ה-roadwarrior אני יכול לצפות ששני erxים יגיעו לאיזור ה-150-200 מגה ובהימור ממש פרוע אני מנחש ששני er4ים יגיעו לאיזור ה-400 מגה. כמובן בלי לבדוק קשה להגיד אם אני אפילו קרוב.

במיוחד ה-erx שעולה ממש גרושים (300 ש"ח בארץ) הוא ממש מציאה מבחינת ביצועי IPSec לעומת מחיר לפי מה שאני מכיר.

כמובן שכל זאת רק בחיבור ישיר. במציאות ראיתי ירידה גדולה בביצועים כנראה בגלל ה-upload המוגבל. בדיעבד הייתי צריך גם למודד את צריכת ה-upload כשבדקתי download דרך ה-VPN (בחיבור ישיר) ולהיפך. בהנחה שאני צודק, זה די בעייתי בהינתן מצב ה-upload ברב השוק בארץ.
מישהו נתקל בתופעה הזו גם בציוד אחר (נגיד עם pfsense)?

שלח תגובה

חזור אל “רשתות, אינטרנט ו- Fiber”