מדריך למשתמש ב־mudfish-exclude
כלי זה זמין ר ק ב־Mudfish Cloud VPN 6.5.4 ומעלה.
mudfish-exclude הוא כלי שורת פקודה ל־Mudfish ב־Linux, שמפעיל תוכנית מסוימת מחוץ למסלול של Mudfish. הוא שימושי במיוחד במצב Full VPN, כאשר רוצים שתעבורת דפדפן, יישום הודעות, נגן וידאו או כלי הורדה תצא ישירות דרך חיבור האינטרנט המקורי.
일반 프로그램 -> 미꾸라지 경로 -> 중계 서버
mudfish-exclude 앱 -> 기존 기본 경로 -> 인터넷
בתרשים המקורי שלעיל, תוכנית רגילה עוברת דרך מסלול Mudfish ושרת הממסר, ואילו יישום שמופעל באמצעות mudfish-exclude עובר דרך מסלול ברירת המחדל המקורי לאינטרנט.
הכלי אינו מוסיף הגדרות ללוח הבקרה של Mudfish. פשוט הפעילו את התוכנית שברצונכם להחריג באמצעות mudfish-exclude במקום פקודת ההפעלה הרגילה שלה.
תחום התמיכה: כרגע נתמכים Linux ו־IPv4 בלבד. הכלי אינו זמין ב־Windows, ב־macOS או ב־Android, ואינו מחיל מדיניות עקיפה נפרדת על תעבורת IPv6.
דרישות סביבה
כל התנאים הבאים נדרשים.
- Mudfish ל־Linux חייב להיות מותקן.
- cgroup v2 חייב להיות מעוגן ב־
/sys/fs/cgroup. - הפקודות
ipו־iptablesותכונת התאמת cgroup של iptables חייבות להיות זמינות. - נדרשות הרשאות
sudoכדי להגדיר ניתוב מבוסס מדיניות וכללי חומת אש. - בטבלת הניתוב main של Linux חייב להיות מסלול ברירת מחדל תקין ל־IPv4.
קובץ ההפעלה מותקן בדרך כלל במיקום הבא. מציין המקום הקוריאני מייצג את גרסת Mudfish.
/opt/mudfish/<미꾸라지 버전>/bin/mudfish-exclude
אפשר למצוא את נתיב ההתקנה הנוכחי באמצעות הפקודה הבאה.
ls /opt/mudfish/*/bin/mudfish-exclude
אם קובץ ההפעלה אינו נמצא ב־PATH, החליפו את mudfish-exclude בדוגמאות הבאות בנתיב המלא שמצאתם. לדוגמה, נתיב ההתקנה הרגיל של גרסה 6.5.4 הוא /opt/mudfish/6.5.4/bin/mudfish-exclude.
שימוש בסיסי
- הפעילו את Mudfish והתחברו כראוי לפריט הרצוי או למצב Full VPN.
- אם התוכנית שברצונכם להחריג כבר פועלת, סגרו אותה לחלוטין, כולל תהליכים ברקע ובאזור ההודעות.
- הפעילו אותה מחדש במסוף בפורמט הבא. מצייני המקום הקוריאניים מייצגים את התוכנית ואת האפשרויות שלה.
sudo mudfish-exclude <프로그램> [프로그램 옵션...]
לדוגמה, כדי להחריג את Discord מ־Mudfish, הפעילו:
sudo mudfish-exclude discord
כדי להחריג את Firefox ולפתוח חלון פרטי, הפעילו:
sudo mudfish-exclude firefox --private-window
אם נתיב קובץ ההפעלה כולל רווחים, הקיפו אותו במירכאות.
sudo mudfish-exclude "/path/to/My Program" --option
sudo משמש להגדרת מדיניות הרשת. התוכנית עצמה שמופעלת באמצעות sudo mudfish-exclude ... פועלת, ככל האפשר, עם ה־UID, ה־GID, תיקיית הבית וסביבת הפעלת שולחן העבודה של המשתמש המקורי שהפעיל את sudo.
חשוב לדעת
- מדיניות ההחרגה חלה על התהליך החדש שהופעל באמצעות
mudfish-excludeועל תהליכי הבן שלו. - אי אפשר להוסיף את המדיניות בדיעבד לתוכנית ש כבר פועלת. יש לסגור אותה לחלוטין תחילה, כדי שתוכנית בעלת מופע יחיד לא תשתמש מחדש בתהליך קיים.
- בהפעלה הרגילה החד־פעמית, המדיניות מוסרת אוטומטית לאחר סיום התוכנית וכל תהליכי הבן שלה.
- אפשר להפעיל כמה פקודות
mudfish-excludeבמקביל. המדיניות המשותפת מוסרת לאחר סיום התוכנית המוחרגת האחרונה. - תעבורת IPv4 של תוכנית מוחרגת אינה משתמשת בשרתי הממסר, בתכונות ההאצה או בכתובת ה־IP הציבורית של מסלול Mudfish.
בדיקת פעולה תקינה
הבדיקה קלה במיוחד כאשר כתובת ה־IPv4 הציבורית לפני חיבור Full VPN שונה מזו של שרת הממסר במצב Full VPN.
תחילה, בדקו את הכתובת במסוף רגיל כאשר Full VPN מחובר.
curl -4 https://myip.mudfish.net
הפעילו את אותה פקודה באמצעות mudfish-exclude.
sudo mudfish-exclude curl -4 https://myip.mudfish.net
התוצאה הראשונה אמורה להציג את הכתובת בצד שרת הממסר של Mudfish, והשנייה את כתובת חיבור האינטרנט המקורי. האפשרות -4 מגבילה את הבדיקה ל־IPv4, בהתאם לתחום התמיכה של הכלי.
לבדיקה בדפדפן, סגרו אותו לחלוטין, הפעילו אותו כך וגשו אל https://myip.mudfish.net.
sudo mudfish-exclude firefox
יציאה וניקוי המדיניות
ביציאה תקינה אין צורך בפקודת ניקוי נפרדת. עם זאת, המדיניות עלולה להישאר אם התהליך mudfish-exclude נסגר בכוח, אם המסוף נסגר בצורה לא תקינה או אם המערכת נעצרה.
תחילה סגרו את כל התוכניות שהפעלתם באמצעות הכלי, ואז הפעילו:
sudo mudfish-exclude --cleanup
שימוש ב־
--cleanupבזמן שתוכנית מוחרגת עדיין פועלת עלול להפסיק מיד את העקיפה שלה.
אפשרויות פקודה
שורת התחביר המקורית הבאה מציינת אפשרויות כלי, תוכנית ואפשרויות תוכנית.
사용법: mudfish-exclude [옵션] 프로그램 [프로그램 옵션...]
| אפשרות | הסבר |
|---|---|
-h, --help | מציג עזרה. |
--setup | מגדיר רק את מדיניות הרשת להחרגה ויוצא. אי אפשר לציין תוכנית יחד עם אפשרות זו. |
--cleanup | מסיר את מדיניות הרשת להחרגה ויוצא. אי אפשר לציין תוכנית יחד עם אפשרות זו. |
--no-setup | נכנס ל־cgroup שצוין ומפעיל את התוכנית בלי להגדיר מחדש את המדיניות הקיימת. |
--cgroup NAME | קובע את שם ה־cgroup v2 לשימוש. ברירת המחדל היא mudfish-exclude. |
--mark VALUE | קובע את סימון חומת האש למנות. ברירת המחדל היא 0x6d660001. |
--priority VALUE | קובע את עדיפות כלל מדיניות IPv4. ברירת המחדל היא 8252. |
--table VALUE | קובע את מספר טבלת הניתוב שתכיל את מסלול ברירת המחדל המקורי. ברירת המחדל היא 8252. |
כדי לסיים במפורש את פענוח האפשרויות, אפשר לציין את התוכנית אחרי --.
sudo mudfish-exclude -- firefox --private-window
שימוש חוזר במדיניות לכמה תוכניות
למשתמשים רגילים מומלצת הפעלה חד־פעמית נפרדת לכל תוכנית. אם יש צורך להגדיר מדיניות ידנית פעם אחת ולהשתמש בה בכמה פקודות, אפשר לפעול כך:
sudo mudfish-exclude --setup
sudo mudfish-exclude --no-setup discord
sudo mudfish-exclude --no-setup firefox
לאחר סגירת כל התוכניות, חובה לנקות את המדיניות.
sudo mudfish-exclude --cleanup
בשיטה הידנית אין ניקוי אוטומטי. בנוסף, חלק מיישומי שולחן העבודה עשויים לעבור ל־cgroup אחר של systemd בזמן הפעולה. עבורם מתאימה יותר שיטת ההפעלה החד־פעמית הרגילה, שעוקבת אחר מעבר בין קבוצות ומבצעת ניקוי אוטומטי.
אם שיניתם את --cgroup, --mark, --priority או --table, חובה להשתמש באותם ערכים ב־--setup, ב־--no-setup וב־--cleanup. אסור שהערכים המותאמים יתנגשו עם סימוני חומת אש או כללי ניתוב מבוסס מדיניות שכבר קיימים במערכת.
פתרון בעיות
mudfish-exclude: command not found
קובץ ההפעלה אינו נכלל ב־PATH. מצאו את מיקום ההתקנה באמצעות הפקודה הבאה, ואז הפעילו באמצעות הנתיב המלא.
ls /opt/mudfish/*/bin/mudfish-exclude
sudo /opt/mudfish/6.5.4/bin/mudfish-exclude discord
החליפו את מספר הגרסה בפקודה השנייה בהתאם לגרסה המותקנת.
network policy setup requires root
אין הרשאה להגדרת מדיניות הרשת. הוסיפו sudo לפני הפקודה והפעילו שוב.
sudo mudfish-exclude discord
cgroup v2 is required at /sys/fs/cgroup
המערכת אינה משתמשת ב־cgroup v2, או שהוא אינו מעוגן במיקום הזה. אפשר לבדוק זאת באמצעות הפקודה הבאה. ההודעה הקוריאנית שבה מציינת ש־cgroup v2 זמין.
test -f /sys/fs/cgroup/cgroup.controllers && echo "cgroup v2 사용 가능"
אם לא מופיע פלט, בדקו כיצד להפעיל cgroup v2 בהפצת Linux שלכם.
iptables rule add failed או שגיאת התאמת cgroup
בדקו ש־iptables מותקן ושהליבה ו־iptables תומכים בהתאמת cgroup. גם בהפצה המבוססת על nftables, הכלי משתמש ישירות בפקודת התאימות iptables, ולכן נדרשת שכבת תאימות iptables תקינה.
failed to find the IPv4 default route
לא נמצא מסלול ברירת המחדל של IPv4 עבור חיבור האינטרנט המקורי בטבלת הניתוב main. בדקו אם הפלט של הפקודה הבאה כולל מסלול default.
ip -4 route show default table main
אם אין מסלול ברירת מחדל, או אם הוא כבר מצביע על ממשק VPN אחר, mudfish-exclude אינו יכול להגדיר את מסלול האינטרנט המקורי.
כתובת ה־IP הציבורית אינה משתנה למרות ההחרגה
בדקו לפי הסדר:
- שמצב Full VPN אכן מחובר, ושבהפעלה רגילה מוצגת כתובת ה־IP של שרת הממסר.
- סגרו את כל התהליכים הקיימים ותהליכי הרקע של תוכנית היעד, ואז הפעילו אותה מחדש.
- השתמשו ב־
curl -4או בשיטת בדיקת IPv4 כדי לא להתבלבל עם תוצאת IPv6. - בדקו אם תוכנית היעד מעבירה את הפקודה לשירות נפרד או למפעיל שכבר פועל. מדיניות ההחרגה חלה רק על עץ התהליכים החדש שנוצר על ידי
mudfish-exclude. - בדקו שמסלול ברירת המחדל שמופיע ב־
ip -4 route show default table mainמצביע על ממשק האינטרנט האמיתי.
התוכנית נסגרה אך הפקודה במסוף אינה מסתיימת
ייתכן שתהליך בן או תהליך רקע עדיין פועל ב־cgroup המוחרג. סגרו גם את הסמלים הרלוונטיים באזור ההודעות, המפעילים ותהליכי העדכון. שיטת ההפעלה הרגילה ממתינה לסיום כל תהליכי הבן ורק אז מנקה את המדיניות.
בעיות רשת לאחר סגירה לא תקינה
סגרו את כל התוכניות שהפעלתם באמצעות הכלי ונקו את המדיניות שנותרה.
sudo mudfish-exclude --cleanup
אם הבעיה נמשכת, סגרו את Mudfish, בדקו את מסלול ברירת המחדל ואת כללי iptables במערכת, ואז התחברו מחדש.
אופן הפעולה
mudfish-exclude מכניס את התוכנית ל־cgroup v2 נפרד ומסמן באמצעות iptables את מנות IPv4 שנוצרו באותה קבוצה. מנות בעלות הסימון הזה מנותבות דרך טבלת ניתוב מבוסס מדיניות נפרדת אל מסלול ברירת המחדל שנמצא בטבלת main של Linux, ומוחל עליהן NAT MASQUERADE לפי הצורך.
התהליך אינו משנה את ההגדרות או את מצב הזיכרון המשותף של mudrun, mudflow, mudfish או mudwfp_proxy. מדיניות ההחרגה פועלת רק בשכבות cgroup, iptables וניתוב IPv4 מבוסס מדיניות של מערכת ההפעלה.