sohrab::stdout dan repost
یک چندوقتیه درگیرم همونطور که میدونید کاراموزی و پروژه دانشگاه رو برداشتم و امروز برای یک کاری لازم شد تا یک سیستمی مثل شکن بالا بیارم که ترافیک رو از طریق dns برای یک سری سایت منتخب بتونه route کنه.
خب حالت منطقیش اینه که شما یک ریزالور مثل dnsmasq بیارید بالا و یک چیزی مثل nginx بذارید جلوش ( به این روش میگن smart dns) که باهاش برای سایتهای منتخبتون ترافیک رو فوروارد کنید.
خب این برای DNS، DoH و DoT معقول و اوکیه با کمی تغییر؛ داستان اونجا زشت میشه که بخواید یک چیزی بذارید جلوش که بر اساس یک لیست IP بهتون دسترسی بده مثل شکن حرفهای.
خب من هرچی دنبال این گشتم که سرویس آماده پیدا کنم متاسفانه چیزی به دستم نیومد؛ برای همین یک پیادهسازی از SmartSNI انجام دادم به اسم kairo.
خب فعلاً خیلی چیز سادهایه؛ ساختارش به شکل زیره:
client (public IP) VPS (this binary)
│ DNS query :53 / 853 / DoH │
│ ─────────────────────────────────▶️│ policy engine
│ restricted + allowed → A = vps_ip │
│ otherwise → upstream │
│ │
│ TLS to restricted site │
│ ─────────────────────────────────▶️│ SNI router :443
│ │ SNI == host → DoH + API
│ │ SNI == site → tunnel to site
│ │ non-allowed → rejected
شما موقع نصبش یک لیست دامنه تعریف میکنید و یک apikey توی کانفیگتون میذارید ( آره این رو فعلاً خودتون میسازید چون من زیاد هنوز وقت نذاشتم تکمیل ترش کنم و کارایی اولیهاش از ویژگیهای خودش برام مهمتر بود) و بعدش برای اضافه کردن ip خودتون همون ip پابلیکی که دارید رو با استفاده از ترکیب ناشاهکار زیر به سمت سرور kairo میفرستید.
curl "https:///api/allow?key=&ip=" -X POST
که خب البته بعداً میخوام تکمیلترش کنم و احتمالاً یک پنل تحت وب هم براش بنویسم.
پروژه داکرایز شده است و مستنداتش هم نوشتم برای استفاده که بخواید برای خودتون نصب کنید؛ قابلیت ریورس پروکسی هم داره که اون هم توضیح دادم و از dns و DoH و DoT پشتیبانی میکنه.
کدمنبع پروژه:
https://github.com/behdanisohrab/kairo
پروژه تحت مجوز BSD Clause 3 منتشر میشه؛ اگر مشارکت کنید یا استار بدید خوشحال میشم :)
@SohrabContents
خب حالت منطقیش اینه که شما یک ریزالور مثل dnsmasq بیارید بالا و یک چیزی مثل nginx بذارید جلوش ( به این روش میگن smart dns) که باهاش برای سایتهای منتخبتون ترافیک رو فوروارد کنید.
خب این برای DNS، DoH و DoT معقول و اوکیه با کمی تغییر؛ داستان اونجا زشت میشه که بخواید یک چیزی بذارید جلوش که بر اساس یک لیست IP بهتون دسترسی بده مثل شکن حرفهای.
خب من هرچی دنبال این گشتم که سرویس آماده پیدا کنم متاسفانه چیزی به دستم نیومد؛ برای همین یک پیادهسازی از SmartSNI انجام دادم به اسم kairo.
خب فعلاً خیلی چیز سادهایه؛ ساختارش به شکل زیره:
client (public IP) VPS (this binary)
│ DNS query :53 / 853 / DoH │
│ ─────────────────────────────────▶️│ policy engine
│ restricted + allowed → A = vps_ip │
│ otherwise → upstream │
│ │
│ TLS to restricted site │
│ ─────────────────────────────────▶️│ SNI router :443
│ │ SNI == host → DoH + API
│ │ SNI == site → tunnel to site
│ │ non-allowed → rejected
شما موقع نصبش یک لیست دامنه تعریف میکنید و یک apikey توی کانفیگتون میذارید ( آره این رو فعلاً خودتون میسازید چون من زیاد هنوز وقت نذاشتم تکمیل ترش کنم و کارایی اولیهاش از ویژگیهای خودش برام مهمتر بود) و بعدش برای اضافه کردن ip خودتون همون ip پابلیکی که دارید رو با استفاده از ترکیب ناشاهکار زیر به سمت سرور kairo میفرستید.
curl "https:///api/allow?key=&ip=" -X POST
که خب البته بعداً میخوام تکمیلترش کنم و احتمالاً یک پنل تحت وب هم براش بنویسم.
پروژه داکرایز شده است و مستنداتش هم نوشتم برای استفاده که بخواید برای خودتون نصب کنید؛ قابلیت ریورس پروکسی هم داره که اون هم توضیح دادم و از dns و DoH و DoT پشتیبانی میکنه.
کدمنبع پروژه:
https://github.com/behdanisohrab/kairo
پروژه تحت مجوز BSD Clause 3 منتشر میشه؛ اگر مشارکت کنید یا استار بدید خوشحال میشم :)
@SohrabContents