זיהוי מרחוק של שיבושים ברשת ועקיפה שלהם באמצעות Outline SDK

במדריך הזה מוסבר איך להשתמש בכלים של שורת הפקודה של Outline SDK כדי להבין את ההפרעות ברשת ולעקוף אותן מנקודת מבט מרחוק. במאמר הזה נסביר איך להשתמש בכלים של ה-SDK כדי למדוד שיבושים ברשת, לבדוק אסטרטגיות לעקיפת חסימות ולנתח את התוצאות. המדריך הזה יתמקד בכלים resolve,‏ fetch ו-http2transport.

תחילת העבודה עם כלי Outline SDK

אפשר להתחיל להשתמש בכלי Outline SDK ישירות משורת הפקודה.

פתרון בעיות DNS

הכלי resolve מאפשר לכם לבצע שאילתות DNS עם רכיב resolver ספציפי.

כדי לפתור בעיה ברשומת הכתובת הקבועה של דומיין:

go run github.com/Jigsaw-Code/outline-sdk/x/tools/resolve@latest -resolver 8.8.8.8 -type A 1.2.3.4.nip.io

כדי לפתור בעיה ברשומת CNAME:

go run github.com/Jigsaw-Code/outline-sdk/x/tools/resolve@latest -resolver 8.8.8.8 -type CNAME www.google.com

אחזור של דף אינטרנט

אפשר להשתמש בכלי fetch כדי לאחזר את התוכן של דף אינטרנט.

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest https://example.com

הוא יכול גם לכפות על החיבור להשתמש ב-QUIC.

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -proto=h3 https://www.youtube.com

שימוש בשרת Proxy מקומי

הכלי http2transport יוצר פרוקסי מקומי כדי לנתב דרכו את התנועה. כדי להפעיל פרוקסי מקומי עם העברה של Shadowsocks:

go run github.com/Jigsaw-Code/outline-sdk/x/tools/http2transport@latest -localAddr 127.0.0.1:8080 -transport "ss://{your_shadowsocks_credentials}"

אחר כך אפשר להשתמש ב-Proxy הזה עם כלים אחרים כמו curl:

curl -p -x http://127.0.0.1:8080 https://ipinfo.io

ציון אסטרטגיות לעקיפה

‫Outline SDK מאפשר לציין אסטרטגיות שונות לעקיפת חסימות, שאפשר לשלב ביניהן כדי לעקוף סוגים שונים של שיבושים ברשת. המפרט של האסטרטגיות האלה מופיע במסמכי העזרה של Go.

אסטרטגיות קומפוזביליות

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

  • DNS-over-HTTPS עם פיצול TLS: doh:name=cloudflare-dns.com&address=cloudflare.net:443 | tlsfrag:1
  • SOCKS5-over-TLS עם Domain Fronting: tls:sni=decoy.example.com&certname=[HOST] | socks5:[HOST]:[PORT]
  • ניתוב רב-שלבי עם Shadowsocks: ss://[USERINFO1]@[HOST1]:[PORT1] | ss://[USERINFO2]@[HOST2]:[PORT2] | ss://[USERINFO3]@[HOST3]:[PORT3]

גישה מרחוק ומדידה

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

אפשרויות לגישה מרחוק

באמצעות הכלי fetch אפשר לבדוק חיבורים מרחוק בדרכים שונות.

שרת Outline

חיבור מרחוק לשרת Outline רגיל באמצעות פרוטוקול Shadowsocks.

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "ss://{remote_shadowsocks_credentials}" https://ipinfo.io | jq

SOCKS5 over SSH

יצירת שרת proxy מסוג SOCKS5 באמצעות מנהרת SSH.

ssh -D 127.0.0.1:1080 -C -N $USER@$HOST:$PORT

התחברות למנהרה באמצעות fetch

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "socks5://localhost:1080" https://ipinfo.io | jq

מקרה לדוגמה: עקיפת חסימה של YouTube באיראן

הנה דוגמה מעשית לזיהוי הפרעות ברשת ולעקיפתן.

זיהוי החסימה

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

export TRANSPORT="ss://{remote_shadowsocks_credentials}"
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|override:host=$(dig +short www.youtube.com | tail -1)" https://www.youtube.com

הפקודה הזו נכשלת בגלל פסק זמן.

מעקף עם פיצול TLS

על ידי הוספת פיצול TLS לתעבורה, אנחנו יכולים לעקוף את החסימה הזו.

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|override:host=$(dig +short www.youtube.com | tail -1)|tlsfrag:1" https://www.youtube.com | grep -oe '<title>.*</title>'

הפקודה הזו מאחזרת בהצלחה את הכותרת של דף הבית ב-YouTube, שהיא <title>YouTube</title>.

עקיפה באמצעות פיצול TLS ו-DNS-over-HTTPS

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|tlsfrag:1|doh:name=cloudflare-dns.com&address=www.cloudflare.net" https://www.youtube.com | grep -oe '<title>.*</title>'

הפקודה מחזירה גם את הערך <title>YouTube</title>.

עקיפה באמצעות שרת Outline

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|ss://<your_shadowsocks_credentials>" https://www.youtube.com | grep -oe '<title>.*</title>'

גם כאן מוחזרת התוצאה <title>YouTube</title>.

ניתוחים ומשאבים נוספים

לדיונים ולשאלות, אפשר להיכנס לקבוצת הדיון בנושא Outline SDK.