podman-network-create(1) General Commands Manual podman-network-create(1)

podman-network-create - ایجاد یک شبکه پودمن

podman network create [گزینه‌ها] [نام]

ایجاد یک پیکربندی شبکه برای استفاده با پودمن. پودمن به‌طور پیش‌فرض یک اتصال پل (bridge) ایجاد می‌کند. یک اتصال Macvlan را می‌توان با گزینه -d macvlan ایجاد کرد. یک دستگاه والد برای macvlan یا ipvlan را می‌توان با گزینه -o parent=<device> یا --interface-name=<device> مشخص نمود.

اگر هیچ گزینه‌ای ارائه نشود، پودمن یک زیرشبکه آزاد و یک نام به شبکه اختصاص می‌دهد.

پس از اتمام ایجاد شبکه، پودمن نام شبکه تازه ایجادشده را نمایش می‌دهد.

افزونه DNS را برای این شبکه غیرفعال می‌کند؛ این افزونه در صورت فعال بودن می‌تواند تحلیل نام کانتینر به کانتینر را انجام دهد. این قابلیت تنها با درایور bridge پشتیبانی می‌شود؛ برای سایر درایورها همیشه غیرفعال است.

تنظیم کارسازهای DNS سفارشی.

از این گزینه می‌توان برای بازنویسی پیکربندی DNS ارسال‌شده به کانتینر استفاده کرد. معمولاً زمانی که پیکربندی DNS میزبان برای کانتینر نامعتبر است (مانند 127.0.0.1) این کار ضروری است. در چنین حالتی، گزینه --dns برای هر بار اجرا لازم است.

مقدار ویژه none را می‌توان برای غیرفعال کردن ایجاد /etc/resolv.conf در کانتینر توسط پودمن مشخص کرد. در این صورت از فایل /etc/resolv.conf موجود در ایمیج بدون تغییر استفاده می‌شود.

توجه داشته باشید که ممکن است ipaddr مستقیماً به /etc/resolv.conf کانتینر اضافه شود؛ هرچند این موضوع تضمین‌شده نیست. برای نمونه، ارسال یک شبکه سفارشی که dns_enabled آن روی true تنظیم شده به --network باعث می‌شود /etc/resolv.conf تنها به کارساز aardvark-dns ارجاع دهد. سپس aardvark-dns تمام پرس‌وجوهای نام‌های غیرکانتینری را به ipaddr ارائه‌شده هدایت می‌کند.

درایور برای مدیریت شبکه. در حال حاضر bridge، macvlan و ipvlan پشتیبانی می‌شوند. مقدار پیش‌فرض bridge است. در هنگام اجرا بدون ریشه (rootless)، درایورهای macvlan و ipvlan به رابط‌های شبکه میزبان دسترسی ندارند، زیرا شبکه در حالت بدون ریشه به یک فضای نام شبکه جداگانه نیاز دارد.

بک‌اند netavark امکان استفاده از به‌اصطلاح افزونه‌های netavark را فراهم می‌کند؛ مستندات plugin-API.md را در netavark ببینید. فایل اجرایی باید در یک دایرکتوری مشخص قرار گیرد تا پودمن بتواند آن را شناسایی کند؛ این فهرست در netavark_plugin_dirs در containers.conf(5) زیر بخش [network] تنظیم می‌شود.

سپس می‌توان از نام افزونه به عنوان درایور برای ایجاد شبکه برای افزونه خود استفاده کرد. فهرست همه درایورها و افزونه‌های پشتیبانی‌شده را می‌توان با دستور podman info --format {{.Plugins.Network}} مشاهده کرد.

توجه داشته باشید که درایورهای macvlan و ipvlan از فوروارد پورت پشتیبانی نمی‌کنند. پشتیبانی از فوروارد پورت در افزونه‌ها به پیاده‌سازی خود افزونه بستگی دارد.

تعریف یک دروازه (gateway) برای زیرشبکه. برای ارائه یک نشانی دروازه، تعیین گزینه subnet الزامی است. می‌تواند چندین بار مشخص شود.

ترتیب آرگومان‌های گزینه‌های --subnet، --gateway و --ip-range باید با یکدیگر مطابقت داشته باشد.

نادیده گرفتن درخواست ایجاد در صورتی که شبکه‌ای با همین نام از قبل وجود داشته باشد، به جای اعلام خطا. نکته: تلاش برای ایجاد شبکه‌ای با نام موجود اما پارامترهای متفاوت، پیکربندی شبکه موجود را تغییر نمی‌دهد.

این گزینه با گزینه network_interface در پیکربندی شبکه منطبق است؛ podman network inspect را ببینید. بسته به درایور، این گزینه می‌تواند اثرات متفاوتی داشته باشد؛ برای bridge، از نام رابط پل استفاده می‌کند. برای macvlan و ipvlan، دستگاه والد روی میزبان است. این گزینه معادل --opt parent=... است.

محدود کردن دسترسی خارجی این شبکه هنگام استفاده از یک شبکه bridge. توجه داشته باشید هنگام استفاده از بک‌اند CNI، DNS به‌طور خودکار غیرفعال خواهد شد؛ گزینه --disable-dns را ببینید.

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

استفاده از درایور bridge با این گزینه اثرات زیر را به همراه دارد:

  • تنظیمات sysctl مربوط به فوروارد سراسری IP در فضای نام شبکه میزبان تغییر نخواهند کرد.
  • فوروارد IP به جای راه‌اندازی دیوار آتش (firewall)، روی رابط پل غیرفعال می‌شود.
  • هیچ مسیر پیش‌فرضی به کانتینر اضافه نخواهد شد.

در تمام موارد، زمانی که این گزینه فعال باشد aardvark-dns تنها نام‌های کانتینرها را تحلیل می‌کند. سایر پرس‌وجوها با پاسخ NXDOMAIN مواجه خواهند شد.

تخصیص IP کانتینر از یک محدوده. این محدوده باید یک زیرشبکه کامل در نمادگذاری CIDR باشد یا در ساختار <startIP>-<endIP> مشخص شود که در مقایسه با زیرشبکه CIDR دامنه انعطاف‌پذیرتری را فراهم می‌کند. گزینه --ip-range باید همراه با گزینه --subnet استفاده شود. می‌تواند چندین بار مشخص گردد.

ترتیب آرگومان‌های گزینه‌های --subnet، --gateway و --ip-range باید با یکدیگر مطابقت داشته باشد.

تنظیم درایور ipam (درایور مدیریت نشانی IP یا IP Address Management Driver) برای شبکه. در صورت عدم تنظیم، پودمن به‌طور خودکار بر اساس درایور شبکه یک درایور ipam انتخاب می‌کند.

مقادیر معتبر عبارتند از:

  • dhcp: نشانی‌های IP از یک کارساز DHCP در شبکه اختصاص می‌یابند. هنگام استفاده از بک‌اند netavark، واحد netavark-dhcp-proxy.socket باید فعال باشد تا پراکسی DHCP هنگام شروع یک کانتینر اجرا شود؛ برای CNI به جای آن از واحد cni-dhcp.socket استفاده کنید.
  • host-local: نشانی‌های IP به‌صورت محلی اختصاص می‌یابند.
  • none: هیچ نشانی IP به رابط‌ها اختصاص داده نمی‌شود.

مشاهده درایور در خروجی podman network inspect زیر فیلد ipam_options امکان‌پذیر است.

فعال‌سازی شبکه IPv6 (پشته دوگانه یا Dual Stack). اگر هیچ زیرشبکه‌ای مشخص نشود، یک زیرشبکه IPv4 و یک زیرشبکه IPv6 اختصاص می‌دهد.

تنظیم یک یا چند برچسب OCI بر روی شبکه.

تنظیم گزینه‌های مختص درایور.

همه درایورها گزینه‌های mtu، metric و no_default_route را می‌پذیرند.

  • mtu: بیشینه واحد انتقال (MTU) را تنظیم می‌کند و یک مقدار عدد صحیح می‌گیرد.
  • metric: متریک مسیر (Route Metric) را برای مسیر پیش‌فرض ایجادشده در هر کانتینر متصل به این شبکه تنظیم می‌کند. یک مقدار عدد صحیح مثبت می‌پذیرد. تنها با بک‌اند شبکه Netavark قابل استفاده است.
  • no_default_route: اگر روی true تنظیم شود، پودمن به‌طور خودکار مسیر پیش‌فرضی به زیرشبکه‌ها اضافه نمی‌کند. مسیرها همچنان می‌توانند با ایجاد یک مسیر سفارشی با استفاده از --route به‌صورت دستی اضافه شوند.

علاوه بر این، درایور bridge از گزینه‌های زیر پشتیبانی می‌کند:

  • vlan: این گزینه یک برچسب VLAN اختصاص می‌دهد و vlan_filtering را فعال می‌سازد. مقدار پیش‌فرض none است.
  • isolate: این گزینه شبکه‌های پل را از سایر شبکه‌های پل جدا (ایزوله) می‌کند. باید به‌صورت isolate=<value> تنظیم شود (مقدار الزامی است؛ استفاده تنها از isolate نامعتبر است). مقدار پیش‌فرض strict است. مقادیر پشتیبانی‌شده:
  • strict: ترافیک ورودی و خروجی با تمام شبکه‌های پل دیگر را مسدود می‌کند. این حالت پیش‌فرض در صورت حذف گزینه است.
  • true: ترافیک را تنها میان شبکه‌هایی مسدود می‌کند که جداسازی در آن‌ها نیز فعال است (true یا strict).
  • false: شبکه را جداسازی نمی‌کند؛ اجازه تبادل ترافیک با سایر شبکه‌های پل را می‌دهد. برای بازگرداندن رفتار پیش از پودمن نسخه ۶ / Netavark 2 از این مقدار استفاده کنید.
  • com.docker.network.bridge.name: این گزینه نام ارائه‌شده را به پل لینوکس (Linux Bridge) ایجادشده اختصاص می‌دهد.
  • com.docker.network.driver.mtu: بیشینه واحد انتقال (MTU) را تنظیم می‌کند و یک مقدار عدد صحیح می‌پذیرد.
  • vrf: این گزینه یک جدول مسیریابی هدایت و مسیریابی مجازی (VRF) به رابط پل اختصاص می‌دهد. نام VRF را می‌پذیرد و پیش‌فرض آن none است. تنها با بک‌اند شبکه Netavark قابل استفاده است.
  • mode: این گزینه حالت مشخص‌شده پل را روی رابط تنظیم می‌کند. پیش‌فرض آن managed است. مقادیر پشتیبانی‌شده:
  • managed: پودمن پل را ایجاد و حذف کرده و مقادیر sysctl آن را تغییر می‌دهد. قوانین دیوار آتش را برای مبدل‌سازی (masquerade) ترافیک خروجی و همچنین راه‌اندازی فوروارد پورت برای ترافیک ورودی با استفاده از DNAT اضافه می‌کند.
  • unmanaged: پودمن از یک پل موجود استفاده می‌کند. این پل باید تا زمانی که می‌خواهید کانتینری با استفاده از شبکه اجرا کنید، وجود داشته باشد. هیچ NAT یا فوروارد پورتی وجود نخواهد داشت، حتی اگر چنین گزینه‌هایی در هنگام ساخت کانتینر ارسال شده باشند.

درایورهای macvlan و ipvlan از گزینه‌های زیر پشتیبانی می‌کنند:

  • parent: دستگاه میزبان که برای رابط macvlan استفاده می‌شود. پیش‌فرض آن رابط دارای مسیر پیش‌فرض است.
  • mode: این گزینه حالت مشخص‌شده ip/macvlan را روی رابط تنظیم می‌کند.
  • مقادیر پشتیبانی‌شده برای macvlan عبارتند از bridge، private، vepa و passthru. مقدار پیش‌فرض bridge است.
  • مقادیر پشتیبانی‌شده برای ipvlan عبارتند از l2، l3 و l3s. مقدار پیش‌فرض l2 است.

علاوه بر این، درایور macvlan از گزینه bclim پشتیبانی می‌کند:

•
bclim: آستانه برای صف‌بندی برودکست (پخش همگانی) را تنظیم می‌کند. باید یک عدد صحیح ۳۲ بیتی باشد. تنظیم این مقدار روی -1 صف‌بندی برودکست را به‌طور کلی غیرفعال می‌کند.

یک مسیر ایستا در قالب <destination in CIDR notation>,<gateway|type>,<route metric (optional)>. دروازه (gateway) باید یک نشانی IP معتبر باشد یا در غیر این صورت می‌توان به جای آن نوعی مشخص کرد که باید یکی از مقادیر blackhole، unreachable یا prohibit باشد که بدین معنی است که ترافیک زیرشبکه به هیچ جا مسیریابی نخواهد شد. این مسیر به تمام کانتینرهای موجود در این شبکه اضافه خواهد شد. در صورتی که بیش از یک مسیر ایستا مد نظر باشد، می‌تواند چندین بار مشخص شود.

توجه داشته باشید مسیرها درون فضای نام کانتینر اضافه می‌شوند؛ اگر به یک کانتینر قابلیت CAP_NET_ADMIN داده شده باشد، می‌تواند مسیرها را تغییر دهد، بنابراین در این حالت نمی‌توان از آن برای مسائل مرتبط با امنیت استفاده کرد.

زیرشبکه در نمادگذاری CIDR. برای تخصیص بیش از یک زیرشبکه برای این شبکه، می‌تواند چندین بار مشخص شود.

ترتیب آرگومان‌های گزینه‌های --subnet، --gateway و --ip-range باید با یکدیگر مطابقت داشته باشد.

این گزینه برای تنظیم یک زیرشبکه ایستای IPv4 و IPv6 مفید است.

ایجاد یک شبکه بدون هیچ گزینه‌ای:

$ podman network create
podman2

ایجاد شبکه‌ای به نام newnet که از 192.5.0.0/16 برای زیرشبکه خود استفاده می‌کند:

$ podman network create --subnet 192.5.0.0/16 newnet
newnet

ایجاد یک شبکه IPv6 با نام newnetv6 با زیرشبکه 2001:db8::/64:

$ podman network create --subnet 2001:db8::/64 --ipv6 newnetv6
newnetv6

ایجاد شبکه‌ای به نام newnet که از 192.168.33.0/24 استفاده کرده و یک دروازه به صورت 192.168.33.3 تعریف می‌کند:

$ podman network create --subnet 192.168.33.0/24 --gateway 192.168.33.3 newnet
newnet

ایجاد شبکه‌ای که از یک زیرشبکه 192.168.55.0/24 استفاده کرده و دارای محدوده نشانی IP از 192.168.55.129 - 192.168.55.254 است:

$ podman network create --subnet 192.168.55.0/24 --ip-range 192.168.55.128/25
podman5

ایجاد شبکه‌ای با زیرشبکه ایستای IPv4 و IPv6 و تعیین یک دروازه:

$ podman network create --subnet 192.168.55.0/24 --gateway 192.168.55.3 --subnet fd52:2a5a:747e:3acd::/64 --gateway fd52:2a5a:747e:3acd::10
podman4

ایجاد شبکه‌ای با یک زیرشبکه ایستا و یک مسیر ایستا:

$ podman network create --subnet 192.168.33.0/24 --route 10.1.0.0/24,192.168.33.10 newnet

ایجاد شبکه‌ای با یک زیرشبکه ایستا و یک مسیر ایستا بدون مسیر پیش‌فرض:

$ podman network create --subnet 192.168.33.0/24 --route 10.1.0.0/24,192.168.33.10 --opt no_default_route=true newnet

ایجاد یک شبکه پل بدون جداسازی (isolation) از سایر شبکه‌های پل (جداسازی به‌طور پیش‌فرض strict است). این گزینه باید به‌صورت key=value داده شود:

$ podman network create --opt isolate=false mynet
mynet

ایجاد شبکه‌ای با یک مسیر از نوع blackhole (سیاه‌چاله). این بدان معنی است که ترافیک ارسالی به زیرشبکه مقصد بدون اعلام خطا نادیده گرفته و دور انداخته می‌شود:

$ podman network create --route 10.1.0.0/24,blackhole --opt no_default_route=true newnet

ایجاد یک شبکه مبتنی بر Macvlan با استفاده از رابط میزبان eth0. شبکه‌های Macvlan فقط با دسترسی کاربر ریشه (root) قابل استفاده هستند:

$ sudo podman network create -d macvlan -o parent=eth0 --subnet 192.5.0.0/16 newnet
newnet

podman(1), podman-network(1), podman-network-inspect(1), podman-network-ls(1), containers.conf(5)

اوت ۲۰۲۱، با قالب شبکه جدید توسط Paul Holzinger pholzing@redhat.com ⟨mailto:pholzing@redhat.com⟩ به‌روزرسانی شد.

اوت ۲۰۱۹، در ابتدا توسط Brent Baude bbaude@redhat.com ⟨mailto:bbaude@redhat.com⟩ گردآوری شد.