ReverseTlsTunnel icon indicating copy to clipboard operation
ReverseTlsTunnel copied to clipboard

Proxy Protocol

Open lambdaxyzt opened this issue 1 year ago • 11 comments

سلام proxy protocol هم ساپورت میشه ؟

lambdaxyzt avatar Dec 11 '23 08:12 lambdaxyzt

یا میتونین یه راهنمایی ریز بکینین چطوری از پنل ایران بدیم سرور خارج ؟

lambdaxyzt avatar Dec 11 '23 12:12 lambdaxyzt

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

radkesvat avatar Dec 12 '23 12:12 radkesvat

سلام . ممنون بابت کمک و پاسخاتون . اولی رو بلدم با dockemodoor که همون مثل Port forward هست و دومی هم بلدم ولی مشکل دقیقا اینجاست که سرور ایران رو با vless + tcp خالی از طریق rtt وصل میکنم به خارج طبق همین چیزی که گفتین و خارج هم میفرسته به freedom ولی وقتی باهاش وصل میشم سایت youtube و insta رو باز نمیکنه مثلا ولی تلگرام یا گوگل یا duckduckgo رو خیلی سریع لود میکنه و بخاطر IP خارج هم نیست چون به روش قدیمی یعنی rtt مستقیم درخواست هارو از طریق تانل بفرسته به core خارج یا همون panel خارج وبسایت یوتیوب یا اینستاگرام باز میشه !

lambdaxyzt avatar Dec 12 '23 13:12 lambdaxyzt

و یادم دوم اینکه نظرتون راجب پیاده سازی proxy protocol چیه ؟ مشکل تک کاربره بودن رو حل میکنه و پیاده سازیش هم به نظر راحته ولی اون زیر که Multiplexing انجام میشه شاید کمی پیچیدش کنه

lambdaxyzt avatar Dec 12 '23 14:12 lambdaxyzt

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

درمورد پروکسی پروتکل ؛ 3 تا راه هست تا بتونیم محدودیت یوزر داشته باشیم یکی اینکه کلا پروتکل خودمو بدم بیرون و محدودیت ایپی یا سرعت روش ست کنیم که این مشکل کلاینت ios رو داره و به سادگی حل نمیشه( تقریبقا غیر ممکنه)

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

سومی هم اینه که دیتای هسته xray رو مانیتور کنم و پروتوکل وی لس رو مثلا پیدا کنم و روش لیمیت ایپی ست کنم ولی این فلکسبیلیتی رو خیلی کم میکنه چون من نمیدونم در نهایت چه پروتکلی میخواد از تونل رد شه و هر پروتکلی هم هدر خاص خودشو داره

radkesvat avatar Dec 12 '23 20:12 radkesvat

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

روش اول و سوم که قطعا جالب نیست و داستان داره ... روی روش دوم کمی عجیب بود فکر کنم نفهمیدم یا شما راه حل بدی در نظر گرفتید شما بلدترید ولی جسارتا من یکسری توضیح بدم نظرتون رو بدونم چون به نظرم اینجوری میشه که اولا proxy protocol باید یه string خاص یا byte خاص در ابتدای اتصال سوکت tcp باید فرستاده بشه همین ... xray ساپورت میکنه ... توی nodejs پیاده سازی کرده بودم و کارهم میکرد ... حالا حدسم اینه که به ازای هر کانکشن که به سمت rtt میاد شما اینارو mux میکنید و در انتهای تونل demux پس فکر کنم بشه ایپی فرستنده رو در ابتدای mux کنارش قرار داد و توی demux شما اون tcp connection هارو که از تونل دریافت کردید و باز کردید و میخواید بفرستید سمت سرور قبل اینکه هر دیتایی توی socket بفرستید اون byte خاص رو با ip مبدا که اول mux گذاشتید محاسبه کنید و به سرور بفرستید بعد دیتاهای دیگه و سمت سرور هم توی کانفیگ accept proxy protocol رو قرار میدیم اینجوری توی لاگ ها هم برای هر کاربر آدرس IP مبدا اصلی رو خواهد انداخت و هسته هم جوابش رو به جایی که ازش اومده پس میده

lambdaxyzt avatar Dec 12 '23 21:12 lambdaxyzt

ببینید بعد از اتصال tcp ایپی فرستاده نمیشه ؛ ایپی یه لایه پایین تره و هسته ایکس ری یا هر برنامه دیگه ای ایپی رو از طریق getsocketopt از سیستم عامل میخونه ؛ واسه همین هست وگر نه گزاشتنش توی پکت tcp کاری نداره

radkesvat avatar Dec 13 '23 13:12 radkesvat

جسارتا میدونید ProxyProtocol چجوری کار میکنه و چحوری باید فرستاد ؟ باید دقیقا بعد اتصال tcp فرستاد ... یکسری بایت خاص رو درسته ؟

When the load balancer proxies a TCP connection, it overwrites the client’s source IP address with its own when communicating with the backend server. The Proxy Protocol adds a header to a TCP connection to preserve the client’s IP address. This method solves the lost-client-IP problem for any application-layer protocol that transmits its messages over TCP/IP. https://www.haproxy.com/documentation/haproxy-configuration-tutorials/client-ip-preservation/enable-proxy-protocol/

مثل header : X-Forwarded-For توی http هست

lambdaxyzt avatar Dec 14 '23 00:12 lambdaxyzt

جسارتا میدونید ProxyProtocol چجوری کار میکنه و چحوری باید فرستاد ؟ باید دقیقا بعد اتصال tcp فرستاد ... یکسری بایت خاص رو درسته ؟

When the load balancer proxies a TCP connection, it overwrites the client’s source IP address with its own when communicating with the backend server. The Proxy Protocol adds a header to a TCP connection to preserve the client’s IP address. This method solves the lost-client-IP problem for any application-layer protocol that transmits its messages over TCP/IP. https://www.haproxy.com/documentation/haproxy-configuration-tutorials/client-ip-preservation/enable-proxy-protocol/

مثل header : X-Forwarded-For توی http هست

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

lambdaxyzt avatar Dec 24 '23 06:12 lambdaxyzt

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

radkesvat avatar Dec 24 '23 11:12 radkesvat

به به خیلی هم عالی متشکر

lambdaxyzt avatar Dec 25 '23 13:12 lambdaxyzt