Skip to content

Commit

Permalink
update docs
Browse files Browse the repository at this point in the history
  • Loading branch information
radkesvat committed Jun 28, 2024
1 parent f4da742 commit a1774bc
Show file tree
Hide file tree
Showing 31 changed files with 4,286 additions and 2 deletions.
70 changes: 70 additions & 0 deletions docs/Begin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<div dir="rtl">

این صفحه اول و شروع آموزش استفاده از waterwall هست

واتروال یه هسته هست؛ هسته یعنی چی؟ در کل یعنی اینکه این برنامه فقط برای یه روش تونل خاص نیست و روش های زیادی داره که می‌تونید
انتخاب کنید و اجرا کنید

درکل تمرکز اصلی این پروژه اول این بوده که بشه باهاش یه تونل خوب اجرا کرد

ولی بعد از تونل هدف این بوده که بشه باهاش کانفیگ مستقیم هم ساخت که باهاش فایروال ایران رو برسی کنیم و هرچی دستگیرمون شد روش اجرا کنیم تا
جلوی فیلتر شدنش رو هم بگیریم، و با اخرین تغییرات فایروال ایران پیش بریم

برای اجرای هسته نیازه که ۲ تا فایل json بزاریم کنار فایل اجرایی waterwall

فایل اول باید اسمش باشه core.json

توی این فایل تنظیماتی مثل لاگ ها و تعداد ترد ها قرار می‌دیم
مثلا می‌گیم کدوم لاگ ها رو می‌خوایم ببینیم و تا چه حد،

آیا لاگ شبکه رو می‌خوام ؟ آیا لاگ dns رو می‌خوام؟ و غیره

همچنین می‌شه لاگ هر بخش توی فایل جدا ذخیره بشه و حتی توی کنسول هم نوشته بشه
و تنظیمات دیگه هم از جمله تعداد ترد های برنامه هست که اگه تنظیم نکنید به صورت پیشفرض برابر با تعداد هسته های cpu سرور هست

توضیحات کامل و مثال این فایل در [این لینک](https://github.com/radkesvat/WaterWall/wiki/2-%E2%80%90-%D9%81%D8%A7%DB%8C%D9%84-core.json) هست که در نهایت فایل core.json رو با تنظیمات دلخواه ؛ قرار بدید

---

سپس یه فایل json بعدی داریم به اسم config.json
که البته اسم این فایل رو شما توی core.json گفتید پس اسمش رو هرچی خواستید می‌تونید بزارید

این فایل درحقیقت کانفیگ اصلی هست که توضیح میده چه تونلی باید اجرا بشه و پروتکل چی هست
برای ساخت این فایل باید [این صفحه](https://github.com/radkesvat/WaterWall/wiki/3-%E2%80%90-%D9%81%D8%A7%DB%8C%D9%84-config.json) رو بخونید و مثال هاش هم که میشه همون روش های تونل، هرکودوم با اسم خودشون page دارن که توی منوی گیت هاب می‌تونید ببینید

توضیح کوتاه این فایل اینجوریه که، شما پروتکلی که می‌خواید اجرا بشه رو به صورت protocol stack توصیف می‌کنید
و بعد برنامه از اون به عنوان دستورالعمل استفاده میکنه برای ساخت پروتکل ؛ یه جورایی شبیه کد نویسی هم هست و میشه باهاش بی نهایت شکل مختلف پروتوکل درست کرد
و اجرا کرد ولی خوب برای اینکار نیاز به اطلاعات عمومی از شبکه و پروتوکل ها هم هست؛ که نیاز نیست اصلا شما درگیر این موضوعات بشید
و برای تمام روش های مطرح که نیازه بدونید فایل و توضیحاتش قرار داده میشه در wiki


---

اجرای عادی برنامه هم اینطوریه

</div>

```sh
./Waterwall
```

<div dir="rtl">


که پارامتر خاصی برای ورودی نمی‌گیره چون اطلاعات لازم رو از فایل core.json بدست میاره

و احتمال زیاد هم می‌دونید ؛ برنامه هایی که ران می‌کنید به این صورت ؛ بعد از بستن ssh برنامه هم بسته میشه

برای اینکه این اتفاق نیفته راه های مختلف و ساده ای هستن مثل tmux, nohup, screen,service و غیره

برای مثال می‌توانید اینجوری اجرا کنید تا برنامه باقی بمونه در پس زمینه

</div>

```sh
nohup ./Waterwall &
```
<div dir="rtl">


</div>
127 changes: 127 additions & 0 deletions docs/Bgp4-Tunnel-or-Direct.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
<div dir="rtl">

پروتکل bgp4 که بر اساس استانداردش روی tcp سوار شده ؛ روش ارتباط روتر ها با هم هستش

روش Bg4 بر خلاف اسمش خیلی ساده هست ؛ یه ترنسپورته که میتونید اضافه کنید

پرتوکل Bgp دارای state هست که فعلا به شکل ساده شبیه سازی شده

شما نیاز دارید هم در سرور ایران و هم خارج واتروال رو اجرا کنید

این روش جادویی نیست ؛ قرار نیست ایپی ای که اتصال بهش بلاک شده رو انبلاک کنه البته تست کردنش خالی از لطف نیست ولی خوب روی یه هتزنر که ایپی اش کامل کثیف بود و کلا هیچ روش مستقیمی وصل نمیشد بهش
تست کردیم و مستقیم وصل نشد ؛‌ ریورس ولی چرا

این رو میشه به راحتی ریورس هم زد با ترکیب با نود های ریورس

بر روی این روش نیازی به رمز نگاری نیست

مهم ترین هدفی که من انتظار دارم اینه که این روش بتونه پایدار بمونه و باهاش تونل مستقیم بزنیم ؛‌همچنین این روش سبک هست و پرسرعت

البته انتظار میره ازش که بتونه محدویت هایی که روی مستقیم ها میزارن رو رفع کنه چون کانکشن اش کلا طور دیگه ای هست و tls نداره و هدر خاص خودشو داره کاملا

فعلا چون خودم کامل تست نکردم دیدگاه دقیقی ندارم و هرچی هم که گفتم روی احتمالات بود همونطور که خوندین ؛‌برای تست اش به روش مستقیم من این کانفیگ رو استفاده میکنم


# سرور ایران

ایپی خارج 1.1.1.1 فرض شده و همچنین پورت سرور خارج به شدت پیشناهاد میشه طبق استنادارد bgp 179 باشه

</div>


```json

{
"name": "bgp_client",
"nodes": [
{
"name": "input",
"type": "TcpListener",
"settings": {
"address": "0.0.0.0",
"port": 443,
"nodelay": true
},
"next": "bgp_client"
},
{
"name": "bgp_client",
"type": "Bgp4Client",
"settings": {},
"next": "output"
},
{
"name": "output",
"type": "TcpConnector",
"settings": {
"nodelay": true,
"address":"1.1.1.1",
"port":179
}
}
]
}
```

<div dir="rtl">

# سرور خارج

</div>

```json
{
"name": "bgp_server",
"nodes": [
{
"name": "input",
"type": "TcpListener",
"settings": {
"address": "0.0.0.0",
"port": 179,
"nodelay": true
},
"next": "bgp_server"
},
{
"name":"bgp_server",
"type":"Bgp4Server",
"settings":{},
"next":"output"
},

{
"name": "output",
"type": "TcpConnector",
"settings": {
"nodelay": true,
"address": "127.0.0.1",
"port": 443
}
}

]
}
```

<div dir="rtl">

این کانفیگ پورت 443 سرور ایران رو وصل میکنه به پورت ۴۴۳ سرور خارج و تک پورت هست ؛ مالتی پورت کردنش اصلا کاری نداره و فکر کنم همه میدونن چطوری ؛ مثالش هم تو ویکی ها گفتم قبلا که چه تغییری بدید

همچنین دقت کنید که bgp روی پورت ۱۷۹ هست و ارتباط ایران و خارج از طریق پورت ۱۷۹ شکل گرفته

برخلاف روش های قبل که میگفتیم ۴۴۳ پورت بهتریه ؛ اینجا ۱۷۹ پورت مد نظر هست


</div>











Loading

0 comments on commit a1774bc

Please sign in to comment.