-
Notifications
You must be signed in to change notification settings - Fork 51
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
31 changed files
with
4,286 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Oops, something went wrong.