radkesvat / WaterWall

WaterWall is an unidentifiable mechanism for bypassing GFW. This includes the new trojan protocol, explains its underlying ideas, and provides a guide to it.
Mozilla Public License 2.0
206 stars 30 forks source link

استفاده از ماکس برای جلوگیری از ایران اکسس شدن + نمونه #64

Open lostsoul6 opened 5 days ago

lostsoul6 commented 5 days ago

درود وقت بخیر @radkesvat

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

شما تجربه این مورد رو داشتید ؟

طبق تحقیقی که ما کردیم ، این اکسس شدن به حجم ترافیک ارتباط ندارد چون سرورهای کم ترافیک هم خورده بودن . به نوع تانل هم ربط ندارد چون تانل های مختلفی از جمله 6to4 و reverse و rat hole بین اکسسی ها بوده .

شما ایده ای دارید که چطور میشه مانع این قضیه شد ؟ کدام تانل هست که تعداد کانکشن کمتری در لحظه از سرور خارج به سمت ایران ارسال کنه ؟ آیا میشه کاری کرد تعداد کانکشن هایی که در کار کاربران با vpn ایجاد میشه کمتر بشه ؟

من نگاه کردم بعضا به ازای یک کاربر که متصل هست ، حدود 300-400 کانکشن روی سرور میوفته . اگر 100 کاربر باشن حدود 40 هزار کانکشن میشه . چطور میشه محدودترش کرد ؟ مثلا یک سرویس مثل سیسکو به ازای هر کاربر متصل ، خیلی کانکشن های کمتری ایجاد میکنه .

ممنون میشم یه راهنمایی کنید هر هفته شنبه سرور ایران ما اکسس میشه و خیلی اذیت میشیم هر بار عوض کنیم .

Alireza78na commented 5 days ago

دقیقا همینطوره و متاسفانه دیگه خیلی جاها آیپی هم تغییر نمیدن ! حتی با پررویی تهدید میکنن که اگه یکبار دیگه آیپیتون ایران اکسس بشه بدون پرداخت خسارت تمام اشتراک هاتونو لغو میکنیم. روش های مستقیمم انقد دردسر و مشکلات دارن که خیلی نمیشه بهش فکر کرد

radkesvat commented 5 days ago

برای اینکه کانکشن به سرور خارج کم بشه میتونید از ماکس استفاده کنید که این قابلیت در نود http2 هست همچنین میتونید halfduplex هم روش اضافه کنید این ها خیلی احتمال ایران اکسس شدن رو کاهش میدن ، اگه مشتری خیلی زیاد دارید میتونید بعلاوه این دو مورد، در نود http2client پارامتر concurrency رو بزارید روی ۱۲۸ تا حتی بیشتر ۲۵۶ که یعنی ۲۵۶ تا کانکشن میرن داخل ۱ کانکشن و بعدش کانکشن جدید باز میشه

من روی حالت reverse reality half duplex هست سرورام و هیچقوت مشکل نخوردم، sni هم گذاشتم سایت یه بیمارستان داخل کشور، درکل تغییر sni حتما تست کنید

Alireza78na commented 5 days ago

برای اینکه کانکشن به سرور خارج کم بشه میتونید از ماکس استفاده کنید که این قابلیت در نود http2 هست همچنین میتونید halfduplex هم روش اضافه کنید این ها خیلی احتمال ایران اکسس شدن رو کاهش میدن ، اگه مشتری خیلی زیاد دارید میتونید بعلاوه این دو مورد، در نود http2client پارامتر concurrency رو بزارید روی ۱۲۸ تا حتی بیشتر ۲۵۶ که یعنی ۲۵۶ تا کانکشن میرن داخل ۱ کانکشن و بعدش کانکشن جدید باز میشه

من روی حالت reverse reality half duplex هست سرورام و هیچقوت مشکل نخوردم، sni هم گذاشتم سایت یه بیمارستان داخل کشور، درکل تغییر sni حتما تست کنید

خیلی ممنونم بابت توضیحاتتون. فقط یه درخواستی داشتم ازتون ، اگه امکان داره یه کانفیگ نمونه با شرایطی که گفتید بزارید اینجا چون با اینکه تمام توضیحات و داکیومنت ها رو خوندم، ولی راستش هنوز واسم سخته کانفیگ کردنش و احتمال اشتباه واسم خیلی زیاده. لطفا یه کانفیگ نمونه واسه حالت تک پورت h2 grpc tls با شرایطی که گفتید واسم بفرستید. اینجوری یه کمکی به ما میشه سریعتر و بدون مشکل اجراش کنیم.

lostsoul6 commented 5 days ago

درود جناب @radkesvat

اگر امکانش هست یک کانفیگ نمونه تک پورت یا مالتی پورت برای ترکیب http2 و halfduplex و همچنین concurrency اضافه کنید . یه سوال هم در مورد mux داشتم . داخل خود xray بخش outbound ما یک کانفیگ به شرح زیر داریم :

 {
    "mux": {
      "enabled": true,
      "concurrency": 16
    },

این mux کارش چی هست ؟ همونی هست که شما فرمودید ؟ یعنی به ازای هر 16 کانکشن ، یک کانکشن باز میکنه؟ تشکر

ادیت : راستی یک سوال در مورد مصرف ترافیک روش ریلیتی ریورس . توی تانل های عادی به ازای هر 1 گیگ مصرف کاربر ، سرور 1 گیگ دانلود میکنه و 1 گیگ آپلود . خواستم ببینم توی روش ریورس هم همینه مصرف حجم ؟ من شنیده بودم خیلی بیشتر هست و تقریبا دو برابر تانل های عادی مصرف داره . تشکر

radkesvat commented 4 days ago

سلام من یادم رفت این ایشیو رو ؛ بله تعریفتون از mux درسته

مثال کانفیگی که میگم دقیقا توی صفحه ویکی halfduplex اومده توی صفحه reverse reality هم اومده ولی با همون halfduplex پیشناهاد میکنم استفاده کنید

lostsoul6 commented 3 days ago

ممنون مهندس @radkesvat بابت پاسختون

در مورد کانفیگ halfduplex بله دیدم و انجام دادم اوکی هست . فقط در مورد mux خود ویتوری یه سوال دیگه داشتم . توی پنل x-ui بخش overview ما یک بخش داریم که کانکشن های tcp سرور رو نشون میده که عدد 6000 هست . زمانی که mux رو داخل پنل ایران بخش outbound بزاریم 100 مثلا ، یعنی تعداد کانکشن هایی که از سرور ایران ما به سمت خارج میره میشه 6000 تقسیم بر 100 یعنی 60 تا ؟ و اگر بله یعنی پاسخ پنل خارخ هم به ما 60 کانکشن خواهد بود ؟ یا باید روی پنل خارج هم کاری کنیم که اون هم درخواست ها رو به صورت mux شده بفرسته سمت پنل ایران ؟ تشکر

radkesvat commented 3 days ago

درسته، روی پنل خارج لازم نیست انجام بشه ، این نسبت یک به ۱۰۰ ، عددشو میتونید توی نود http2client-> concurrency ست کنید حتی ۲۰۰ بزارید ولی خوب دیفالت ۶۴ هست

Alireza78na commented 3 days ago

@radkesvat عذرخواهی میکنم ، امکانش هست یه کانفیگ نمونه واسه حالت h2 grpc tls با فعال بودن مواردی مثل halfduplexو mux و concurrency بزاربد؟ چندین بار تلاش کردم طبق داکیومنت پیش برم ولی متاسفانه خیلی واسم گنگه و هربار نمیدونم پارامتر ها رو دقیقا کجا و چطور تنظیم کنم که درست کار کنه. اگه از حوصلتون خارج نبود یه کمی بهم بکنید. ممنون

radkesvat commented 3 days ago

سرور خارج


{
    "name": "reverse_reality_grpc_client_hd_multiport_client",
    "nodes": [
        {
            "name": "outbound_to_core",
            "type": "TcpConnector",
            "settings": {
                "nodelay": true,
                "address": "127.0.0.1",
                "port": "dest_context->port"
            }
        },
        {
            "name": "header",
            "type": "HeaderServer",
            "settings": {
                "override": "dest_context->port"
            },
            "next": "outbound_to_core"
        },
        {
            "name": "bridge1",
            "type": "Bridge",
            "settings": {
                "pair": "bridge2"
            },
            "next": "header"
        },
        {
            "name": "bridge2",
            "type": "Bridge",
            "settings": {
                "pair": "bridge1"
            },
            "next": "reverse_client"
        },
        {
            "name": "reverse_client",
            "type": "ReverseClient",
            "settings": {
                "minimum-unused": 16
            },
            "next": "pbclient"
        },
        {
            "name": "pbclient",
            "type": "ProtoBufClient",
            "settings": {},
            "next": "h2client"
        },
        {
            "name": "h2client",
            "type": "Http2Client",
            "settings": {
                "host": "sahab.ir",
                "port": 443,
                "path": "/",
                "content-type": "application/grpc",
                "concurrency": 64
            },
            "next": "halfc"
        },
        {
            "name": "halfc",
            "type": "HalfDuplexClient",
            "next": "reality_client"
        },

        {
            "name": "reality_client",
            "type": "RealityClient",
            "settings": {
                "sni": "sahab.ir",
                "password": "passwd"
            },
            "next": "outbound_to_iran"
        },
        {
            "name": "outbound_to_iran",
            "type": "TcpConnector",
            "settings": {
                "nodelay": true,
                "address": "1.1.1.1",
                "port": 443
            }
        }
    ]
}

همونطور که میبینید یه عدد 64 داخل این فایل json هست که پشتش هم نوشته concurrency و این همون نسبت ماکس هست که تعریفشو خودتون گفتید

توی این کانفیگ دامنه sahab.ir هست که ۲ بار تکرار شده ؛ این حکم Sni هست و یه سایت ایرانی باید بزارید مثلا به جاش میتونید بزارید reymit.ir یا cafebazaar.ir و کلا هر سایت ایرانی که میشناسید میتونید تست کنید ولی خود sahab.ir نباشه بهتره چون دوستان گفتن این تمیز نیست

همچنین توی این کانفیگ ایپی 1.1.1.1 هست که آخر کانفیگ میتونید ببینید ؛‌ باید به جاش ایپی سرور ایران رو بزارید ؛ میتونید دامنه هم بزارید اگه پشت دامنه ایپی سرور ایران هست و پروکسی کلود روی دامنه روشن نیست

در سرور ایران هم این کانفیگ رو باید اجرا کنید


{
    "name": "reverse_reality_grpc_hd_multiport_server",
    "nodes": [
        {
            "name": "users_inbound",
            "type": "TcpListener",
            "settings": {
                "address": "0.0.0.0",
                "port": [23,65535],
                "nodelay": true
            },
            "next": "header"
        },
        {
            "name": "header",
            "type": "HeaderClient",
            "settings": {
                "data": "src_context->port"
            },
            "next": "bridge2"
        },
        {
            "name": "bridge2",
            "type": "Bridge",
            "settings": {
                "pair": "bridge1"
            }
        },
        {
            "name": "bridge1",
            "type": "Bridge",
            "settings": {
                "pair": "bridge2"
            }
        },
        {
            "name": "reverse_server",
            "type": "ReverseServer",
            "settings": {},
            "next": "bridge1"
        },
        {
            "name": "pbserver",
            "type": "ProtoBufServer",
            "settings": {},
            "next": "reverse_server"
        },
        {
            "name": "h2server",
            "type": "Http2Server",
            "settings": {},
            "next": "pbserver"
        },
        {
            "name": "halfs",
            "type": "HalfDuplexServer",
            "settings": {},
            "next": "h2server"
        },
        {
            "name": "reality_server",
            "type": "RealityServer",
            "settings": {
                "destination": "reality_dest",
                "password": "passwd"
            },
            "next": "halfs"
        },
        {
            "name": "kharej_inbound",
            "type": "TcpListener",
            "settings": {
                "address": "0.0.0.0",
                "port": 443,
                "nodelay": true,
                "whitelist": [
                    "2.2.2.2/32"
                ]
            },
            "next": "reality_server"
        },
        {
            "name": "reality_dest",
            "type": "TcpConnector",
            "settings": {
                "nodelay": true,
                "address": "sahab.ir",
                "port": 443
            }
        }
    ]
}

توی این فایل باید به جای 2.2.2.2 ؛‌ دقیقا ایپی ورژن ۴ سرور خارج رو قرار بدید ؛ همچنین اگه sahab.ir رو در کانفیگ سرو خارج عوض کردین ؛‌ توی این فایل هم یک بار هست که باید با سرور خارج یکی بزارید و تمام

این کانفیگ مالتی پورته و تمام پورت های سرور ایران به همون پورت سرور خارج وصل میشن ؛ شبیه همون اولین روش تونل ایپی تیبل ولی خوب نباید فیلتر یا مشکل بخوره (حداقل من تا الان نخوردم باهاش)

Alireza78na commented 3 days ago

خیلی خیلی ممنونم از لطفتون

2 تا سوال هم داشتم ، احتمالا سوال بقیه ی دوستان هم باشه:

اول اینکه کلا امکان استفاده از IPv6 تو این روش وجود نداره ( درصورتی که هر دو سرور ساپورتش کنن ) ؟ چون تاکید کردید ipv4 باشه پرسیدم.

و اینکه باتوجه Reverse tunnel بودن، ترافیک سرور ایران 2 برابر تانل عادی حساب میشه؟ ( چون مثلا روش ریورس داخل پنل x-ui باعث میشد مقدار ترافیک 2 برابر حساب شه )

پیشاپیش تشکر میکنم از وقتی بابت Waterwall و Issue ها میزارید.

radkesvat commented 3 days ago

خیر دو برابر حساب نمیشه ترافیک ؛ مثل همه تانل ها هست ؛ وقتی کاربر یک گیگ دانلود میکنه ؛ سرور ایران یک گیگ دانلود میکنه از سرور خارج به خودش و یک گیگ آپلود میکنه از خودش به گوشی موبایل کاربر ؛ در نتیجه یک گیگ اپلود و یک گیگ دانلود رخ داد برای سرور ایران ؛ و این مثل تمام روش های تونل دیگه هست

اگه جایی که ازش سرور ایران میخرید آپلود رایگان نیست اونوقت ازتون پول اون ۱ گیگ اپلود هم میگیره ( تغریبا همه جا الان اپلود رایگان هست)

درمورد ipv6 قابل استفاده هست ولی فعلا مولتی پورت کار نمیکنه

lostsoul6 commented 2 days ago

@radkesvat درود مهندس

ما الان ایران اکسس شدیم با تانل ریورس ریلیتی . البته تازه دیروز زدیم تانل رو و قبلش چیز دیگه ای بود . شما ایران اکسس نشدید امروز رو سروراتون ؟

Saleh-Mumtaz commented 2 days ago

@radkesvat درود مهندس

ما الان ایران اکسس شدیم با تانل ریورس ریلیتی . البته تازه دیروز زدیم تانل رو و قبلش چیز دیگه ای بود . شما ایران اکسس نشدید امروز رو سروراتون ؟

الله اکبر دیتاسنتری که استفاده میکنید چی هست؟

lostsoul6 commented 2 days ago

@Saleh-Mumtaz

پیشگامان . میگم شاید از قبل مانیتور میکردن نوع تانل رو . چون قبلش چیز دیگه بوده چند ساعته waterwall زدیم . و اینکه کانفیگ ها vless tcp با هدر بوده . خود کانفیگ میتونه مشکل ساز باشه ؟ مثلا vmess باشه امنیتش بیشتره ؟ رمز نگاری داره؟

Alireza78na commented 2 days ago

@radkesvat درود مهندس ما الان ایران اکسس شدیم با تانل ریورس ریلیتی . البته تازه دیروز زدیم تانل رو و قبلش چیز دیگه ای بود . شما ایران اکسس نشدید امروز رو سروراتون ؟

الله اکبر دیتاسنتری که استفاده میکنید چی هست؟

بی زحمت میشه این کانفیگ نمونه که مهندس گذاشتن حالت تک پورتش رو هم بزارید؟ دقیقا همون کانفیگ اما با حالت تک پورت چون میخوام با IPv6 استفاده کنم

mtashani commented 2 days ago
"port": "dest_context->port"
            }

سلام فکر میکنم برای تک پورت کردن باید پورت اولین نود هر دو فایل json رو به همون پورت تغییر بدی

Alireza78na commented 2 days ago

لام فکر میکنم برای تک پورت کردن باید پورت اولین نود هر دو فایل json رو به همون پورت تغییر بدی

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

به هرحال خیلی ممنونم که جواب میدید و کمک میکنید.

mtashani commented 2 days ago

لام فکر میکنم برای تک پورت کردن باید پورت اولین نود هر دو فایل json رو به همون پورت تغییر بدی

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

به هرحال خیلی ممنونم که جواب میدید و کمک میکنید.

من سعی کردم شبیه تانل های دیگه براش منو بسازم ولی خب یکم بابت متفاوت بودن نودها سخت شد بیخیال شدم