معرفی پروژه
خبر و پیام روی DNS — وقتی همهٔ راههای دیگر را بستهاند
وقتی حکومتها در روزهای اعتراض اینترنت را قطع میکنند، میلیونها نفر یکشبه از جهان بیرون جدا میافتند. نه به خبر مستقل دسترسی دارند، نه به خانوادههایشان در خارج از کشور، و نه راهی دارند که بفهمند در اطرافشان واقعاً چه میگذرد.
TheFeed هم راه رسیدن خبر را باز نگه میدارد، هم راه در ارتباط ماندن را، و کار اصلیاش بر پایهٔ کوئریهای DNS است؛ یعنی بنیادیترین لایهٔ اینترنت، که مسدود کردنش از همه دشوارتر است. خبر مستقل از همین راه میرسد. پیامرسان رمزنگاریشدهٔ TheFeed هم روی DNS کار میکند و با آن، حتی در قطعی کامل، میتوان برای آشنایان بیرون از کشور پیام متنی کوتاه فرستاد. از آبان ۱۴۰۵ هم، بهصورت آزمایشی، خود تلگرام روی DNS در دسترس است: هر کس میتواند با حساب تلگرام خودش وارد شود و همان گفتوگوها، گروهها و کانالهایش را داشته باشد، بیآنکه نیازی به VPN یا پروکسی باشد. و برای روزهایی که فقط گوگل باز است، TeleMirror راه دیگری میگشاید: هر کانال تلگرامی را با سرویسهای گوگل نشان میدهد.
در چنین قطعیهایی، ابزارهایی که مردم معمولاً به آنها تکیه میکنند از کار میافتند. VPN آنقدر گران میشود که مردم دیگر توان خریدش را ندارند؛ در همین قطعی اخیر، بعضی را گیگابایتی تا ۶ دلار میفروختند. اینترنت ماهوارهای خطر قضایی سنگینی دارد و صرف داشتنش میتواند به اتهام جاسوسی بینجامد. حتی کسانی که از پس هزینهٔ فیلترشکن برمیآیند، همواره در خطر ضبط تجهیزات و پیگرد قانونیاند.
در همین حال، حکومت خودش وصل میماند. نیروهای همسو با آن سیمکارت سفید (بیمحدودیت) میگیرند تا تبلیغات حکومتی را پخش کنند، و مردم عادی در بیخبری رها میشوند؛ نه میتوانند درستی شایعهها را بسنجند، نه با عزیزانشان تماس بگیرند و نه آنچه را به چشم میبینند ثبت کنند.
فیلترشکنهای موجود همه یک ضعف بنیادی مشترک دارند: میکوشند تونل TCP کاملی از فایروال رد کنند. در قطعی شدید، این روش جواب نمیدهد. ریزالورهای DNS چنان کُند میشوند که تقریباً از کار میافتند، نرخ از دست رفتن بستهها از ۸۰ درصد میگذرد و برقراری اتصالی پایدار عملاً ناممکن میشود. ابزارهایی مانند DNSTT که برای تونلزنی روی DNS طراحی شدهاند، به ریزالورهای سریع نیاز دارند و یافتن چنین ریزالورهایی روزها اسکن میطلبد؛ فرصتی که مردم ندارند.
پنجشنبه ۱۸ دی ۱۴۰۴، در دوازدهمین روز اعتراضهای سراسری ایران، حکومت اینترنت را قطع کرد؛ همان روزی که شمار زیادی از مردم را کشت. NetBlocks حدود ساعت ۸:۳۰ صبح قطع کامل اینترنت را تأیید کرد. روز ۸ بهمن محدودیتها کمی سبکتر شد، اما ۹ اسفند، همان روزی که جنگ آغاز شد، اینترنت بار دیگر بهکلی قطع شد. این مرحلهٔ دوم ۸۸ روز طول کشید و تا ۵ خرداد ۱۴۰۵ ادامه یافت. روی هم رفته، این دوره نزدیک به پنج ماه به درازا کشید و به طولانیترین قطعی سراسری اینترنت بدل شد که تا امروز در جهان ثبت شده است؛ قطعیای که ۹۲ میلیون ایرانی را درگیر کرد.
فیلترشکنهای گرانی خریده بودم و به هر زحمتی با همین VPNها ارتباطم را سرپا نگه داشته بودم. حدود ۹۰ درصد مردم به هیچ چیز دسترسی نداشتند و فقط درصد بسیار کمی VPN داشتند؛ من جزو همین عدهٔ کم بودم. اما پس از چند هفته بیثباتی، آخرین VPN هم که داشتم از کار افتاد. دیگر هیچ راهی به خبر مستقل نداشتم. تنها چیزی که مانده بود تلویزیون بود، آن هم سراسر پارازیت و تبلیغات حکومتی؛ و من حتی تلویزیون هم نداشتم.
مدام با خودم فکر میکردم: چه میشد اگر پروتکلی بود که داده را کمکم از راه DNS دریافت میکرد؟ نه با تلاش برای باز کردن تونلی کامل، بلکه با بیرون کشیدن محتوا، تکهبهتکه. چنین روشی اساساً از ابزارهایی مانند DNSTT سریعتر میشد، چون اصلاً به اتصال دائمی نیازی نداشت؛ کافی بود متن را جابهجا کند، ذرهذره.
در آن چند روزی که VPN قطع بود، ایده را در ذهنم پروراندم. وقتی سرانجام دوباره وصل شدم، بیدرنگ دست به کار ساختنش شدم و به کمک ابزارهای برنامهنویسی مبتنی بر هوش مصنوعی تا ساعت ۴ صبح کار کردم. سپیده که زد، نمونهٔ اولیه روی سرور خودم در خارج از کشور اجرا میشد و کار میکرد.
همان شب TheFeed را روی GitHub منتشر کردم و در چند گروه تلگرامی و زیر پستهای کانالهای بزرگ دربارهاش نوشتم. بعد خوابیدم.
وقتی بیدار شدم، VPN دوباره از کار افتاده بود. این بار سه روز تمام قطع ماند. اما چیزی فرق کرده بود: هنوز به خبرها دسترسی داشتم. ابزاری که خودم ساخته بودم رشتهٔ ارتباطم را با بیرون نگه داشته بود. آن حس خفقانآور زندانی بودن در بیخبری از میان رفته بود.
و سه روز بعد که دوباره سری به اینترنت زدم، دیدم مردم خودشان TheFeed را در کانالهایشان دستبهدست میکنند.
از همان شب اول، شبانهروز روی TheFeed کار کردم؛ اغلب روزی ۱۰ ساعت یا بیشتر و گاهی بیش از ۲۰ ساعت پشت سر هم، آن هم در حالی که شغل ۸ساعتهام را هم ادامه میدادم. در فاصلهٔ استراحتهای سر کار و شبها کد مینوشتم و هر وقت فرصتی دست میداد، سعی میکردم چند ساعتی بخوابم. سرعت حرف اول را میزد: هیچوقت نمیدانستم VPN کی دوباره قطع میشود، پس هر بار که وصل میشدم، فرصت را غنیمت میشمردم و بهروزرسانیها را منتشر میکردم.
مهمترین دستاوردها، که همه در حالی ساخته و منتشر شدند که قطعی هنوز ادامه داشت:
در دوران قطعی، کمتر از ۱ درصد مردم به تلگرام دسترسی داشتند. همین عده نسخههای تازهٔ TheFeed را دانلود میکردند و در انجمنهای اینترنتی داخل ایران میگذاشتند تا دست دیگران هم به آنها برسد. پروژه اینگونه پخش شد: خودجوش، و به دست مردمی که به یکدیگر کمک میکردند.
پس از آنکه GitHub از داخل ایران در دسترس شد، قابلیت رلهٔ GitHub را اضافه کردم. از آن پس کاربران میتوانستند بهروزرسانیها، کانفیگها و خبرهای پروژه را مستقیم از داخل TheFeed دانلود کنند، بیآنکه به مرورگر یا ابزار جداگانهای نیاز داشته باشند.
TheFeed در قطعی ۸۸روزهٔ اینترنت ایران، دسترسی به خبر مستقل را برای حدود ۱۰۰ هزار نفر ممکن کرد. برای بسیاری، این تنها روزنهٔ آنان به جهان بیرون بود.
این پروژه نشان داد که DNS، یعنی بنیادیترین لایهٔ اینترنت که مسدود کردنش از همه دشوارتر است، میتواند در سختترین شرایط سانسور هم مجرایی عملی و قابلاتکا برای رساندن اطلاعات باشد.
TheFeed بر نکتهای ساده بنا شده است: حتی در قطعی کامل اینترنت هم DNS معمولاً برقرار میماند، چون مسدود کردنش زیرساختهای خود حکومت را هم از کار میاندازد. TheFeed از همین ویژگی بهره میگیرد و محتوا را درون کوئریها و پاسخهای DNS کدگذاری میکند.
وقتی اینترنت در ۵ خرداد ۱۴۰۵ تا اندازهای وصل شد، توسعهٔ TheFeed را ادامه دادم. خطر قطعیهای آینده همچنان پابرجاست و این ابزار باید آماده باشد؛ نه در قالب نمونهای که در روزهای جنگ سرهمبندی شده بود، بلکه در قامت برنامهای پخته و قابلاتکا.
نخستین قابلیت مهمی که پس از قطعی اضافه شد، پیامرسان رمزنگاریشده بود: سامانهای برای پیامرسانی به روش ذخیره و ارسال (store-and-forward) که تماماً روی DNS کار میکند. اگر اینترنت دوباره قطع شود، مردم میتوانند برای کسانی که بیرون از کشورند پیام متنی کوتاه بفرستند؛ تا به خانوادههایشان خبر بدهند که سالماند، کارهایشان را هماهنگ کنند و حس انسان بودن را از دست ندهند.
دومین قابلیت، که در آبان ۱۴۰۵ بهصورت بتا منتشر شد، تلگرام روی DNS است: کلاینت کامل تلگرام درون TheFeed. کاربران با حساب تلگرامشان وارد میشوند و همچنان از گفتوگوها، گروهها و کانالهایشان استفاده میکنند؛ پروتکل تلگرام، یعنی MTProto، درون کوئریهای معمولی DNS جابهجا میشود. وقتی راه بیرون بسته است، باز هم میتوانند به همان آدمها و کانالهایی برسند که هر روز با آنها سروکار دارند، بیآنکه به VPN یا پروکسی نیاز داشته باشند. رله فقط بستههای رمزنگاریشدهٔ خود تلگرام را جابهجا میکند و نمیتواند آنها را بخواند.
هیچیک از این دو در دوران قطعی به دست کاربران نرسید. اما اکنون هر دو آمادهاند، برای قطعی بعدی.
کاربرد TheFeed به ایران محدود نمیماند. هر جامعهای که با قطع اینترنت روبهرو شود — و این اتفاقی است که بارها در جاهای مختلف جهان تکرار شده — میتواند آن را راهاندازی کند و به کار بگیرد.
در دوازدهمین روز اعتراضهای سراسری، قطع اینترنت ایران آغاز شد؛ همان روزی که حکومت شمار زیادی از مردم را کشت. NetBlocks حدود ساعت ۸:۳۰ صبح قطع کامل را تأیید کرد. ارتباط ۹۲ میلیون نفر بریده شد.
محدودیتها تا اندازهای کاهش یافت.
با آغاز جنگ، اینترنت دوباره بهکلی قطع شد. این مرحله ۸۸ روز به طول انجامید و به طولانیترین قطعی پیوستهٔ سراسری اینترنت بدل شد که تاکنون ثبت شده است.
پس از چند هفته اتصال شکننده با VPN، آخرین فیلترشکنم هم از کار افتاد. در روزهای پس از آن، ایدهٔ یک پروتکل خبری مبتنی بر DNS شکل گرفت.
VPN من — یکی از معدود VPNهایی که هنوز کار میکردند — برای مدتی کوتاه دوباره وصل شد. نمونهٔ اولیه را در یک شب ساختم و همان روز اول ۵ نسخه از آن منتشر کردم. پروژه را روی GitHub گذاشتم و در گروههای تلگرامی معرفی کردم. نخستین کاربران وصل شدند.
روز دوم ۸ نسخهٔ دیگر منتشر شد. برنامهٔ اندروید (v0.1.1) هم در همین هفته بیرون آمد. تستهای سرتاسری نوشته شد، بهروزرسانی خودکار کانالها راه افتاد و کانفیگهای عمومی هم در دسترس قرار گرفت. پروژه در انجمنهای اینترنتی داخل ایران دستبهدست شد. در هفتهٔ نخست ۱۹ نسخه منتشر شد.
بازنویسی فرانتاند، بانک ریزالور، اعتبارسنجی بلوکهای داده و پشتیبانی از حسابهای عمومی X (توییتر). وقتی GitHub از داخل ایران در دسترس قرار گرفت، قابلیت رلهٔ GitHub اضافه شد و کاربران از آن پس میتوانستند بهروزرسانیها و کانفیگها را از داخل برنامه دانلود کنند.
دانلود رسانه از راه کوئریهای DNS و رله از طریق CDN خودِ GitHub منتشر شد. کاربران میتوانستند عکس ببینند، ویدیو تماشا کنند و نسخههای تازهٔ برنامه را دانلود کنند؛ همه از داخل TheFeed و همه در دوران قطعی.
وقتی گوگل از داخل ایران در دسترس قرار گرفت، TeleMirror (رلهٔ گوگل) راهاندازی شد و کاربران توانستند هر کانال تلگرامی را دنبال کنند، نه فقط کانالهای از پیش تنظیمشده.
برنامههای iOS و macOS منتشر شدند و TheFeed، هنوز در دوران قطعی، به همهٔ پلتفرمهای اصلی رسید.
اینترنت پس از ۲٬۰۹۳ ساعت تا اندازهای وصل شد. کارنامهٔ پروژه تا آن روز: بیش از ۹۰ نسخهٔ پایدار، روی هم ۲۴۴ نسخه، و حدود ۱۰۰ هزار کاربر.
پیامرسان رمزنگاریشدهٔ مبتنی بر DNS ساخته و آزموده شد. امضای فید (برای جلوگیری از دستکاری)، پشتیبانی از چند دامنه، «پیامهای ذخیرهشده» و مدیریت فضای ذخیرهسازی به برنامه اضافه شد.
«تلگرام روی DNS» بهصورت بتا منتشر شد: کلاینت کامل تلگرام درون TheFeed. کاربران با حساب خودشان وارد میشوند و گفتوگوها، گروهها و کانالهایشان را میخوانند و در آنها مینویسند. پروتکل خود تلگرام، یعنی MTProto، درون کوئریهای DNS جابهجا میشود؛ بدون VPN و بدون پروکسی. فقط متن پشتیبانی میشود تا روی ریزالورهای کُند هم قابلاستفاده بماند.
TheFeed در آغاز ابزاری اضطراری بود و اکنون به چیزی فراتر از آن بدل شده است: بستری که جریان اطلاعات را در برابر قطعی سرپا نگه میدارد و به کار هر جامعهای میآید که از اینترنت آزاد جدا افتاده است.
TheFeed را یک توسعهدهنده بهتنهایی ساخته است و نگهداری میکند؛ کسی که قطع اینترنت را با گوشت و پوستش لمس کرده است. این پروژه از دل نیازی شخصی زاده شد، نه برای گرفتن کمکهزینه یا بهعنوان تمرینی دانشگاهی، و طراحیاش بازتاب محدودیتهای واقعی کار زیر سانسور شدید است: اتصالهای ناپایدار، فیلترشکنهای گران و پرخطر، و اینکه دسترسی هر لحظه ممکن است قطع شود.
او همچنان، در کنار شغلش، همهٔ وقت آزادش را صرف نگهداری و بهبود TheFeed میکند و متعهد است که پروژه متنباز و برای همهٔ کاربران رایگان بماند.