فیلتر https ؟! چطور؟

نکته اول: همینطور که می‌دونید دامنه sadeq.ir از ۸۸ به اینطرف فیلتر شده.

نکته دوم: با توجه به اینکه تعدادی دیگه سایت هم روی همین آدرس فعاله امکان فیلتر بر اساس ip برای این سایت وجود نداره.

نکته سوم: اینکه با فعال شدن https روی این دامنه به لطف Let’s Encrypt دسترسی به سایت بدون فیلترشکن روی https وجود داشت. (به قاعده وقتی داری از https استفاده می‌کنی نام دامنه به صورت رمزنشده جایی مشاهده نمی‌شه)

و عجیب اینه که چند وقتیه سیستم‌های فیلترینگ به این توانایی دست یافتند که دامنه https را هم تشخیص بدهند و فیلتر کنند. تلاش برای باز کردن https://sadeq.ir بدون فیلتر شکن منجر به time out اتصال میشه!

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

این پیشرفت بزرگ را به سانسورچی‌های دوست‌نداشتنی تبریک و به سایر مردم تسلیت می‌گم.

راه‌اندازی کلاینت Perl به همراه mariadba 10.1 در Debian 9

به نظر می‌رسه نصب client mysql/mariadb برای perl (DBD::mysql) در نسخه ۹ یا stretch دبیان (شاید نسخه‌های دیگه و توزیع‌های دیگه هم) مشکل دارد. نصب بسته libdbd-mysql-perl با استفاده از apt کار نمی‌کنه و وقتی ماژول mysql می‌خواد لود بشه پیام می‌ده که نمی‌تونه mariadbclient.so.18 را نمی‌تونه پیدا کنه.

برای بررسی بیشتر:

نصب هیچ پکیجی قرار نیست این مشکل را حل کنه. راهکار اینه که کلاینت mysql پرل را از سورس نصب کنید. برای نصبش اول فایلش را دانلود کنید: http://search.cpan.org/~michielb/DBD-mysql-4.042/lib/DBD/mysql.pm

در ضمن مطمئن بشید بسته libmariadbclient-dev (برای استفاده از mysql_config) و build-essential (برای استفاده از make) روی سیستم نصبه. فایل فشرده را باز کنید و برید داخلش.

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

 

مشکل حل شده است! و می‌تونید از mariadb توی perl استفاده کنید.

کد تست:

 

نکته: در صورتی که کاربر فعلی دسترسی به دیتابیس test در mariadb نداره، می‌تونید با پارامترهای در دستور زیر perl Makefile.PL یه دیتابیس و یوزر پسورد برای تست کردن در زمان build یا تست مشخص کنید:

  • testdb نام دیتابیس تست
  • testuser نام کاربر برای اتصال به mariadb
  • testpassowrd رمز کاربر برای اتصال به mariadb
  • پارامترهای testhost و testport هم برای مشخص کردن سرور mariadba

نکته: در جدیدترین بروزرسانی perl در دبیان در فایل

یه تنظیم اضافه شده است که امکان import کردن module از فولدر فعلی وجود نداشته باشد. برای رفع مشکل اسکریپ‌های مشکل‌دار می‌شه این تنظیم را غیرفعال کرد. توجه داشته باشید این تغییر به دلایل امنیتی انجام شده است پس تا مجبور نشدین تغییر ندین:

استفاده از پارامتر I جلوی perl در خط فرمان هم می‌تونه این مشکل را موقت حل کنه.

 

راه‌اندازی extensionهای gnome در کروم!

اولین قدم اینه که اکستنشن مربوطه را از chrome store نصب کنید!
نشونیش اینه: GNOME Shell integration در Chrome Store
بعد که این را نصب کردید هنوز کار نمی‌کنه. اگه بتونید بسته chrome-gnome-extension را نصب کنید (برای دبیان در sid) مشکل حله و با یه reset محیط gnome می‌تونید از extensions.gnome.org لذت ببرید. مگرنه لازمه که سورسش را از مخزن گیتش به نشانی git://git.gnome.org/chrome-gnome-shell بگیرید و کامپایل کنید. برای اینکار دستورات زیر را استفاده کنید:

بعد برین داخل فولدر chrome-gnome-shell و یه فولدر build بسازید.
برین داخلش و این دستور را بنویسید تا تنظیمات محیط کامپایل آماده بشه:

فراموش نکنید بسته jq که یه json parser است را هم نیاز دارید. توی debian با دستور apt install jq دو سوته نصب می‌شه.
بعد که کانفیگ انجام شد، باید کامپایل و نصبش کنید:

همه کارها را براتون انجام می‌ده.
با alt-F2 و بعد r محیط گنوم‌شل را ریست کنید و از extensions.gnome.org در chrome لذت ببرید! اگه به اشکالی هم برخورد کردین از نشانی https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome/Installation می‌تونید ببینید مشکل کجاست و اون را حل کنید.

شناخته نشدن USB Deviceها در VirtualBox

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

من قبل‌تر برای تست رفته بودم و phpvirtualbox نصب کرده بودم ولی تنظیم‌هاش توی /etc/defaults/virtualbox/ مونده بود. همین باعث شده بود که root نصب تغییر کنه و ابزارهای شناسایی درگاه USB به جای نادرستی اشاره کنند.
این ابزار به صورت پیش‌فرض توی /usr/lib/virtualbox/ قرار دارند و فراخوانی‌شون با استفاده از udev و فایل‌های تنظیمی است که در مسیر /etc/udev/rules.d/60-vboxdrv.rules/ قرارداره فراخوانی می‌شه.

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

فایل تنظیم درست udev برای virtualbox هم به صورت زیر است:

اگه این فایل را پاک کنید و Virtual Box را مجدد نصب کنید این فایل ساخته می‌شه. (پیشنهاد من اینه که اول کامل پاک کنید و بعد مجدد نصب کنید)

البته فراموش نشه قبل از هر کاری کاربر شما به گروه vboxusers اضافه شده باشه. بدون اضافه شدن شما به این گروه امکان استفاده از usb در ماشین‌های مجازی را ندارید! همینطور Oracle VM VirtualBox Extension Pack را هم حتما نصب کنید 🙂

با apt-get خراب چه کنیم؟

امروز با مشکل عجیبی برخورد کردم.
اومدم بسته ntp را نصب کنم که پیام داد به دلیل یه Dependency امکانش نیست. تعجب کردم. گفتم لابد سری قبل توی update، یکی از مخازن دانلود نشده یا خراب شده. پس رفتم سراغ apt-get update.
با اجرای دستور apt-get update ماجرا عجیب‌تر شد. تعدادی خطای Not found 404 برای بخشی از مخازن اصلی Debian روبرو شدم.
بررسی فایل sources.list و تغییر آن‌ها هم تغییری در نتیجه ایجاد نمی‌کرد.

تنظیمات ترتیب انتخاب نوع فشرده‌سازی فایل‌های Package هم راه بجایی نبرد.

دیگه داشتم ناامید می‌شدم که به خودم گفتم این که دیگه کار نمی‌کنه برم اساسی هرچی از این پکیج‌ها توی سیستم Cache شده را پاک کنم فوق فوقش لازم شد از یکی دیگه از سیستم‌ها فایل‌ها را بر می‌دارم.

اگه نمی‌دونید بدونید که فایل‌های package توی دبیان/ابونتو در مسیر /var/lib/apt/lists/ ذخیره می‌شوند و کنار کش فایل‌های deb نیستند.

بعد با دستور

همه فایل‌های پکیج مونده توی سیستم پاک کردم.

بعد دستور apt-get update را اجرا کردم. به سادگی بدون مشکل اجرا شد و مشکل حل!

شاید بد نباشه هرازگاهی (بخصوص بعد از آپدگرید نسخه مثلا از Wheezy به Jessie یا تغییر mirror مورد استفاده) این پاکسازی را انجام بدین. پیش اومده که این فایل را که پاک کردم و دوباره apt-update زدم یه تعدادی فایل که از قبل مونده بوده و آپدیت نمی‌شده به لیست آپدیت‌ها اضافه شده.

راه‌اندازی IPv6 در شبکه محلی

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

  • پیش‌نیازها:
    شما نیاز به یک IP ثابت از نوع IPv4 دارید که دسترسی به آن از سرورهای HE مجاز باشد.
    تست مجاز بودن دسترسی را می‌توانید از داخل پنل کاربری Tunnle Broker انجام دهید.
  • درخواست IPv6 برای سرور Debian از HE
    به نشانی https://tunnelbroker.net بروید، ثبت نام کنید. تونل بروکر اجازه ایجاد ۵ تونل به صورت رایگان به شما می‌دهد.
    بعد از ثبت IP ثابت شما هنگام خارج شدن از فیلد نشانی IP آدرس شما چک می‌شود و در صورت عدم دسترسی اعلام می‌کند.
    در صورتی که دسترسی مشکلی نداشته باشد باید سروری که تونل از آن ساخته می‌شود را انتخاب کنید. توجه داشته باشید سرورهایی را انتخاب کنید که زبان آن‌ها انگلیسی باشد وگرنه در هنگام کار کردن با اینترنت نسخه ۶ ممکن است سایت‌ها به صورت پیش‌فرض سایت محلی با زبانی غیر از انگلیسی به شما نمایش دهند.

بعد از انتخاب سرور می‌توانید از قسمت Example نمونه کانفیگ مناسب سیستم عامل خود را پیدا کنید.

  • راه‌اندازی تونل
    تنظیم‌های مناسب را از صفحه Example پیدا کنید. و روی سیستم خود اعمال کنید.
    برای اینکه دسترسی به DNS سرور با پشتیبانی از IPv6 داشته باشید می‌توانید از Cache DNS Server پیشنهادی HE استفاده کنید.
    آدرس شما با ::۲ تمام می‌شود.

تست کارکردن IPv6 روی سرور
برای تست از دستور ping6 google.com -n استفاده کنید. باید بتوانید این آدرس را Resolve و پینگ کند.
IPv6 گوگل ۲a00:1450:4005:80a::200e است. در صورتی که آدرس پیدا نشد پینگ آدرس را امتحان کنید.
در صورت عدم پینگ بجای ::۲ انتهای آدرس نسخه ۶ خود ::۱ بگذارید و امتحان کنید. در صورت عدم کارکرد تنظیم‌ها را بررسی کنید و مطمئن شوید از/به IP نسخه ۴ سرور تونل دسترسی به IP ثابت شما وجود دارد. همچنین دقت کنید تنظیمات را اشتباه وارد نکرده باشید.

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

درخواست /۴۸ از تونل بروکر:
برای هر تونل می‌توانید یک محدوده /۴۸ برای شبکه داخلی خود درخواست کنید. این محدوده به صورت پیش‌فرض فعال نیست.

تتنظیم IP روتر /۴۸ روی کارت شبکه شبکه داخلی
با اینکه شما به کل محدوده /۴۸ دسترسی دارید اما هر شکبه نهایی فقط می‌تواند از /۶۸ استفاده کند.
ابتدا نشانی ::۱/۶۸ را روی کارت شبکه‌‌ای از سرور اینترنت که به شبکه محلی متصل است تنظیم کنید. باید بتوانید از خارج از شبکه خود (مثلا ابزارهای آنلاین یا یک شبکه دیگر که دارای دسترسی به IPv6 است) بتوانید این نشانی جدید را پینگ کنید.
یک سری ابزار عیب‌یابی IPv6 در نشانی http://lg.he.net در دسترس است.

نصب radvd با توجه به /۶۴ بودن ساب‌نت انتخابی
با دستور apt-get install radvd ابزار توزیع IPv6 در شبکه محلی را نصب کنید.
فایل تنظیم‌ در نشانی /etc/radvd.conf قرار دارد. کافی است که ساب‌نت /۶۸ انتخابی را داخل آن تعریف کنید و سرویس را restart کنید.

سرویس networking یکی از دستگاه‌های داخل شبکه محلی را ریست کنید. در زمانی کوتاه باید نشانی IP نسخه ۶ را در محدوده انحصاری شما ببینید.
از این ایستگاه باید بتوانید از ping6 نشانی‌های نسخه ۶ سایت‌ها را ببینیند. تنظیم DNS سرور را فراموش نکنید.

نکته بسیار مهم: فراموش نکنید با راه‌اندازی IPv6 روی شبکه محلی همه دستگاه‌ها از خارج از شبکه محلی شما قابل مشاهده هستند. تنظیم فایروال ( ip6table ) را فراموش نکنید.

اولین درخواست من برای انتشار آزاد اطلاعات

همونطور که خبر دارین مدتی پیش بعد از چند سال، آیین‌نامه «قانون انتشار و دسترسی آزاد به اطلاعات» تهیه، تایید و اجرایی شد.

گردش کار و اطلاعات مربوط به فیلترینگ از جمله چیزهایی هستند که تابحال در موردش هیچ اطلاع واضحی منتشر نشده است.
به نظرم میشه از همین قانون استفاده کرد و درخواست انتشار اطلاعات مربوط به گردش کار سیستم فیلترینگ و لیست سایت‌های filterشده و دلیل فیلتر هر کدوم را درخواست کرد و بعد به صورت آزاد منتشر کرد.

کسی اطلاعی داره که دقیقا به کجا می‌شه این درخواست را داد؟ کارگروه تعیین مصادیق مجرمانه؟ شرکت ارتباطات زیرساخت؟ وزارت ارتباطات و فناوری اطلاعات؟ شورای عالی فضای مجازی؟

آیا وکیلی هست که تمایل داشته باشه برای آماده‌کردن متن این درخواست همکاری کنه؟