رفع مشکل docker با ufw
اگر شما هم بعد از فعال کردن ufw کانتینرهای docker شما مشکل خورده است این نوشته میتواند به شما کمک کند تا این مشکل را حل کنید.
رفع مشکل docker با ufw
برای رفع این مشکل مراحل زیر را دنبال کیند:
- ابتدا فایل daemon.json را در مسیر /etc/docker/daemon.json بسازید:
vi /etc/docker/daemon.json
- سپس محتوای این فایل را با متن زیر پر کنید و بعد آن را ذخیره کنید:
{
"iptables": false
}
- پس از ذخیره سازی فایل بالا دستوری زیر را اجرا کنید:
sed -i -e 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/g' /etc/default/ufw
- حالا برای اعمال شدن دستورات بالا فایروال ufw را باید ریلود کنید:
ufw reload
- در ادامهی کار دو دستور زیر را اجرا کنید:
iptables -t nat -A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE sudo iptables -A DOCKER-USER -j ufw-user-forward
- حالا شبکههای داکر شما که درون کانتینرها قرار دارد از حالا بلاک در آمدهاند و قابل استفاده هستند. ضمنا فایروال نیز فعال است و امنیت سرور شما تامین میشود.
نکته: برخی از آموزشها به جای تنظیمات ufw آن را غیرفعال میکند درست است با غیرفعال شدن ufw در واقع مشکل شما حل میشود اما مشکلهای امنیتی زیادی در انتظار شما خواهد بود.
برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]



















با این تغییرات امکان داره ترافیک بعضی کانتینرها بلاک بشه؟
بله، اگر قوانین UFW را برای شبکههای داخلی Docker (مانند docker0 یا شبکههای Bridge) به درستی تنظیم نکنید، ممکن است ترافیک داخلی مورد نیاز کانتینرها برای برقراری ارتباط با یکدیگر بلاک شود و عملکرد Mailcow یا سایر سرویسها مختل گردد.
اگه چندتا bridge network مختلف داشته باشیم، باید برای همشون rule جدا بذاریم؟
بله، اگر داکر شما چندین شبکه Bridge با آدرسهای IP متفاوت ایجاد کرده باشد (مثلاً 172.17.0.0/16 و 172.18.0.0/16)، برای اطمینان از صحت عملکرد، باید قوانین UFW جداگانه برای پذیرش ترافیک در هر یک از این شبکهها تعریف کنید.
این شبکه 172.17.0.0/16 رو میشه تغییر داد؟
بله، این رنج IP پیشفرض برای داکر است، اما شما میتوانید با ویرایش فایل تنظیمات داکر (معمولاً /etc/docker/daemon.json) و تنظیم پارامتر bip (Bridge IP)، این رنج را به یک رنج خصوصی دیگر تغییر دهید تا با شبکههای داخلی شما تداخل نداشته باشد.
این تغییرات روی همه ورژنهای docker جواب میده؟
این تغییرات (برای رفع مشکل تداخل داکر و UFW) عمدتاً برای نسخههای اخیر داکر و لینوکس که از UFW به عنوان ابزار مدیریت فایروال استفاده میکنند، کاربرد دارد. با این حال، اصول و رنجهای IP داکر در طول زمان نسبتاً پایدار بودهاند.
چرا باید iptables رو توی daemon.json غیرفعال کنیم؟
این کار برای این است که داکر از تغییر مستقیم و خودکار قوانین فایروال (iptables) شما دست بردارد. وقتی iptables غیرفعال شود، شما کنترل کامل فایروال را به UFW میسپارید تا خودتان قوانین را برای شبکههای داکر به روشی دقیقتر و امنتر تنظیم کنید.