Skip to content

Commit 7cf0a90

Browse files
authored
Merge branch 'radkesvat:main' into main
2 parents d01c39a + 9cb444f commit 7cf0a90

10 files changed

Lines changed: 9778 additions & 12753 deletions

‎docs/manually/tunnels/bgp4-tunnel-or-direct.mdx‎

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,38 @@
22
sidebar_position: 8
33
---
44

5+
import YouTube from 'react-youtube'
6+
57
# Bgp4 Tunnel or Direct
68

7-
پروتکل BGP4 (Border Gateway Protocol version 4) یک روش استاندارد برای ارتباط بین روترها است که بر روی پروتکل TCP پیاده‌سازی شده است.
9+
پروتکل BGP4 (Border Gateway Protocol version 4) یک روش استاندارد برای ارتباط بین
10+
روترها است که بر روی پروتکل TCP پیاده‌سازی شده است.
811

9-
علیرغم نام پیچیده، روش BGP4 بسیار ساده بوده و می‌توان آن را به عنوان یک ترنسپورت اضافه کرد.
12+
علیرغم نام پیچیده، روش BGP4 بسیار ساده بوده و می‌توان آن را به عنوان یک ترنسپورت
13+
اضافه کرد.
1014

1115
## ویژگی‌ها و مزایا
1216

1317
- پروتکل BGP دارای وضعیت (state) است که به صورت ساده شبیه‌سازی شده است.
14-
- برای استفاده از این روش، نیاز است تا در هر دو سرور ایران و خارج، WaterWall را اجرا کنید.
18+
- برای استفاده از این روش، نیاز است تا در هر دو سرور ایران و خارج، WaterWall را
19+
اجرا کنید.
1520
- این روش می‌تواند با ترکیب با نودهای معکوس (reverse) نیز پیاده‌سازی شود.
1621
- نیازی به رمزنگاری وجود ندارد.
1722
- هدف اصلی این روش، ایجاد تونل مستقیم پایدار و پرسرعت است.
18-
- انتظار می‌رود که این روش بتواند محدودیت‌های اعمال شده بر روی اتصالات مستقیم را برطرف کند.
23+
- انتظار می‌رود که این روش بتواند محدودیت‌های اعمال شده بر روی اتصالات مستقیم را
24+
برطرف کند.
1925

20-
:::caution توجه
21-
این روش جادویی نیست و قرار نیست آدرس IP مسدود شده را آزاد کند. در تست‌های اولیه، اتصال مستقیم به سرور با IP مسدود برقرار نشد، اما اتصال معکوس (reverse) موفقیت‌آمیز بود.
26+
:::caution توجه این روش جادویی نیست و قرار نیست آدرس IP مسدود شده را آزاد کند.
27+
در تست‌های اولیه، اتصال مستقیم به سرور با IP مسدود برقرار نشد، اما اتصال معکوس
28+
(reverse) موفقیت‌آمیز بود.
2229
:::
2330

31+
## ویدیوهای آموزشی
32+
33+
#### آموزش تانل BGP4 با هسته ی واتروال
34+
35+
<YouTube videoId="PsaIEsKcy_0" opts={{width: '100%'}} />
36+
2437
## فلوچارت ارتباط
2538

2639
```mermaid
@@ -105,17 +118,19 @@ flowchart LR;
105118

106119
:::tip نکات
107120

108-
به شدت توصیه می‌شود از پورت 179 مطابق با استاندارد BGP استفاده شود.
109-
این پیکربندی، پورت 443 سرور ایران را به پورت 443 سرور خارج متصل می‌کند و تک پورت است.
110-
تبدیل آن به حالت چند پورت (multi-port) بسیار ساده است.
111-
ارتباط بین ایران و خارج از طریق پورت 179 برقرار می‌شود، برخلاف روش‌های قبلی که پورت 443 پیشنهاد می‌شد.
121+
به شدت توصیه می‌شود از پورت 179 مطابق با استاندارد BGP استفاده شود. این
122+
پیکربندی، پورت 443 سرور ایران را به پورت 443 سرور خارج متصل می‌کند و تک پورت
123+
است. تبدیل آن به حالت چند پورت (multi-port) بسیار ساده است. ارتباط بین ایران و
124+
خارج از طریق پورت 179 برقرار می‌شود، برخلاف روش‌های قبلی که پورت 443 پیشنهاد
125+
می‌شد.
112126
:::
113127

114128
### دانشنامه
115129

116130
#### BGP (Border Gateway Protocol)
117131

118-
- پروتکل استاندارد برای تبادل اطلاعات مسیریابی بین سیستم‌های خودمختار (AS) در شبکه‌های کامپیوتری
132+
- پروتکل استاندارد برای تبادل اطلاعات مسیریابی بین سیستم‌های خودمختار (AS) در
133+
شبکه‌های کامپیوتری
119134
- نسخه 4 (BGPv4) در حال حاضر نسخه رایج مورد استفاده است
120135
- بر روی پروتکل TCP پورت 179 اجرا می‌شود
121136
- پروتکلی با وضعیت (stateful) است که اتصالات طولانی مدت برقرار می‌کند

‎docs/manually/tunnels/halfduplex-tunnel-or-direct.mdx‎

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,40 @@
22
sidebar_position: 10
33
---
44

5+
import YouTube from 'react-youtube'
6+
57
# HalfDuplex
68

79
HalfDuplex یک قابلیت است که هر اتصال (Connection) را به دو اتصال تبدیل می‌کند:
810

911
- یک اتصال فقط برای **ارسال** داده‌ها استفاده می‌شود.
1012
- اتصال دیگر فقط برای **دریافت** داده‌ها استفاده می‌شود.
1113

12-
در ابتدای برقراری هر کدام از این اتصالات، یک `Handshake` از نوع `TLS` انجام می‌شود، حتی اگر دامنه‌های متفاوتی داشته باشند.
14+
در ابتدای برقراری هر کدام از این اتصالات، یک `Handshake` از نوع `TLS` انجام
15+
می‌شود، حتی اگر دامنه‌های متفاوتی داشته باشند.
1316

1417
مزایای HalfDuplex:
1518

16-
1. **محدود کردن تحلیل ترافیک توسط فایروال:** چون داده‌ها روی هر اتصال به صورت یک طرفه منتقل می‌شوند.
17-
2. **قابل پیاده‌سازی در اتصالات مستقیم (نه فقط تونل):** می‌تواند از فیلتر شدن پیکربندی‌های مستقیم جلوگیری کند.
19+
1. **محدود کردن تحلیل ترافیک توسط فایروال:** چون داده‌ها روی هر اتصال به صورت یک
20+
طرفه منتقل می‌شوند.
21+
2. **قابل پیاده‌سازی در اتصالات مستقیم (نه فقط تونل):** می‌تواند از فیلتر شدن
22+
پیکربندی‌های مستقیم جلوگیری کند.
1823

1924
نکات:
2025

2126
- اتصالات با انتقال دوطرفه داده، معمولاً نشان‌دهنده وجود تونل هستند.
2227
- مثلاً در `HTTP/2` معمولی، ابتدا آپلود کم و سپس دانلود زیاد انجام می‌شود.
2328
- اما در `VPN` با `Multiplexing`، آپلود به طور مداوم روی اتصال انجام می‌شود.
24-
- این ویژگی برای تونل‌های معکوس (`Reverse Tunnel`) برای حفظ کیفیت سرویس ضروری است.
25-
- احتمالاً تونل‌های عادی `port-to-port` را نیز در برابر فیلتر شدن مقاوم می‌کند (هنوز تست نشده).
29+
- این ویژگی برای تونل‌های معکوس (`Reverse Tunnel`) برای حفظ کیفیت سرویس ضروری
30+
است.
31+
- احتمالاً تونل‌های عادی `port-to-port` را نیز در برابر فیلتر شدن مقاوم می‌کند
32+
(هنوز تست نشده).
33+
34+
## ویدیو های آموزشی
35+
36+
#### آموزش تانل زدن به روش waterwall بین سرور ایران و خارج: آموزش تانل v2ray
37+
38+
<YouTube videoId="PsaIEsKcy_0" opts={{width: '100%'}} />
2639

2740
## اجرای ساده چند پورت (Multi-port)
2841

@@ -113,14 +126,15 @@ HalfDuplex یک قابلیت است که هر اتصال (Connection) را به
113126

114127
## پیکربندی Reverse Reality با mux
115128

116-
پیکربندی Reverse Reality با استفاده از mux که توسط نویسنده برای کاربرانش استفاده می‌شود:
129+
پیکربندی Reverse Reality با استفاده از mux که توسط نویسنده برای کاربرانش استفاده
130+
می‌شود:
117131

118132
:::note فرضیات
119133

120134
- fake sni: sahab.ir
121135
- ip kharej: 2.2.2.2
122-
- password: passwd
123-
:::
136+
- password: passwd
137+
:::
124138

125139
```json title="سرور ایران"
126140
{
@@ -313,11 +327,14 @@ HalfDuplex یک قابلیت است که هر اتصال (Connection) را به
313327
}
314328
```
315329

316-
:::tip نکته مهم
317-
بدون توجه به تعداد هسته‌های سرور، تعداد Worker ها در سرور خارج را همیشه 4 برابر تعداد Worker های سرور ایران قرار دهید (حتی اگر 8 برابر). این کار سرعت را به میزان قابل توجهی بهبود می‌بخشد.
330+
:::tip نکته مهم بدون توجه به تعداد هسته‌های سرور، تعداد Worker ها در سرور خارج
331+
را همیشه 4 برابر تعداد Worker های سرور ایران قرار دهید (حتی اگر 8 برابر). این
332+
کار سرعت را به میزان قابل توجهی بهبود می‌بخشد.
333+
334+
دلیل آن ارتباطی به مصرف CPU ندارد، بلکه هر Worker یک اتصال مجزا ایجاد می‌کند و
335+
کاربران روی یک اتصال Multiplexed قرار نمی‌گیرند.
318336

319-
دلیل آن ارتباطی به مصرف CPU ندارد، بلکه هر Worker یک اتصال مجزا ایجاد می‌کند و کاربران روی یک اتصال Multiplexed قرار نمی‌گیرند.
337+
:::note توجه این نکته فقط برای Reverse Reality با mux صادق است. در سایر روش‌ها،
338+
بهتر است تعداد Worker ها صفر باشد.
320339

321-
:::note توجه
322-
این نکته فقط برای Reverse Reality با mux صادق است. در سایر روش‌ها، بهتر است تعداد Worker ها صفر باشد.
323340
:::

‎docs/manually/tunnels/http2-mux-grpc.mdx‎

Lines changed: 46 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,38 @@
22
sidebar_position: 4
33
---
44

5+
import YouTube from 'react-youtube'
6+
57
# Http2 Mux Grpc
68

7-
افزودن پروتکل Http2 به تونل، امکانات و ویژگی‌های جدیدی را در اختیار ما قرار می‌دهد، از جمله قابلیت‌های multiplexing (mux) و gRPC.
9+
افزودن پروتکل Http2 به تونل، امکانات و ویژگی‌های جدیدی را در اختیار ما قرار
10+
می‌دهد، از جمله قابلیت‌های multiplexing (mux) و gRPC.
11+
12+
با بهره‌گیری از gRPC، می‌توان ارتباط را هم از طریق سرویس Cloudflare عبور داد و
13+
هم به صورت مستقیم استفاده کرد، بدون تفاوت.
14+
15+
استفاده از mux نیز باعث کاهش تعداد اتصالات (connections) بین سرور داخل ایران و
16+
خارج می‌شود و همچنین زمان handshake را به میزان قابل توجهی بهبود می‌بخشد.
17+
18+
روش‌های تونل بدون mux، احتمال بروز اختلال یا حتی فیلتر شدن سرور خارجی شما را
19+
افزایش می‌دهند.
820

9-
با بهره‌گیری از gRPC، می‌توان ارتباط را هم از طریق سرویس Cloudflare عبور داد و هم به صورت مستقیم استفاده کرد، بدون تفاوت.
21+
بنابراین، به ویژه اگر تعداد زیادی کاربر روی یک سرور دارید، اکیداً توصیه می‌شود
22+
این قابلیت را در تونل‌های خود پیاده‌سازی کنید.
1023

11-
استفاده از mux نیز باعث کاهش تعداد اتصالات (connections) بین سرور داخل ایران و خارج می‌شود و همچنین زمان handshake را به میزان قابل توجهی بهبود می‌بخشد.
24+
هنگام استفاده از Http2، دیگر نیازی به preconnect نیست و تأثیر چندانی نخواهد
25+
داشت.
1226

13-
روش‌های تونل بدون mux، احتمال بروز اختلال یا حتی فیلتر شدن سرور خارجی شما را افزایش می‌دهند.
27+
## ویدیو های آموزشی
1428

15-
بنابراین، به ویژه اگر تعداد زیادی کاربر روی یک سرور دارید، اکیداً توصیه می‌شود این قابلیت را در تونل‌های خود پیاده‌سازی کنید.
29+
#### آموزش تانل MUX با هسته ی واتروال
1630

17-
هنگام استفاده از Http2، دیگر نیازی به preconnect نیست و تأثیر چندانی نخواهد داشت.
31+
<YouTube videoId="sn0-ABfIcx4" opts={{width: '100%'}} />
1832

1933
## پیاده‌سازی روی Tls tunnel
2034

21-
در این مثال، آدرس IP سرور خارجی `1.1.1.1` فرض شده است. اگر IP پشت دامنه قرار دارد، می‌توانید در بخش `node output`، به جای IP، نام دامنه را وارد کنید.
35+
در این مثال، آدرس IP سرور خارجی `1.1.1.1` فرض شده است. اگر IP پشت دامنه قرار
36+
دارد، می‌توانید در بخش `node output`، به جای IP، نام دامنه را وارد کنید.
2237

2338
## فلوچارت
2439

@@ -155,20 +170,34 @@ flowchart LR;
155170
}
156171
```
157172

158-
در این مثال، وجود node ProtoBuf الزامی نیست، اما با قرار دادن آن، ارتباط به عنوان gRPC شناخته می‌شود و می‌تواند از طریق CDN عبور کند.
173+
در این مثال، وجود node ProtoBuf الزامی نیست، اما با قرار دادن آن، ارتباط به
174+
عنوان gRPC شناخته می‌شود و می‌تواند از طریق CDN عبور کند.
159175

160-
:::info پارامتر concurrency
161-
همانطور که در پیکربندی مشاهده می‌کنید، در گره Http2Client پارامتری به نام concurrency وجود دارد.
176+
:::info پارامتر concurrency همانطور که در پیکربندی مشاهده می‌کنید، در گره
177+
Http2Client پارامتری به نام concurrency وجود دارد.
162178

163-
به صورت پیش‌فرض، مقدار آن 64 تنظیم شده است که بدین معناست به ازای هر 64 اتصال کاربر، یک اتصال به سرور خارجی برقرار می‌شود.
179+
به صورت پیش‌فرض، مقدار آن 64 تنظیم شده است که بدین معناست به ازای هر 64 اتصال
180+
کاربر، یک اتصال به سرور خارجی برقرار می‌شود.
164181

165-
اگر تعداد کاربران شما بسیار زیاد است (مثلاً بیش از 150 یا 200 نفر)، پیشنهاد می‌شود مقدار concurrency را دو برابر کنید و روی 128 تنظیم نمایید تا احتمال فیلتر شدن بر اساس تعداد اتصالات نیز نصف شود.
182+
اگر تعداد کاربران شما بسیار زیاد است (مثلاً بیش از 150 یا 200 نفر)، پیشنهاد
183+
می‌شود مقدار concurrency را دو برابر کنید و روی 128 تنظیم نمایید تا احتمال فیلتر
184+
شدن بر اساس تعداد اتصالات نیز نصف شود.
166185
:::
167186

168187
#### دانشنامه Http2 و gRPC در WaterWall
169188

170-
- Http2: نسخه بهبود یافته پروتکل HTTP که امکاناتی مانند multiplexing، فشرده‌سازی هدر، و Server Push را ارائه می‌دهد. استفاده از Http2 در تونل‌های WaterWall، کارایی و عملکرد را به میزان چشمگیری افزایش می‌دهد.
171-
- gRPC: چارچوبی برای ارتباطات بین سرویس‌ها که از Http2 برای انتقال داده بهره می‌برد. با استفاده از gRPC در پیکربندی تونل، امکان عبور ارتباط از سرویس‌های CDN مانند Cloudflare فراهم می‌شود.
172-
- Multiplexing (Mux): قابلیت Http2 برای برقراری چندین ارتباط همزمان روی یک اتصال واحد. در WaterWall، mux باعث کاهش تعداد اتصالات بین سرور داخل و خارج ایران شده و زمان handshake را بهبود می‌بخشد.
173-
- Concurrency: پارامتری در گره Http2Client که تعداد اتصالات کاربر به ازای هر اتصال به سرور خارجی را مشخص می‌کند. تنظیم مقدار مناسب برای concurrency بسته به تعداد کاربران، از اهمیت بالایی برخوردار است.
174-
- ProtoBuf (Protocol Buffers): فرمت سریال‌سازی داده توسعه یافته توسط Google که در gRPC به کار می‌رود. گره‌های ProtoBufClient و ProtoBufServer در پیکربندی WaterWall، نقش مهمی در شناسایی ارتباط به عنوان gRPC ایفا می‌کنند.
189+
- Http2: نسخه بهبود یافته پروتکل HTTP که امکاناتی مانند multiplexing، فشرده‌سازی
190+
هدر، و Server Push را ارائه می‌دهد. استفاده از Http2 در تونل‌های WaterWall،
191+
کارایی و عملکرد را به میزان چشمگیری افزایش می‌دهد.
192+
- gRPC: چارچوبی برای ارتباطات بین سرویس‌ها که از Http2 برای انتقال داده بهره
193+
می‌برد. با استفاده از gRPC در پیکربندی تونل، امکان عبور ارتباط از سرویس‌های
194+
CDN مانند Cloudflare فراهم می‌شود.
195+
- Multiplexing (Mux): قابلیت Http2 برای برقراری چندین ارتباط همزمان روی یک اتصال
196+
واحد. در WaterWall، mux باعث کاهش تعداد اتصالات بین سرور داخل و خارج ایران شده
197+
و زمان handshake را بهبود می‌بخشد.
198+
- Concurrency: پارامتری در گره Http2Client که تعداد اتصالات کاربر به ازای هر
199+
اتصال به سرور خارجی را مشخص می‌کند. تنظیم مقدار مناسب برای concurrency بسته به
200+
تعداد کاربران، از اهمیت بالایی برخوردار است.
201+
- ProtoBuf (Protocol Buffers): فرمت سریال‌سازی داده توسعه یافته توسط Google که
202+
در gRPC به کار می‌رود. گره‌های ProtoBufClient و ProtoBufServer در پیکربندی
203+
WaterWall، نقش مهمی در شناسایی ارتباط به عنوان gRPC ایفا می‌کنند.

0 commit comments

Comments
 (0)