همانطور که میدانید (یا شایدم نمیدانید ?) مخزن اصلی سرویس 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 |
متأسفانه آموزش کامل نیست.
من وقتی nmtui مینویسم، میگه همچین دستوری وجود ندارد.
بله ظاهرا اوبونتوی شما کامل نصب نشده؛
شما میتونید با این دستور نتورک منیجر رو نصب کنید:
sudo apt-get install network-manager