בודק התנגשויות רשת של Docker
מזינים את טווחי ה-LAN וה-VPN, או מדביקים פלט של ip route, ורואים אילו רשתות של Docker יתנגשו בהם, ו-pool שעוקף אותם ל-daemon.json. שום דבר שתזינו או תדביקו לא יוצא מהעמוד.
עדיין אין מה לבדוק. הזינו לפחות טווח אחד, או הדביקו פלט של ip route או של docker network inspect.
מה הכלי עושה
הכלי בודק אם הרשתות ש-Docker יוצר מתנגשות עם הרשתות שאתם משתמשים בהן: ה-LAN הביתי, VPN, משרד או VPC בענן. כשהן מתנגשות, תעבורה לכתובות האלה נכנסת לרשת של קונטיינר במקום לצאת לרשת האמיתית, ושירותים מעבר ל-VPN או ב-LAN נעשים בלתי נגישים מהשרת או מהקונטיינרים.
איך זה עובד
- Docker יוצר רשתות מה-pools המובנים שלו, 172.17.0.0/16 עד 172.31.0.0/16 ואחר כך רשתות /20 מתוך 192.168.0.0/16, או מ-default-address-pools ב-daemon.json. הבדיקה מוצאת כל רשת Docker שעלולה לנחות על אחד הטווחים שלכם.
- מפלט של ip route נלקחות הרשתות של השרת עצמו וה-bridges של Docker (docker0, br-…); מ-docker network inspect, הרשתות הקיימות; מ-daemon.json, ה-pools וה-bip.
- אחר כך מוצעים pool אחד ו-bip מחוץ לכולם, שהמחולל כותב ל-daemon.json. הכול רץ בדפדפן עם @anaroq/linux; שום דבר לא נשלח, לא נשמר ולא נכנס לקישור, חוץ מה-pool המוצע כשפותחים את המחולל.
פקודות שאת הפלט שלהן מדביקים כאן
ip route- הנתיבים של השרת: LAN, VPN וה-bridges של Docker.
docker network inspect $(docker network ls -q)- כל רשתות Docker עם ה-subnet שלהן.
sudo cat /etc/docker/daemon.json- ה-pools וה-bip הנוכחיים, אם יש.
דוגמה
שרת ב-LAN ביתי 192.168.1.0/24 עם VPN על 10.8.0.0/24 והגדרות ברירת המחדל של Docker. ה-LAN נמצא בתוך ה-pool 192.168.0.0/16 של Docker:
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.20 metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.6
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20 metric 100
192.168.1.0/24↔192.168.0.0/20(192.168.0.0/16)
ההצעה ל-daemon.json:
{
"default-address-pools": [
{
"base": "10.200.0.0/16",
"size": 24
}
],
"bip": "10.199.0.1/24"
}
מגבלות
- IPv4 בלבד ל-pools. נתיבי IPv6 נקראים, אבל ה-pools של IPv6 ב-Docker לא נבדקים.
- הבדיקה קוראת את מה שהודבק ברגע אחד: VPN שמתחבר אחר כך, או רשת שנוצרת אחר כך, לא נכללים.
- Docker Desktop ו-rootless Docker לא נתמכים. רשתות overlay של Swarm (default-addr-pool של docker swarm init) לא נבדקות.
- הכלי לא משנה רשתות. העברת רשת קיימת פירושה מחיקה ויצירה מחדש.
מקורות
קשורים
הצעד הבא
כלי ציבורי חינמי של אנרוק, חברה שבונה תשתיות מחשוב. מה אנרוק בונה