dnscrypt روی اسلکور (‌و باقی لینوکس‌ها‌)

·

3 min read

خوب عملا کامپیوتر‌های روی یه شبکه (‌سرور‌ها و سرویس گیرنده‌ها‌) با آدرس آی پی شناخته می‌شن‌. خوب حالا برای من کاربر که قصد داره روی اینترنت به یه سایت دسترسی داشته باشه‌، سخته که یه عدد نافهوم مثل 188.35.73.20 رو حفظ کنم‌. تازه این فقط برای دسترسی به یه سایته‌. یا فرض کنین صاحب سایت به هر دلیلی قصد تعویض سرورش رو داره‌، در این صورت باید تمام کسایی که با آی پی قبلی به سایت دسترسی داشتن‌، از آی پی سرور جدید استفاده کنن‌. حالا کار DNS Server‌ها اینه که می‌آن‌، هر آدرس معنادار (‌که طبیعتا استاندارد خودش رو داره‌) رو به یه آدرس آی پی معادلش ربط می‌دن‌. اینطوریه که وقتی شما می‌نوسین shahinism.com مرورگرتون آی پی و آدرس مسیری که وبلاگ من توش قرار داره رو پیدا می‌کنه و بهتون نشون می‌ده‌. به همین سادگی ;-)

حالا بحث سر اینه که DNS Server‌های متفاوتی توی اینترنت هستن‌. هر کدومشون با توجه به سلایق خاصی شخصی سازی شدن‌. اگه شما تا به حال نمی‌دونستین که اصلا DNS Server چی هست‌، پس احتمالا دارین از مال ISP‌تون استفاده می‌کنین‌. حالا ممکن شما از رفتار ISP‌تون نسبت به DNS‌ها راضی نباشین‌. یا فکر کنین که امنیت لازم براتون از این DNS فراهم نمی‌شه (‌حتما فهمیدین که اگه یه DNS سرور بخواد‌، می‌تونه وقتی شما google.com رو توی مرورگرتون می‌زنین‌، شما رو به آدرسی غیر از سرور‌های گوگل وارد کنه و این یعنی خطر‌!)

این‌جاست که فایل resolv.conf توی لینوکس سر و کلش پیدا می‌شه‌. شما با استفاده از این فایل می‌تونین به لینوکس‌تون بفهمونید که از چه DNS Server‌ای استفاده کنه تا در خطر نباشین‌ (‌این کار رو اگه روترتون ازش پشتیبانی کنه می‌شه توی خود روتر هم انجام داد ;-))

مزیت استفاده از DNSCrypt

بزرگترین و بهترین مزیتش اینه که ما رو به صورت کاملا امن به سرور‌های OpenDNS وصل می‌کنه‌، و دیگه ارتباطمون با DNS Server غیر قابل شنود می‌شه‌. یعنی اگه شخص خرابکاری روی اینترنتمون باشه‌، باید اول با کدگذاری DNSCrypt بجنگه تا دستش به ما برسه‌!

نصب روی اسلکور (‌و اکثر توزیع‌ها‌)

خیلی راحت‌، اول با دستور زیر فایل‌ها رو می‌گیریم‌:

git clone git://github.com/opendns/dnscrypt-proxy.git

بعد وارد پوشه می‌شیم و دستورات زیر رو به ترتیب می‌زنیم‌:

./autogen

./configure

make -j4

که اون ‏‎-j4 منظورم اینه که از همه زور CPUم استفاده کن (‌اگه شما CPUتون چهار هسته‌ای نیست می‌تونین تعداد هسته خودتون رو جای چهار بزارین یا کلا تگ j رو بیخیال شین) حالا برای این که وقتی دلمون خواست پاکش کنیم این کار رو می‌کنیم‌ (مخصوص اسلکور):

mkdir /tmp/dnscrypt

make install DESTDIR=/tmp/dnscrypt

cd /tmp/dnscrypt

makepkg -l y -c n /tmp/dnscrypt.tgz

installpkg /tmp/dnscrypt.tgz

توی باقی توزیع‌ها تنها کافیه بزنین make install ولی خوب پاک کردنش پای خودتونه!

کار با DNSCrypt

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

/usr/local/sbin/dnscrypt-proxy -d

و اگه دلتون نمی‌خواد بعد از هر بار ری‌استارت دوباره این دستور رو بزنین‌، فقط کافیه توی فایل ‏‎/etc/rc.d/rc.local همین دستور بالا رو اضافه کنین‌.

و در آخر با اضافه کردن خط زیر توی ‎/etc/resolv.conf به لینوکستون بگین که از 127.0.0.1 به عنوان DNS Server استفاده کنه‌:

nameserver 127.0.0.1

حواستون باشه که nameserver قبلی رو با اضافه کردن یه # کامنت کنین‌! حالا با مرورگرتون (‌و بدون استفاده از پروکسی‌) [این صفحه](opendns.com/welcome "Are you using OpenDNS?") رو ببینین‌. احتمالا بهتون تبریک می‌گه که از OpenDNS استفاده می‌کنین ;-)

حل یک مشکل:

احتمالا بعد از اولین ریبوت می‌فهمین که فایل resolv.conf‌تون دوباره عوض شده و آدرس قبلی توش نیست‌! این به دلیل استفاده از dhcpcd هست که تنظیمات این فایل رو بعد از هر بار شناسایی آی پی روتر دوباره‌نویسی می‌کنه‌. خوب حالا چاره چیه‌؟ هیچی دستور زیر رو می‌زنیم:

chattr +i /etc/resolv.conf

که یعنی دست خر کوتاه‌! (‌یعنی هیچ‌کس غیر از صاحب فایل حق دست زدن بهش رو نداشته باشه‌) در مورد این که این دستور دقیقا چی کار می‌کنه می‌تونین به [این مطلب](weblog.aqlinux.ir/?p=204 "مجوزهای دسترسی فایل سیستم‌های ext در لینوکس") از علی عزیز در آکلینوکس رجوع کنین ;-)