نحوه ساخت و راه‌اندازی پروتکل MTProto تلگرام، بر روی سرور ابونتو

how to create MTProto server

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

اصلا این پروتکل MTProto چیه؟

پروتکل امنیتی MTProto مخفف Mobile Telegram Protocol هست و تلگرام حدودا یک سال پیش آن را معرفی کرد. در حال حاضر که این مطلب در حال نگارش هست، نسخه دوم این پروتکل ارائه شده و تلگرام در حال توسعه آن است.

معرفی این پروتکل باعث شد که هر شخص یا سازمانی بتواند به راحتی یک سرور MTProto راه‌اندازی کند و اگر تمایل داشت به صورت رایگان در اختیار سایرین قرار دهد.

البته در نظر داشته باشید که IP این سرورها به راحتی فیلتر می‌شوند، سعی کنید بیشتر استفاده شخصی یا شرکتی داشته باشید. تلگرام برای دوستانی هم که به صورت رایگان پروکسی‌های MTProto خود را در اختیار سایرین قرار می‌دهند قابلیتی گذاشته است که صاحبان سرور می‌توانند در صورت نیاز، یک کانال را در تلگرام هر شخص که از سرور آن استفاده کرده، تبلیغ کنند.

پروتکل MTProto وظیفه انتقال پیام‌های رمزنگاری شده به صورت Client to Client رو در یک ارتباط کاربر به کاربر به عهده دارد. در این صورت پیام‌ها فقط برای فرستنده و گیرنده پیام، قابل رمزگشایی و مشاهده است و حتی سرور هم نمی‌تواند پیام‌ها را رمزگشایی کند. پس خیال‌تان از بابت این پروتکل راحت! من میرم سراغ آموزش.

پیش‌نیازهای راه‌اندازی سرور پروکسی MTProto

  • اول از همه یک وی‌پی‌اس خارج تهیه کنید. با رم ۵۱۲ مگابایت هم کار شما انجام می شود و نیاز نیست خیلی هزینه کنید.
  • سیستم عامل ابونتو ورژن ۱۶ به بالا باشه بهتره. این مورد هم هنگام خرید وی‌پی‌اس میشه مشخص کرد و به صورت خودکار نصب میشه روی وی‌پی‌اس. (علت اینکه روی ویندوز سرور این پروتکل رو راه‌اندازی نکردم بخاطر پایدار نبودن آن بود. و من تجربه بهتری روی لینوکس برای این مورد داشتم و ویندوز منابع زیادی رو مصرف می‌کرد. برا همین از آموزش رو سیستم عامل ویندوز صرف نظر می‌کنم).
  • نرم‌افزار Bitvise SSH Client برای اتصال به سرور. این نرم‌افزار فوق‌العادس. (برنامه‌ی دیگه‌ای مدنظرتون بود برای اتصال به سرور هم مشکلی نیست).
  • نیم ساعت زمان برای راه‌اندازی سرور ام‌تی‌پروتو 🙂

نحوه راه‌اندازی پروکسی MTProto در سیستم عامل ابونتو

  • ابتدا با برنامه Bitvise یا هر برنامه‌ای که باهاش راحت هستید به سرور وصل بشید.
  • نصب کتابخانه‌های OpenSSl و Zlib

به محیط خط فرمان لینوکس سرورتون وارد بشید.

برای کارمون نیاز به نصب این دو کتابخانه داریم که در ابونتو یا دبیان از دستور زیر استفاده می‌کنیم:

apt install git curl build-essential libssl-dev zlib1g-dev

نصب کتابخانه‌های OpenSSl و Zlib در ابونتو

برای ادامه “Y” را تایپ و اینتر را بزنید.

اگر هم از CentOS یا RHEL استفاده می‌کنید، دستور زیر را وارد کنید:

yum install openssl-devel zlib-devel
yum groupinstall "Development Tools"

  • Clone کردن ریپازیتوری (Repository) از گیت‌هاب

فایل‌های اصلی MTProto رو می‌توانید از طریق این ریپازیتوری کلن کنید. این رو حدود چند ماهه تست کردم و مشکلی نداره.

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

git clone https://github.com/TelegramMessenger/MTProxy

Clone کردن ریپازیتوری (Repository) از گیت‌هاب

حال که به درستی محتویات به سرور شما منتقل شد و پیغام Done رو دریافت کردید، با دستور زیر وارد پوشه MTProto شوید:

cd MTProxy

وارد شدن به پوشه MTProxy

برای ساخت پوشه و فایلای باینری مورد نیاز برای تنظیمات پروکسی این دستور را وارد کنید: (این دستور باید در مسیر پوشه MTProxy زده شود).

make && cd objs/bin

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

  • حالا وقت تنظیمات پروکسی و ساخت سرویس‌های مورد نظر هست

اتصال به سرورهای تلگرام برای ساخت فایل سکرت (Secret) که با دستور زیر انجام می‌شود:

curl -s https://core.telegram.org/getProxySecret -o proxy-secret

در واقع با این دستور در پوشه bin فایل proxy-secret ساخته میشه.

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

curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf

در واقع با این دستور در پوشه bin فایل proxy-multi.conf ساخته میشه.

تولید سکرت اختصاصی که اون رو باید کپی و ذخیرش کنید. با دستور زیر می‌تونید یک سکرت جنریت کنید:

head -c 16 /dev/urandom | xxd -ps

تولید سکرت اختصاصی

مطابق تصویر بالا که ملاحظه می‌کنید، سکرت ساخته شد و اون رو انتخاب و کپی کنید در یک فایل تکست که بعدا لازمش داریم.

  • اجرا کردن mtproto-proxy

با دستور زیر، در تنظیمات پروکسی، یوزرنیم، پورت یوزر، پورت لوکال و سکرت را ست می‌کنید:

./mtproto-proxy -u nobody -p 8888 -H 443 -S [secret] --aes-pwd proxy-secret proxy-multi.conf -M 1

در دستور بالا، بجای “[secret]”، سکرتی که مرحله قبل بهتون داد را جایگزی کنید.

دقت داشته باشید که دستور بالا را باید در مسیر objs/bin وارد کنید. برای اینکار cd objs و cd bin را بزنید.

اگر دستور بالا رو درست زده باشید، تصویر زیر برایتان ظاهر میشه.

اجرا کردن mtproto-proxy

  • ساخت لینک پروکسی برای اشتراک

تقریبا ۹۰ درصد کار پیش رفت و شما طبق الگویی که خود تلگرام در نظر گرفته، لینک پروکسی‌تون رو می‌سازید:

tg://proxy?server=SERVER_NAME&port=PORT&secret=SECRET

در این لینک بجای “SERVER_NAME”، باید IP سرورتون و همچنین بجای “SECRET” باید سکرتی که در چند مرحله قبل ساختید را بزارید.

  • مرحله آخر: پیکربندی و ساخت سرویس MTProxy.service برای استارت خودکار

توی این مرحله سرویس ام‌تی‌پروکسی رو می‌سازیم که همیشه باید در حال اجرا باشه که پروکسی‌مون کار کنه. برای ساختش دستور زیر رو می‌زنیم:

nano /etc/systemd/system/MTProxy.service

ساخت سرویس MTProxy.service

با دستور بالا به محیط ادیتور لینوکس وارد می‌شویم که باید محتویات زیر را واردش کنیم:

[Unit]
Description=MTProxy
After=network.target
[Service]
Type=simple
WorkingDirectory=/root/MTProxy/objs/bin
ExecStart=/root/MTProxy/objs/bin/mtproto-proxy -u nobody -p 8888 -H 443 -S [SECRET] --aes-pwd proxy-secret proxy-multi.conf -M 1
Restart=on-failure
[Install]
WantedBy=multi-user.target

دقت کنید در دستورات بالا، مسیر پوشه MTProxy خیلی مهمه که درست انتخاب بشه. مثلا بعضی موارد این مسیر بجای اینکه در root/MTProxy/objs/bin باشه، در مسیر opt/MTProxy/objs/bin قرار داره که در دستور بالا اصلاحش می‌کنیم.

وقتی دستورات بالا را در ادیتور لینوکس نوشتید، دکمه کنترل + X را بزنید.

دستور زیر را وارد نمایید:

systemctl daemon-reload

  • تست سرویس MTProxy

دستورات زیر به کارتون میاد برای بررسی سرویس پروکسی:

برای ریست کردن سرویس از دستور زیر:

systemctl restart MTProxy.service

برای بررسی کردن وضعیت سرویس:

systemctl status MTProxy.service

اگه همه چی رو درست انجام داده باشید با زدن دستور بالا، باید وضعیت مطابق تصویر زیر باشه و اروری دریافت نکنید:

تست سرویس MTProxy

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

systemctl enable MTProxy.service

از الان به بعد دیگه می‌تونید لذت ببرید و به همین سادگی یه سرور پروکسی MTProto ایجاد کردید. فقط صداشو در نیارید. 🤫

خوشحالم که یک بار دیگه آموزشی رو تونستم از تجربه خودم ارائه دهم که می‌دونم هم کاربردی هست، هم به این کاملی در نت فارسی بهش اشاره نشده بود. 😜

موفق باشید. اگه موردی بود، در بخش نظرات اشاره بفرمایید. 🙃

4.8/5 ( 5 نظر )
29 دیدگاه در رابطه با “نحوه ساخت و راه‌اندازی پروتکل MTProto تلگرام، بر روی سرور ابونتو
  1. حسین وجدانی
    مرداد ۱۶, ۱۳۹۸ - ۵:۴۶ ق.ظ

    مثل همیشه کاربردی و عالی نوشتی ناصر جان
    درود

    1. میلاد
      مرداد ۱۶, ۱۳۹۸ - ۵:۱۴ ب.ظ

      ممنون عالی بود. فقط نحوه اضافه کردن کانال اسپانسر رو هم توضیح بدید لطفا

      1. گامون
        مرداد ۲۱, ۱۳۹۸ - ۱۱:۲۰ ق.ظ

        سلام
        اموزشت خیلی عالی بود، بالاخره تونستم پروکسی تلگرام خودمو راه بندازم
        اگه آموزش نصب shadowsocks رو هم قرار بدی عالی میشه
        ممنون

          1. ناصر یزدی
            مرداد ۲۱, ۱۳۹۸ - ۴:۴۷ ب.ظ

            درود؛
            خواهش می‌کنم. خوشحالم تونستید راه‌اندازی کنید.
            قبلا shadowsicks رو راه انداخته بودم و اونم خوبه. برسم آموزش اونم می‌زارم. 🙂🙃

        1. مصطفی شریفی
          مرداد ۲۱, ۱۳۹۸ - ۴:۵۸ ب.ظ

          بسیار عالی بود واقعا کاربردی و ساده توضیح داده بودید
          ممنونم بسیار

          1. امیرحسین
            مرداد ۲۳, ۱۳۹۸ - ۱۱:۴۸ ق.ظ

            سلام/ راهی نیست برا ضد فیلترکردنش

            1. حامد
              شهریور ۲۵, ۱۳۹۸ - ۹:۴۸ ب.ظ

              سلام و تشکر بابت مطلبتون
              من ۳-۴ ماهی هست دارم از MTproto استفاده میکنم. متاسفانه زود به زود فیلتر میشه. راهی ندارین ؟

                1. ناصر یزدی
                  شهریور ۲۶, ۱۳۹۸ - ۱۰:۰۶ ق.ظ

                  درود؛
                  چند نفر استفاده می‌کنید؟
                  من طبق بررسی که کردم فکر می‌کنم نباید بیشتر از ۵ نفر باشید. چون فکر می‌کنم بسته به میزان ترافیکتون، ربات‌ها حساس میشن و پیداتون می‌کنند.
                  اول سکرت کدتون، این رو بزارید: dd توی سورس‌های خارجی دیدم که نوشتن “dd” رو اول سکرت بزارید که دیرتر متوجه بشن.

                  Due to some ISPs detecting MTProxy by packet sizes, random padding is added to packets if such mode is enabled. It’s only enabled for clients which request it

                  Add dd prefix to secret (cafe…babe => ddcafe…babe) to enable this mode on client side

              1. محمد
                شهریور ۲۷, ۱۳۹۸ - ۱:۲۱ ق.ظ

                سلام اموزش کامل بود و دقیق لینوکس من مشکل داره نمیتونم وارد شم نمیدونم از چیه همون کد اول منابع رو دانلود نمیکنه از githib و در ادامه کار با مشکل مواجه میشم
                من ضد فیلتر کردن را بلدم تا ۷۰ الی ۹۰ درصد فیلتر میشود. اما خودم تو این مرحله اول گیر کردم دوستان اینم بگم برای ضد فیلتر کردن نیاز به دوتا سرور دارید
                اگه کسی مشکل مرا حل کند ضد فیلتر کردن را بهش یاد میدم

                  1. ناصر یزدی
                    شهریور ۲۷, ۱۳۹۸ - ۱۱:۰۳ ق.ظ

                    درود؛
                    اینکه برای خواسته خودتون شرط میزارید به نظر کار درستی نیست. 🙂
                    شما مشکلتون رو توی تلگرام به بنده بگید و حلش می‌کنیم.

                    اون چیزی که بلد هستید هم به اشتراک بزارید، مثل من که به اشتراک گذاشتم تا همه استفاده کنند. 🙂

                    موفق باشید.

                1. احمد
                  شهریور ۲۹, ۱۳۹۸ - ۴:۲۴ ب.ظ

                  خیلی ممنون از آموزش کاملتون ، فقط میخواستم ببینم میشه Radius به MTP وصل کرد

                  1. casper
                    مهر ۱۰, ۱۳۹۸ - ۹:۲۰ ب.ظ

                    سلام نمیشه از یک سرور مثلا ۴ تا یوزر گرفت؟؟
                    مثل اون ربات هایی که پروکسی میفروشن؟
                    سکرت کد هاشون هم با هم فرق داره

                    1. محسن
                      مهر ۲۱, ۱۳۹۸ - ۳:۴۲ ب.ظ

                      سلام و وقت بخیر خدمت آقای یزدی

                      هر دفعه که بخوام پروکسی بسازم تمام این مراحل رو باید طی کنم؟
                      با یه بار نمیشه مثلا ۲۰ الی ۳۰ تا پروکسی درست کرد؟

                      1. Milad
                        مهر ۲۳, ۱۳۹۸ - ۳:۰۸ ب.ظ

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

                        1. محمد امینی
                          مهر ۲۷, ۱۳۹۸ - ۱۱:۲۶ ق.ظ

                          سلام … اموزش در سرور مجازی ویندوز رو برامون میذارید
                          اگه امکان داره ایدی تلگرامم شخصیتون رو بزارین ؟؟؟

                          1. تک ملودی
                            مهر ۲۹, ۱۳۹۸ - ۱۱:۲۴ ب.ظ

                            سلام وقت بخیر
                            اگه بخواییم چند اکانت در یک سرور بسازیم مثلا با پورت و سکرت مختلف باید چطوری عمل کنیم

                            1. فرزین
                              آبان ۵, ۱۳۹۸ - ۳:۱۷ ق.ظ

                              سلام من چند تا سوال داشتم :
                              ۱٫از کجا وی پی اس لینوکس بخریم؟
                              ۲٫هر سرور مجازی قابلیت ساخت چند تا پروکسی رو داره؟
                              ۳٫به هر پروکسی چند نفر میشه وصل شد؟
                              ۴٫از کجا باید بدونیم که به پروکسی ما چند نفر وصل هستند؟
                              ۵٫برا اینکه پروکسی قوی بسازیم که تعداد خیلی زیادی بهش وصل شن باید سرور لینوکسی قدرتمند تری بخریم یا کارای دیگه ای باید بکنیم؟

                                1. ناصر یزدی
                                  آبان ۵, ۱۳۹۸ - ۶:۵۵ ب.ظ

                                  درود؛
                                  ۱- خیلی جاها می‌فروشند. کافیه این عبارت رو سرچ کنید: «خرید وی پی اس»
                                  ۲- بله
                                  ۳- بستگی به سخت افزار سرور داره. تعداد نمی‌تونم بگم.
                                  ۴- نمی‌دونم
                                  ۵- سخت افزار قوی کفایت می‌کنه. مخصوصا رم

                              1. محمد فرح
                                آبان ۷, ۱۳۹۸ - ۵:۲۶ ب.ظ

                                سلام من اصلا به کد نویسی اشنا نیستم.سوالم اینه:
                                هر وقت که putty ارتباطش قطع میشه کد ها رو از کجا ادامه بدم.
                                من کدهارو تا انتها رفتم ولی تستی که گرفتم ارور داد.

                                :۱۵۷۲۳۵۶۰۲۱]
                                [۲۶۷۰۹][۲۰۱۹-۱۰-۲۹ ۱۵:۳۳:۴۱٫۰۹۹۲۴۷ local] configuration file proxy-multi.conf re-read successfully (752 bytes parsed), new configuration active
                                [۲۶۷۰۹][۲۰۱۹-۱۰-۲۹ ۱۵:۳۳:۴۱٫۰۹۹۶۰۰ local] main loop
                                READ: Resource temporarily unavailable
                                [۲۶۷۱۰][۲۰۱۹-۱۰-۲۹ ۱۵:۳۳:۴۱٫۱۰۵۲۰۱ local] Started as [185.224.134.191:8888:26710:1572356021]
                                [۲۶۷۱۰][۲۰۱۹-۱۰-۲۹ ۱۵:۳۳:۴۱٫۱۰۶۱۳۴ local] configuration file proxy-multi.conf re-read successfully (752 bytes parsed), new configuration active
                                [۲۶۷۱۰][۲۰۱۹-۱۰-۲۹ ۱۵:۳۳:۴۱٫۱۰۷۲۱۱ local] main loop
                                tg://proxy?server=185.224.134.191&port=PORT&
                                secret=5f772e6adeddce11ca94100b719aa4c5

                                ^C[pid 26709] [time 1572356250] SIGINT handled.
                                [pid 26710] [time 1572356250] SIGINT handled.
                                [۲۶۷۱۰][۲۰۱۹-۱۰-۲۹ ۱۵:۳۷:۳۰٫۵۸۳۴۵۵ local] Terminated by SIGINT.
                                [۲۶۷۰۹][۲۰۱۹-۱۰-۲۹ ۱۵:۳۷:۳۰٫۵۸۵۴۹۰ local] Terminated by SIGINT.
                                root@avalserver:~/MTProxy/objs/bin# nano /etc/systemd/system/MTProxy.service
                                root@avalserver:~/MTProxy/objs/bin# systemctl daemon-reload
                                root@avalserver:~/MTProxy/objs/bin# systemctl status MTProxy.service
                                ● MTProxy.service
                                Loaded: not-found (Reason: No such file or directory)
                                Active: inactive (dead)
                                root@avalserver:~/MTProxy/objs/bin#

                                  1. ناصر یزدی
                                    آبان ۷, ۱۳۹۸ - ۶:۴۰ ب.ظ

                                    درود؛
                                    می‌تونید سرور رو ریست کنید و از اول مراحل رو انجام بدید.
                                    البته اگر هم بخواید می‌تونید چک کنید تا کدوم مرحله انجام شده.

                                1. محراب
                                  آبان ۲۴, ۱۳۹۸ - ۶:۳۲ ب.ظ

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

درباره این مطلب دیدگاهی بنویسید...

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز با * علامت‌گذاری شده‌اند.