محمدرضا شریفی
محمدرضا شریفی
خواندن ۲ دقیقه·۱ ماه پیش

محدود کردن دسترسی به کانتینرهای داکر برای IPهای خاص


مواردی پیش میاد که لازمه پورت های یک کانتینر خاص رو به آیپی های مشخص شده محدود کنیم. پس از جستجوهایی که انجام دادم و مطالعه آموزش‌های مختلف درباره کانفیگ iptables با داکر، راه‌حل مناسبی پیدا نکردم. مستندات رسمی داکر هم در این زمینه کافی نبود. اما با ترکیب اطلاعاتی که جمع‌آوری کردم، تونستم راهکاری ساده و کاربری پیدا کنم. در این آموزش، نحوه استفاده از ipset و قوانین iptables برای محدود کردن دسترسی به IPهای خاص (لیست سفید) را توضیح می‌دهم. البته می‌توان همین روش را برای مسدود کردن IPهای خاص (لیست سیاه) نیز به کار برد.

ابتدا لازمه پکیج ipset رو در سرور نصب کنیم اگه سیستم عامل سرور ما اوبونتو باشه از دستور زیر نصب رو انجام میدیم.

sudo apt install ipset

مرحله 1: ایجاد یک IPSet

ابتدا باید یک IPSet ایجاد کنیم تا لیستی از IPهای مجاز به دسترسی به کانتینرهای داکر را نگهداری کند.

sudo ipset create docker-allowed hash:ip


دستور بالا یک IPSet خالی به نام docker-allowed ایجاد می‌کند. شما می‌توانید هر نام دلخواهی انتخاب کنید. حالا باید لیست IPهای مورد نظر را به این مجموعه اضافه کنیم:

sudo ipset add docker-allowed 10.0.0.2 sudo ipset add docker-allowed 10.0.0.226 sudo ipset add docker-allowed 10.0.0.227

برای بررسی پیکربندی IPSet:


sudo ipset list docker-allowed

خروجی شامل اطلاعاتی درباره نام، نوع، و اعضای IPSet خواهد بود.

ذخیره تنظیمات:
برای جلوگیری از حذف IPSet پس از راه‌اندازی مجدد سیستم، آن را ذخیره کنید:

mkdir /etc/ipset sudo ipset save > /etc/ipset/ipset


مرحله 2: ایجاد قوانین IPTables برای مجاز کردن دسترسی

براساس مستندات داکر، قوانین دستی باید در زنجیره DOCKER-USER اضافه شوند. این قوانین پیش از قوانین زنجیره DOCKER اعمال می‌شوند.

ایجاد اولین قانون:


sudo iptables -I DOCKER-USER -i eth0 -m set ! --match-set docker-allowed src -j DROP

این قانون ترافیکی که از IPهای خارج از لیست docker-allowed باشد را مسدود می‌کند. توجه داشته باشید که باید eth0 را با نام رابط شبکه خود جایگزین کنید.

افزودن قانون برای ترافیک‌های موجود:

sudo iptables -I DOCKER-USER -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT


نتیجه‌گیری

این روش ساده‌ترین و مؤثرترین راهی بود که توانستم برای محدود کردن دسترسی به IPهای خاص در داکر پیدا کنم. این روش به‌راحتی قابل تنظیم برای نیازهای مختلف است. اگر شما هم روش دیگری می‌شناسید، خوشحال می‌شوم نظراتتان را بشنوم.





dockerfirewalldocker network
شاید از این پست‌ها خوشتان بیاید