به عنوان یه برنامهنویس توی ایران، توی هر استکی هم که کار کنید تحریمهایی که شرکتهای خارجی گذاشتن عذابآوره، یادمه اوایلی که شروع کرده بودم به برنامهنویسی گاهی وقتا چندین روز درگیر بیلد Gradle بودم آخرشم به خطا میخورد. توی این آموزش کوتاه قراره یه سرویس مثل شکن بالا بیاریم تا مارو از دست این تحریما خلاص کنه.
این سرویس جئولوکیشن شما رو مخفی میکنه و باعث میشه تحریم سایتهای خارجی رو دور بزنید. راهاندازی ساده ای داره و سرعت خوبی هم به شما میده.
چرا از شکن و ۴۰۳ و بقیه سرویسها استفاده نمیکنم؟ من نه از شکن سرویس قابل قبولی دریافت کردم و نه از ۴۰۳، سرویس قابل قبول چی هست؟ سرویسی که دهنت رو سرویس نکنه، به عبارت دیگه تو داری به اندازه x تلاش میکنی ولی به اندازه یک دهم x بهرهوری میگیری. از این پترن هرجا که هست دوری کنید!
Something you put more effort on it than you save
چی نیاز داریم؟
یه سرور مجازی خارج از ایران که حداقل ۵۱۲ مگابایت رم داشته باشه و ۲ یا ۳ گیگ حافظه
آموزش راهاندازی
آموزش به ۳ مرحله ساده تقسیم شده
- نصب داکر
- دپلوی سرویس
- تست DNS
1. نصب داکر
برای نصب داکر نسبت به سیستمعاملی که دارین طبق وبسایت داکر مراحل رو انجام بدین تا نصب انجام بشه
https://docs.docker.com/engine/install/
2. دپلوی سرویس
ابتدا روی سرور این دستور رو وارد کنید تا ریپوزیتوری کلون بشه:
git clone https://github.com/JulyWitch/dns-forwarder.git
حالا آیپی سرور مجازی خودتون رو پیدا کنید و کپی کنید، اگه ندارید میتونید از طریق ترمینال با دستور زیر پرینتش کنید.
curl https://ifconfig.co
حالا باید فایل dnsmasq/proxy.conf.template
رو تغییر بدید و آدرس سرور خودتون رو داخلش بزارید، در نهایت هم اسمش رو به proxy.conf
تغییر بدید.
با دستور زیر میتونید این کار رو انجام بدید یا اینکه دستی با تکست ادیتور وارد فایل dnsmasq/proxy.conf.template
بشید ایپی رو جایگزین کنید و بعد اسم فایل رو به proxy.conf
تغییر بدید.
VPS_IP=آیپی-سرور-شما envsubst < dnsmasq/proxy.conf.template > dnsmasq/proxy.conf
کانفیگ انجام شد، با دستور زیر پروژه رو دپلوی کنید:
docker compose up -d
3. تست DNS
من اینجا برای لینوکس و مکینتاش مینویسم، با ویرایشگر متن دلخواهتون فایل زیر رو باز کنید
/etc/resolv.conf
آیپی سرور رو توی خط زیر جایگزین کنید و به بالای فایل اضافه کنید
nameserver ${VPS_IP}
حالا برای اینکه ببینیم اتصال به درستی برقرار شده از دستور زیر استفاده کنید
dig docker.io
باید توی خروجی این دستور آیپی سرور خودتون رو هم ببینید که بهش وصل شده. اگه میبینید پس تمام و میتونید از این DNS استفاده کنید.
نگهداری، مدیریت و عیبیابی
چطور میتونیم دامنه جدید اضافه کنیم؟
برای اینکه یه دامنه جدید به سرویس اضافه کنید باید طبق فرمتی که توی فایل dnsmasq/proxy.conf
تعریف شده، دامنه جدید رو اضافه کنید.
سرویس براتون کار نمیکنه به ترتیب این موارد رو بررسی کنید:
- توی سرور مجازی وارد پوشه داکر بشید و دستور
docker compose logs
رو وارد کنید تا اگه سرویس به خطا خورده متوجه بشید. - فایل
etc/resolv.conf/
سیستم خودتون: ممکنه از یه سرویسی مثل unbound استفاده میکردید که این فایل رو override میکنه - فایل
dnsmasq/proxy.conf
روی سرور مجازی: چک کنید که فرمت فایل درست هست یا نه؟ باید شبیه به این باشه:
address=/.docker.com/1.2.3.4