מקרה מעשי I: הבנת שכבת 4 NAT ו איזון עומסים DNAT

פורסם ב-20 בספטמבר, 2017

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

ראשית, נסה את התרגיל הבא:

Step 1. Install Zevenet CE from GIT, SF or Docker
            https://www.zevenet.com/community

Step 2. Create L4xNAT farm with 2 backends and NAT or DNAT mode
            https://www.zevenet.com/knowledge-base/

Step 3. Execute in a console of Zevenet CE and try to understand the result of:
            root# iptables -t mangle -n -L
            root# iptables -t nat -n -L

ספקות והערות ב פקיד רשימת תפוצה!

תשובה

איזון עומסים הוא מכשיר רשת אחראי על זרימת התנועה בין הלקוח לבין backends או שרתים אמיתיים, כך צעדים 4 יילקחו על מנת להבטיח את הזרמים, מנות לכל מנה של חיבור בשכבה 4:

Load_Balancer_l4_packet_flows

1. החבילה מהלקוח נשלחת מהלקוח לאיזון העומס
2. החבילה נשלחת מתוך איזון עומסים לשרת אמיתי אחד נבחר או backend
3. המנה עונה מהשרת למאזן העומס
4. החבילה נשלחת בחזרה אל הלקוח כתגובה

זאבנט שכבה 4 (פרופילי LSLB - L4xNAT) מטפלת בכל החבילות הללו באמצעות Netfilter המשנה דרך iptables ואת מערכת ניתוב הרשת.

מסיבה זו, בעת קביעת תצורה של DTA מצב החווה ולבצע את פקודות iptables אנו יכולים למצוא כללים שנוצר בטבלאות מִגהָצָה ו נת של netfilter. מידע נוסף אודות Netfilter שולחנות כאן .

ב PREROUTING שרשרת של מִגהָצָה בטבלה מוצג החוקים שתואמים:

- כל החבילות הנכנסות מכל המקורות או הלקוחות שהיעד הוא הכתובת הווירטואלית והנמל של השירות (בדוגמה תהיה 192.168.101.250:443 -)
- ואז סמן את החבילות על פי אלגוריתם מסוים, במקרה זה הוא משקל המבוסס על שיטת הסתברות.

root@zevenet:~# iptables -L -t mangle -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
CONNMARK   all  --  0.0.0.0/0            0.0.0.0/0            CONNMARK restore
MARK       tcp  --  0.0.0.0/0            192.168.101.250      statistic mode random probability 1.00000000000 multiport dports 443 /*  FARM_app_1_  */ MARK set 0x20d
MARK       tcp  --  0.0.0.0/0            192.168.101.250      statistic mode random probability 0.50000000000 multiport dports 443 /*  FARM_app_0_  */ MARK set 0x20c
CONNMARK   all  --  0.0.0.0/0            0.0.0.0/0            state NEW CONNMARK save

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

עכשיו, כי מנות נכנסות מסומנות, ב PREROUTING שרשרת של נת אנו משתמשים בסימן המנות כדי לשנות את כתובת היעד של החבילה לבקנדה אחת או אחרת. לדוגמה, כתובות ה- IP 192.168.1.10 ו 192.168.1.11 הם השרתים האמיתיים.

root@zevenet:~# iptables -L -t nat -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20c /*  FARM_app_0_  */ to:192.168.1.10:443
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20d /*  FARM_app_1_  */ to:192.168.1.11:443

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

אל האני קונטראק שולחן מנהל את כתובת היעד היעד ב DTA מצב, מנות החזרה מנוהלת על ידי נתיבים כמו איזון עומס יהיה שער ברירת המחדל של backends.

במקרה של NAT, או SNAT כידוע, הטרקטור מנהל לא רק את תרגום כתובות היעד אלא גם את תרגום כתובת המקור. במקרה זה, ההבדל היחיד עם DTA היא שהחבילה שנענתה אינה מנוהלת על ידי מערכת הניתוב אלא על ידי טבלת המחברים. כדי שנוכל למצוא רק שני כללים חדשים ב- POSTROUTING שרשרת של שולחן nat כדי לבצע את מסקר עם כתובת ה- IP של החווה.

root@zevenet:~# iptables -L -t nat -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20c /*  FARM_app_0_  */ to:192.168.1.10:443
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20d /*  FARM_app_1_  */ to:192.168.1.11:443

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20c /*  FARM_app_0_  */ to:192.168.101.250
SNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20d /*  FARM_app_1_  */ to:192.168.101.250

ספקות נוספים? שאל את רשימת תפוצה!

תשתף:

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

האם המאמר הזה היה מועיל?

מאמרים נוספים