همانطور که میدانید (یا شایدم نمیدانید 😁) مخزن اصلی سرویس Docker ایران و تعدادی از کشورهای دیگر را تحریم کرده و امکان نصب مستقیم از آن وجود ندارد؛ با این حال کسی با این مسخرهبازیها نمیتواند جلوی ماها را بگیرد ?. من دو روش برای رفع این مشکل پیدا کردهام:
- استفاده از مخزنهای آینه (یا موازی یا همان Mirror): با گشتن mirrorهای سرور داکر میتوان چیزهای خوبی پیدا کرد؛ مثلا اینجا مخزن خودش را با آموزش قدم به قدم ارائه داده.
- استفاده از سرویس «شکن»: «شکن» نام یک سامانه دورزنندهی سایتهای تحریم شده است که از طریق DNS «فقط» سایتهای تحریم شده را دور زده و مثل سایتهای عادی ارائه میدهد. پیش از این یک نسخه غیررسمی برای ویندوز آن را ساخته بودم اما اینجا لینوکس است و کار به همین راحتی نیست! مخصوصا اگر رابط گرافیکیای در دسترس نباشد (مثل سرورها)…
بعد از مقداری گشتن متوجه شدم که ابزاری به نام NMTUI و NMCLI در بعضی از توزیعها (مثل اوبونتو) وجود دارد که نسبتا کار را راحت کرده.
تعویض DNS با nmtui
1- ابتدا وارد nmtui شوید:
1 |
$ sudo nmtui |
2- گزینه «Edit a connection» را انتخاب کنید:
3- اتصال موردنظر (که معمولا همان تک گزینهی زیرمجموعه Ethernetهاست) را انتخاب کنید، به سمت راست بروید و Edit را انتخاب کنید:
4- بخش «IPv4 CONFIGURATION» را «show» کنید، به بخش «DNS servers» بروید و DNSهای شکن را «Add» کنید. در نهایت از پایین صفحه «OK» را بزنید و به صفحه قبلی برگردید:
5- حالا برای اعمال تغییرات:
اگر به صورت مستقیم به دستگاه متصل هستید به صفحه اصلی برگردید و با وارد شدن به بخش «Activate a connection» و انتخاب شبکه، آن را یکبار «غیرفعال» و دوباره «فعال» کنید:
هشدار: اگر از راه دور به دستگاه وصلید، روش بالا باعث میشود که اتصال شما قطع شده و دیگر شبکهای در کار نیست که بخواهید از طریق آن، آن را وصل کنید (شنیدید میگن یکی بر سر شاخه بُن میبُرید؟ 😂)! در این حالت مرحله آخر روش nmcli را ببینید.
تعویض DNS با nmcli
1- ابتدا لیست ارتباطات شبکه را گرفته و UID شبکه مورد نظر را کپی میکنیم:
1 2 3 4 |
$ nmcli con NAME UUID TYPE DEVICE Wired connection 1 233db91b-52ae-3903-9a5e-0614092d48b7 ethernet ens33 docker0 dc5640ce-c219-4eea-8532-51328f32cf84 bridge docker0 |
2- حالا dnsهای شکن را تنظیم میکنیم:
1 |
$ sudo nmcli con mod _DEVICE_NAME ipv4.dns "178.22.122.100 185.51.200.2" |
3- میتوانیم دریافت dns خودکار را خاموش کنیم (برای من خیلی فرقی نداشت):
1 |
$ sudo nmcli con mod _DEVICE_NAME ipv4.ignore-auto-dns yes |
4- حالا باید شبکه را خاموش و دوباره روشن کنیم. برای اینکه به مشکل قبل نخوریم میتوانیم از دستور زیر استفاده کنیم:
1 |
$ sudo nmcli device disconnect _DEVICE_NAME; wait ; sudo nmcli device connect _DEVICE_NAME |
یا از طریق دستور زیر شبکه را ریست میکنیم:
1 |
$ sudo service NetworkManager restart |
ارتباط SSH قطع شده و بعد از چند ثانیه دوباره قادر به ارتباط خواهیم بود…
برای اطمینان از تنظیم DNS، میتوان دستور زیر را اجرا کرد:
1 |
$ resolvectl status |