הפעלת העברת IP עבור IPv4 ב- Debian GNU/Linux

Enabling Ip Forwarding



הקמת רשת מחשבים יכולה להיות מסובכת לפעמים. הפעלת העברת IPv4 במכונת לינוקס היא משימה פשוטה למדי, למרבה המזל.

המונח העברת IP מתאר שליחת חבילת רשת מממשק רשת אחד למשנהו באותו מכשיר. זה צריך להיות מופעל כאשר אתה רוצה שהמערכת שלך תפעל כנתב שמעביר מנות IP מרשת אחת לרשת אחרת.







במערכת לינוקס לגרעין לינוקס יש משתנה בשם 'ip_forward' ששומר על ערך זה. הוא נגיש באמצעות הקובץ `/proc/sys/net/ipv4/ip_forward`. ערך ברירת המחדל הוא 0 מה שאומר שאין העברת IP, מכיוון שמשתמש רגיל שמפעיל מחשב יחיד ללא רכיבים נוספים אינו זקוק לכך בדרך כלל. לעומת זאת, עבור נתבים, שערים ושרתי VPN זוהי תכונה חיונית למדי.



לאחר מכן, נסביר לך כיצד להפעיל העברת IP באופן זמני, ולתמיד.



העברת IP כפתרון זמני

על מנת לאפשר פרמטר ליבה זה בתנועה יש לך שתי אפשרויות. אפשרות 1 פשוט מאחסנת את הערך 1 במשתנה מלמעלה כדלקמן:





#זרק 1 > /אָחוּז/sys/נֶטוֹ/ipv4/ip_forward

אפשרות 2 משתמשת בפקודה 'sysctl' המאפשרת לך להתאים פרמטרים שונים של גרעין גם בזמן ריצה [2]. כמשתמש מנהל, הפעל את הפקודה הבאה:

#sysctlnet.ipv4.ip_forward =1

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



תוכל לשאול את הערך המאוחסן כדלקמן:

#חתול /אָחוּז/sys/נֶטוֹ/ipv4/ip_forward

פקודה זו מחזירה ערך של 0 ללא העברת IP, וערך 1 עבור העברת IP מופעל. כחלופה, השימוש ב- 'sysctl' מציג לך גם את המצב הנוכחי:

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward =0
#

הפעלת העברת IP לצמיתות

על מנת להשיג זאת יש לבצע מספר צעדים נוספים. ראשית, ערוך את הקובץ `/etc/sysctl.conf`. חפש שורה המכילה את הערך # net.ipv4.ip_forward = 1, והסר את ה- # בתחילת השורה.

לאחר מכן, שמור את הקובץ והפעל את הפקודה 'sysctl' על מנת לאפשר את ההגדרות המותאמות:

#sysctl-p /וכו/sysctl.conf

האפשרות '-p' היא קיצור של '–load', ודורשת שם לקובץ התצורה שיש לעקוב אחריו.

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

#/וכו/init.d/מציעה הפעלה מחדש

בערך בשנת 2015 שם הקובץ התקצר מ` procps.sh` ל- `procps`. אם כך, במערכות דביאן קשישות התסריט שעליך להפעיל נקרא 'procps.sh', במקום זאת.

התמודדות עם Systemd

המכשול הבא הגיע עם שחרור גרסת Systemd 221. העברת IP מושבתת כברירת מחדל, וההפעלה דורשת קובץ נוסף כדי להיות שם. אם הוא עדיין לא שם, פשוט הוסף אותו. שם הקובץ מורכב מהשם של ממשק הרשת ואחריו הסיומת '.network', למשל 'eth0.network' עבור ממשק הרשת '/dev/eth0'. כאמור בתיעוד [4], התעלמות אחרות מתעלמות.

קטע הקוד הבא מציג את ההתקנה של ממשק הרשת `/dev/tun0`. הוא מכיל שני חלקים - 'התאמה' ו'רשת '. בקטע התאמה הגדירו את שם ממשק הרשת, ובקטע הרשת אפשר העברת IP.

# cat /etc/systemd/network/tun0.network
[התאמה]
שֵׁם= tun0
[רֶשֶׁת]
IPForward= ipv4

סיכום

הפעלת העברת IP עבור IPv4 אינה בגדר תעלומה. רק כמה צעדים, ואתם שם. פריצה שמח!

קישורים והפניות

* [1] הגדרת Systemd-Networkd, Debian Wiki
* [2] יורגן האס: למד את הפקודה sysctl Linux
* [3] Systemd News לגרסה 221
* [4] תיעוד עבור Systemd