podman-network.unit(5) File Formats Manual podman-network.unit(5)

podman-network.unit - فایل‌های واحد systemd برای مدیریت شبکه‌های پادمن با استفاده از Quadlet

name.network

فایل‌های شبکه با پسوند .network نام‌گذاری می‌شوند و شامل بخش [Network] هستند که شبکه نام‌گذاری‌شده‌ی پادمن را توصیف می‌کند. سرویس ایجادشده یک دستور یک‌باره است که از وجود شبکه روی میزبان اطمینان حاصل کرده و در صورت نیاز آن را ایجاد می‌کند.

به‌طور پیش‌فرض، شبکه پادمن هم‌نام با واحد خواهد بود اما با پیشوند systemd-؛ یعنی برای یک فایل شبکه به نام $NAME.network، شبکه ایجادشده پادمن systemd-$NAME نامیده می‌شود و فایل سرویس ایجادشده $NAME-network.service خواهد بود. گزینه NetworkName اجازه می‌دهد این نام پیش‌فرض با یک نام ارائه‌شده توسط کاربر بازنویسی شود.

لطفاً توجه داشته باشید که متوقف کردن سرویس مربوطه به‌طور پیش‌فرض شبکه پادمن را حذف نمی‌کند - این رفتار را می‌توان با گزینه NetworkDeleteOnStop=true بازنویسی کرد.

علاوه بر این، به‌روزرسانی یک شبکه موجود پشتیبانی نمی‌شود. برای به‌روزرسانی پارامترهای شبکه، ابتدا باید شبکه پادمن را به‌صورت دستی حذف کرده و سپس سرویس را ری‌استارت کنید.

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

فایل .network هنگام بوت یا بارگذاری مجدد توسط podman-system-generator پردازش شده و یک .service در systemd ایجاد می‌کند که دستور podman network create را اجرا می‌نماید.

گزینه‌های معتبر برای [Network] در زیر فهرست شده‌اند:

گزینه‌های [Network] معادل در podman network create
ContainersConfModule=/etc/nvd.conf --module=/etc/nvd.conf
DisableDNS=true --disable-dns
DNS=192.168.55.1 --dns=192.168.55.1
Driver=bridge --driver bridge
Gateway=192.168.55.3 --gateway 192.168.55.3
GlobalArgs=--log-level=debug --log-level=debug
InterfaceName=enp1 --interface-name enp1
Internal=true --internal
IPAMDriver=dhcp --ipam-driver dhcp
IPRange=192.168.55.128/25 --ip-range 192.168.55.128/25
IPv6=true --ipv6
Label="XYZ" --label "XYZ"
NetworkDeleteOnStop=true افزودن ExecStopPost برای حذف شبکه هنگام توقف واحد
NetworkName=foo podman network create foo
Options=isolate=true --opt isolate=true
PodmanArgs=--dns=192.168.55.1 --dns=192.168.55.1
Subnet=192.5.0.0/16 --subnet 192.5.0.0/16

ماژول مشخص‌شده‌ی containers.conf(5) را بارگذاری می‌کند.

این گزینه می‌تواند چندین بار درج شود.

پلاگین 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 به رابط‌های شبکه میزبان دسترسی ندارند زیرا شبکه بدون ریشه نیازمند یک فضای نام (namespace) شبکه مجزاست.

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

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

توجه داشته باشید که درایورهای macvlan و ipvlan از فوروارد پورت (port forwarding) پشتیبانی نمی‌کنند. پشتیبانی از فوروارد پورت با یک پلاگین بستگی به پیاده‌سازی آن پلاگین دارد.

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

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

قالب این مقدار فهرستی از آرگومان‌ها است که با فاصله جدا شده‌اند و در صورت تمایل می‌توان تک‌تک آن‌ها را اسکیپ کرد تا شامل فاصله‌ها و سایر نویسه‌های کنترلی شوند.

این کلید می‌تواند چندین بار درج شود.

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

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

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

استفاده از درایور bridge با این گزینه دارای اثرات زیر است:
- متغیرهای sysctl فوروارد سراسری IP در فضای نام شبکه میزبان تغییر داده نمی‌شوند.
- فوروارد IP به‌جای راه‌اندازی فایروال، روی رابط بریج غیرفعال می‌شود.
- هیچ مسیر پیش‌فرضی به کانتینر اضافه نخواهد شد.

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

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

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

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

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

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

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

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

هنگامی که روی true تنظیم شود، با متوقف شدن سرویس، شبکه حذف می‌شود.

نام (اختیاری) شبکه پادمن. اگر مشخص نشود، مقدار پیش‌فرض هم‌نام با واحد خواهد بود اما با یک پیشوند systemd-؛ یعنی یک فایل $name.network یک شبکه پادمن به نام systemd-$name ایجاد می‌کند تا از تداخل با شبکه‌های مدیریت‌شده توسط کاربر جلوگیری شود.

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

تمام درایورها گزینه‌های 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: شبکه را ایزوله نکن؛ ترافیک به سایر شبکه‌های بریج مجاز باشد. از این گزینه برای بازیابی رفتار نسخه‌های پیش از Podman 6 / Netavark 2 استفاده کنید.
  • com.docker.network.bridge.name: این گزینه نام ارائه‌شده را به بریج لینوکس ایجادشده اختصاص می‌دهد.
  • 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: آستانه صف‌بندی برادکست (broadcast) را تنظیم می‌کند. باید یک عدد صحیح ۳۲ بیتی باشد. تنظیم این مقدار روی -1 صف‌بندی برادکست را به‌طور کامل غیرفعال می‌کند.

این کلید شامل فهرستی از آرگومان‌ها است که در فایل تولیدشده مستقیماً به انتهای دستور podman اضافه می‌شوند. می‌توان از آن برای دسترسی به ویژگی‌هایی از پادمن استفاده کرد که در حالت عادی توسط مولد پشتیبانی نمی‌شوند. از آنجا که مولد از تداخلات و رفتارهای غیرمنتظره احتمالی ناشی از این آرگومان‌ها آگاه نیست، استفاده از این گزینه توصیه نمی‌شود.

قالب این مقدار فهرستی از آرگومان‌ها است که با فاصله جدا شده‌اند و در صورت تمایل می‌توان تک‌تک آن‌ها را اسکیپ کرد تا شامل فاصله‌ها و سایر نویسه‌های کنترلی شوند.

این کلید می‌تواند چندین بار درج شود.

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

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

شبکه بریج پایه‌ای:

[Network]
NetworkName=private0
Subnet=10.10.0.0/16
Gateway=10.10.0.1

فعال‌سازی IPv6 با درایور IPAM:

[Network]
NetworkName=v6net
Subnet=fd00:dead:beef::/64
IPv6=true
IPAMDriver=host-local

podman-network-create(1), podman-systemd.unit(5), systemd.unit(5)