Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
lostsoul6 opened this issue Jun 25, 2024 · 19 comments
Labels
question Further information is requested

Comments

@lostsoul6
Copy link

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

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

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

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

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

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

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

@Alireza78na
Copy link

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

@radkesvat
Copy link
Owner

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

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

@Alireza78na
Copy link

Alireza78na commented Jun 26, 2024

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

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

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

@Saleh-Mumtaz Saleh-Mumtaz added the question Further information is requested label Jun 26, 2024
@lostsoul6
Copy link
Author

lostsoul6 commented Jun 26, 2024

درود جناب @radkesvat

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

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

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

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

@radkesvat
Copy link
Owner

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

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

@lostsoul6
Copy link
Author

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

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

@radkesvat
Copy link
Owner

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

@Alireza78na
Copy link

Alireza78na commented Jun 27, 2024

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

@radkesvat
Copy link
Owner

سرور خارج

{
    "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
Copy link

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

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

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

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

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

@radkesvat
Copy link
Owner

radkesvat commented Jun 28, 2024

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

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

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

@Saleh-Mumtaz Saleh-Mumtaz changed the title ایران اکسس شدن سرورها استفاده از ماکس برای جلوگیری از ایران اکسس شدن + نمونه Jun 28, 2024
@Saleh-Mumtaz Saleh-Mumtaz pinned this issue Jun 28, 2024
@lostsoul6
Copy link
Author

@radkesvat درود مهندس

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

@Saleh-Mumtaz Saleh-Mumtaz reopened this Jun 28, 2024
@Saleh-Mumtaz
Copy link
Collaborator

@radkesvat درود مهندس

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

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

@lostsoul6
Copy link
Author

@Saleh-Mumtaz

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

@Alireza78na
Copy link

Alireza78na commented Jun 28, 2024

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

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

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

@mtashani
Copy link

"port": "dest_context->port"
            }

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

@Alireza78na
Copy link

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

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

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

@mtashani
Copy link

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

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

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

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

@hamedhdr
Copy link

سرور خارج

{
    "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 رو در کانفیگ سرو خارج عوض کردین ؛‌ توی این فایل هم یک بار هست که باید با سرور خارج یکی بزارید و تمام

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

سلام به نظر میاد که کانفیگ خارج و ایران در داکیومنت اشتباها جای همدیگه نوشته شدن.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

7 participants
@mtashani @Saleh-Mumtaz @hamedhdr @lostsoul6 @radkesvat @Alireza78na and others