במדריך הזה מוסבר איך להשתמש בכלים של שורת הפקודה של 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.