NM-CLOUD-SETUP(8) Automatic Network Configuration NM-CLOUD-SETUP(8)

nm-cloud-setup - نمای کلی از پیکربندی خودکار شبکه در محیط‌های ابری

هنگام اجرای یک ماشین مجازی در محیط ابری عمومی، پیکربندی خودکار شبکه آن ماشین مجازی مطلوب و مورد انتظار است. در پیکربندی‌های ساده، ماشین مجازی تنها یک رابط شبکه دارد و ابر عمومی از پیکربندی خودکار از طریق DHCP ،DHCP6 یا IPv6 autoconf پشتیبانی می‌کند. با این حال، ممکن است ماشین مجازی چندین رابط شبکه داشته باشد، یا دارای چندین آدرس IP و زیرشبکه IP روی یک رابط باشد که نمی‌توان آن‌ها را از طریق DHCP پیکربندی کرد. همچنین ممکن است مدیر سیستم در حین اجرای ماشین، شبکه را بازپیکربندی کند. ابزار nm-cloud-setup در NetworkManager ابزاری است که چنین پیکربندی‌هایی را در محیط‌های ابری به‌طور خودکار شناسایی کرده و پیکربندی شبکه میزبان را به‌روزرسانی می‌کند.

ارائه‌دهندگان ابری متعددی پشتیبانی می‌شوند. بخش “ارائه‌دهندگان ابری پشتیبانی‌شده (SUPPORTED CLOUD PROVIDERS)” را ببینید.

هدف nm-cloud-setup این است که بدون نیاز به پیکربندی دستی و به‌طور خودکار کار کند. تنها کاری که باید انجام دهید این است که ارائه‌دهندگان ابری مورد نظر را فعال کنید (بخش “متغیرهای محیطی (ENVIRONMENT VARIABLES)” را ببینید) و /usr/libexec/nm-cloud-setup را اجرا کنید.

معمولاً این کار با فعال‌سازی سرویس سیستم‌دی nm-cloud-setup.service و اجرای دوره‌ای آن انجام می‌شود. برای این منظور، هم یک تایمر سیستم‌دی nm-cloud-setup.timer و هم یک اسکریپت دیسپچر NetworkManager در دسترس است.

ابزار nm-cloud-setup شبکه را با واکشی پیکربندی از سرور فراداده (Metadata) شناخته‌شده ارائه‌دهنده ابری پیکربندی می‌کند. این بدان معناست که شبکه باید از پیش تا حدی پیکربندی شده باشد که بتواند به سرور فراداده دسترسی پیدا کند. معمولاً این بدین معنی است که یک نمایه اتصال ساده فعال است که احتمالاً از DHCP برای دریافت آدرس IP اولیه استفاده می‌کند. چنانچه در تنظیمات "no-auto-default" در NetworkManager.conf خلاف آن مشخص نشده باشد، NetworkManager چنین نمایه‌ای را به‌طور خودکار برای دستگاه‌های اترنت ایجاد می‌کند. یک راهکار جایگزین ممکن است ایجاد چنین نمایه اولیه‌ای با دستور nmcli device connect "$DEVICE" یا nmcli connection add type ethernet ... باشد.

با تنظیم داده کاربر org.freedesktop.nm-cloud-setup.skip=yes روی نمایه، nm-cloud-setup از این دستگاه صرف‌نظر خواهد کرد.

ابزار nm-cloud-setup پیکربندی زمان اجرا را مشابه دستور nmcli device modify تغییر می‌دهد. با این رویکرد، پیکربندی ذخیره و ماندگار نمی‌شود و تنها تا زمان قطع اتصال دستگاه حفظ می‌گردد.

فایل اجرایی /usr/libexec/nm-cloud-setup بیشتر کارها را انجام می‌دهد. این برنامه از هیچ آرگومان خط فرمانی پشتیبانی نمی‌کند اما از طریق متغیرهای محیطی قابل پیکربندی است. برای مشاهده متغیرهای محیطی پشتیبانی‌شده، بخش “متغیرهای محیطی (ENVIRONMENT VARIABLES)” را ببینید.

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

هدف این است که هر بار که پیکربندی (احتمالاً) تغییر می‌کند، nm-cloud-setup دوباره اجرا شود. این ابزار خاصیت خودتوان (idempotent) دارد، بنابراین اجرای آن بیش از حد نیاز نیز مشکلی ایجاد نمی‌کند. می‌توانید /usr/libexec/nm-cloud-setup را مستقیماً اجرا کنید. با این حال ترجیح داده می‌شود که به‌جای آن، سرویس سیستم‌دی nm-cloud-setup را مجدداً راه‌اندازی کنید یا از تایمر یا اسکریپت دیسپچر برای اجرای دوره‌ای آن استفاده نمایید (به بخش زیر مراجعه کنید).

معمولاً /usr/libexec/nm-cloud-setup به‌طور مستقیم اجرا نمی‌شود، بلکه تنها با دستور systemctl restart nm-cloud-setup.service فراخوانی می‌گردد. این کار تضمین می‌کند که این ابزار در هر لحظه تنها یک بار اجرا شود. این واحد همچنین توسط تایمر سیستم‌دی nm-cloud-setup استفاده می‌شود و امکان فعال یا غیرفعال کردن سرویس را از طریق سیستم‌دی فراهم می‌سازد.

از آنجا که برای پیکربندی فایل اجرایی nm-cloud-setup نیاز به تنظیم متغیرهای محیطی دارید، می‌توانید این کار را از طریق فایل‌های بازنویسی (override) سیستم‌دی انجام دهید. دستور systemctl edit nm-cloud-setup.service را امتحان کنید.

فایل اجرایی /usr/libexec/nm-cloud-setup به این منظور طراحی شده است که در هر زمان که به‌روزرسانی لازم باشد اجرا گردد؛ برای مثال، در هنگام راه‌اندازی سیستم یا هنگام تغییر پیکربندی شبکه ماشین مجازی از طریق ارائه‌دهنده ابری.

یکی از روش‌های انجام این کار، فعال‌سازی تایمر سیستم‌دی nm-cloud-setup.timer با دستور زیر است:

systemctl enable --now nm-cloud-setup.timer

همچنین یک اسکریپت دیسپچر در NetworkManager وجود دارد که به عنوان مثال هنگام فعال شدن یک رابط شبکه توسط NetworkManager اجرا می‌شود. این اسکریپت در کنار تایمر سیستم‌دی nm-cloud-setup.timer تغییرات شبکه را به‌طور خودکار دریافت می‌کند.

اسکریپت دیسپچر تا زمانی که سرویس سیستم‌دی فعال نشده باشد، هیچ کاری انجام نخواهد داد. بنابراین برای استفاده از اسکریپت دیسپچر، باید یک بار دستور systemctl enable nm-cloud-setup.service را اجرا کنید.

متغیرهای محیطی زیر برای پیکربندی /usr/libexec/nm-cloud-setup به کار می‌روند. ممکن است بخواهید آن‌ها را با یک فایل دراپ‌این (drop-in) برای سرویس سیستم‌دی تنظیم کنید؛ برای مثال با اجرای دستور systemctl edit nm-cloud-setup.service و پیکربندی [Service] Environment= ، همان‌طور که در راهنمای systemd.exec(5) توصیف شده است.

•NM_CLOUD_SETUP_LOG: میزان جزئیات گزارش‌گیری (لاگ) را کنترل می‌کند. آن را روی یکی از مقادیر TRACE ، DEBUG ، INFO ، WARN ، ERR یا OFF تنظیم کنید. برنامه پیام‌ها را در خروجی استاندارد (stdout) چاپ می‌کند و سطح پیش‌فرض آن WARN است. هنگامی که به عنوان سرویس سیستم‌دی اجرا می‌شود، لاگ‌ها توسط journald جمع‌آوری شده و با دستور journalctl قابل مشاهده خواهند بود.
•NM_CLOUD_SETUP_AZURE: بولی (boolean)، که مشخص می‌کند پشتیبانی از مایکروسافت آژور فعال است یا خیر. پیش‌فرض no است.
•NM_CLOUD_SETUP_EC2: بولی (boolean)، که مشخص می‌کند پشتیبانی از آمازون EC2 (AWS) فعال است یا خیر. پیش‌فرض no است.
•NM_CLOUD_SETUP_GCP: بولی (boolean)، که مشخص می‌کند پشتیبانی از گوگل جی‌سی‌پی (Google GCP) فعال است یا خیر. پیش‌فرض no است.
•NM_CLOUD_SETUP_ALIYUN: بولی (boolean)، که مشخص می‌کند پشتیبانی از علی‌بابا کلود (Aliyun) فعال است یا خیر. پیش‌فرض no است.
•NM_CLOUD_SETUP_OCI: بولی (boolean)، که مشخص می‌کند پشتیبانی از اوراکل کلود (OCI) فعال است یا خیر. پیش‌فرض no است.

با تنظیم متغیر محیطی NM_CLOUD_SETUP_LOG روی مقدار TRACE گزارش‌گیری اشکال‌زدایی را فعال کنید.

در حالت معمول که nm-cloud-setup به عنوان سرویس سیستم‌دی در حال اجرا است، این کار از طریق دستور systemctl edit nm-cloud-setup.service و افزودن Environment=NM_CLOUD_SETUP_LOG=TRACE به بخش [Service] انجام می‌شود. پس از آن، لاگ‌ها از طریق دستور journalctl در لاگ‌های سیستم (syslog) قابل مشاهده خواهند بود. همچنین ممکن است بخواهید همان‌طور که در بخش اشکال‌زدایی راهنمای NetworkManager(5) آمده است، گزارش‌گیری اشکال‌زدایی را در NetworkManager فعال کنید. هنگام اشتراک‌گذاری لاگ‌ها، بهتر است لاگ‌های کامل به اشتراک گذاشته شوند و از فیلتر کردن پیشاپیش لاگ‌های NetworkManager یا nm-cloud-setup خودداری شود.

همان‌طور که پیش‌تر توضیح داده شد، nm-cloud-setup باید صریحاً فعال شود. با توجه به اینکه این ابزار به عنوان یک سرویس و تایمر سیستم‌دی اجرا می‌شود، این فعال‌سازی اساساً به معنای فعال کردن و پیکربندی آن‌هاست. این کار با قرار دادن فایل‌ها و پیوندهای نمادین مناسب روی دیسک امکان‌پذیر است.

مثال زیر nm-cloud-setup را برای ابر Amazon EC2 فعال می‌کند:

dnf install -y NetworkManager-cloud-setup
mkdir -p /etc/systemd/system/nm-cloud-setup.service.d
cat > /etc/systemd/system/nm-cloud-setup.service.d/10-enable-ec2.conf << EOF
[Service]
Environment=NM_CLOUD_SETUP_EC2=yes
EOF
# systemctl enable nm-cloud-setup.service
mkdir -p /etc/systemd/system/NetworkManager.service.wants/
ln -s /usr/lib/systemd/system/nm-cloud-setup.service /etc/systemd/system/NetworkManager.service.wants/nm-cloud-setup.service
# systemctl enable nm-cloud-setup.timer
mkdir -p /etc/systemd/system/timers.target.wants/
ln -s /etc/systemd/system/timers.target.wants/nm-cloud-setup.timer /usr/lib/systemd/system/nm-cloud-setup.timer
# systemctl daemon-reload

برای AWS، این ابزار تلاش می‌کند پیکربندی را از http://169.254.169.254 واکشی کند. در حال حاضر، این ابزار فقط IPv4 را پیکربندی کرده و کاری برای IPv6 انجام نمی‌دهد. مراحل زیر انجام خواهد شد:

•ابتدا آدرس http://169.254.169.254/latest/meta-data/ را واکشی می‌کند تا مشخص شود که آیا API مورد انتظار در دسترس است یا خیر. این کار تعیین می‌کند که آیا محیط EC2 شناسایی شده است و آیا باید پیکربندی میزبان با استفاده از فراداده EC2 ادامه یابد یا خیر.
•سپس آدرس http://169.254.169.254/2018-09-24/meta-data/network/interfaces/macs/ را واکشی می‌کند تا فهرست رابط‌های موجود را به دست آورد. رابط‌ها با آدرس MAC خود شناسایی می‌شوند.
•سپس برای هر رابط، آدرس‌های http://169.254.169.254/2018-09-24/meta-data/network/interfaces/macs/$MAC/subnet-ipv4-cidr-block و http://169.254.169.254/2018-09-24/meta-data/network/interfaces/macs/$MAC/local-ipv4s را واکشی می‌کند. از این طریق فهرستی از آدرس‌های IPv4 محلی و یک بلوک زیرشبکه CIDR به دست می‌آید.
•سپس nm-cloud-setup روی تمام رابط‌هایی که موفق به دریافت پیکربندی IP برای آن‌ها شده است پیمایش می‌کند. اگر هیچ دستگاه اترنت متناظری برای آدرس MAC مربوطه پیدا نشود، از آن صرف‌نظر می‌شود. همچنین اگر دستگاه در حال حاضر در NetworkManager فعال نباشد یا اگر نمایه فعال فعلی دارای داده کاربر org.freedesktop.nm-cloud-setup.skip=yes باشد، از آن صرف‌نظر خواهد شد.

اگر فقط یک رابط و یک آدرس پیکربندی شده باشد، ابزار هیچ کاری انجام نداده و پیکربندی خودکار به‌دست‌آمده از طریق DHCP را بدون تغییر رها می‌کند.

در غیر این صورت، این ابزار پیکربندی زمان اجرای دستگاه را تغییر خواهد داد.

•آدرس‌های IPv4 ایستا را برای تمام آدرس‌های پیکربندی‌شده از local-ipv4s با طول پیشوند منطبق با subnet-ipv4-cidr-block اضافه می‌کند. به عنوان مثال، ممکن است در اینجا ۲ آدرس IP مانند "172.16.5.3/24,172.16.5.4/24" داشته باشیم.
•جدول مسیریابی 30400 + شناسه رابط را انتخاب کرده و یک مسیر پیش‌فرض 0.0.0.0/0 اضافه می‌کند. درگاه پیش‌فرض (gateway) اولین آدرس IP در بلوک زیرشبکه CIDR است. برای مثال، ممکن است مسیری مانند "0.0.0.0/0 172.16.5.1 10 table=30400" به دست آوریم.

همچنین جدول مسیریابی 30200 + شناسه رابط را انتخاب می‌کند. این جدول شامل مسیرهای مستقیم به زیرشبکه‌های این رابط است.

•در نهایت، یک قانون مسیریابی مبتنی بر خط‌مشی (policy routing rule) برای هر آدرس اضافه می‌کند؛ برای مثال: "priority 30200 from 172.16.5.3/32 table 30200, priority 30200 from 172.16.5.4/32 table 30200" و "priority 30400 from 172.16.5.3/32 table 30400, priority 30400 from 172.16.5.4/32 table 30400" قوانین +30200 جدولی را برای دسترسی مستقیم به زیرشبکه انتخاب می‌کنند، در حالی که قوانین +30400 از مسیر پیش‌فرض استفاده می‌نمایند. همچنین قانونی با مشخصات زیر اضافه می‌کند: "priority 30350 table main suppress_prefixlength 0". این قانون اولویتی بین دو قانون قبلی دارد و باعث جستجوی مسیرها در جدول اصلی (main) ضمن نادیده گرفتن مسیر پیش‌فرض می‌شود. هدف این است که سایر مسیرهای خاص‌تر در جدول اصلی نسبت به مسیر پیش‌فرض در جدول +30400 ارجحیت داشته باشند.

با مثال فوق، این موارد برای رابط eth0 تقریباً معادل دستور زیر است:

nmcli device modify "eth0" ipv4.addresses "172.16.5.3/24,172.16.5.4/24" ipv4.routes "172.16.5.0/24 0.0.0.0 10 table=30200, 0.0.0.0/0 172.16.5.1 10 table=30400" ipv4.routing-rules "priority 30200 from 172.16.5.3/32 table 30200, priority 30200 from 172.16.5.4/32 table 30200, priority 20350 table main suppress_prefixlength 0, priority 30400 from 172.16.5.3/32 table 30400, priority 30400 from 172.16.5.4/32 table 30400". توجه داشته باشید که این کار آدرس‌ها، مسیرها و قوانین قبلی را با اطلاعات جدید جایگزین می‌کند. اما همچنین دقت کنید که این دستور تنها پیکربندی زمان اجرای دستگاه را تغییر می‌دهد و نمایه اتصال ذخیره‌شده روی دیسک تحت تأثیر قرار نمی‌گیرد.

برای GCP، فراداده از نشانی‌های اینترنتی شروع‌شده با http://metadata.google.internal/computeMetadata/v1/ به همراه هدر HTTP با مقدار "Metadata-Flavor: Google" واکشی می‌شود. در حال حاضر، این ابزار تنها IPv4 را پیکربندی کرده و کاری برای IPv6 انجام نمی‌دهد. مراحل زیر انجام خواهد شد:

•ابتدا آدرس http://metadata.google.internal/computeMetadata/v1/instance/id را واکشی می‌کند تا تشخیص دهد که آیا ابزار روی پلتفرم ابری گوگل (GCP) در حال اجراست یا خیر. تنها در صورت شناسایی این پلتفرم، واکشی پیکربندی ادامه خواهد یافت.
•سپس آدرس http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/ را واکشی می‌کند تا فهرست شناسه‌های رابط‌های موجود را به دست آورد. از این شناسه‌ها می‌توان برای جستجوهای بعدی استفاده کرد.
•سپس برای هر رابط، آدرس http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$IFACE_INDEX/mac را واکشی می‌کند تا آدرس MAC مربوط به رابط‌های پیداشده را به دست آورد. آدرس MAC بعداً برای شناسایی دستگاه به کار می‌رود.
•سپس برای هر رابط دارای آدرس MAC، نشانی http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$IFACE_INDEX/forwarded-ips/ و سپس تمام آدرس‌های IP پیداشده در http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$IFACE_INDEX/forwarded-ips/$FIPS_INDEX را واکشی می‌کند.
•در این مرحله، فهرستی از تمام رابط‌ها (بر اساس آدرس MAC) و آدرس‌های IPv4 پیکربندی‌شده آن‌ها داریم.

برای هر دستگاه، اتصال اعمال‌شده فعلی در NetworkManager را جستجو می‌کنیم. این امر مستلزم آن است که دستگاه در حال حاضر در NetworkManager فعال باشد. اگر چنین دستگاهی در NetworkManager وجود نداشته باشد، یا اگر نمایه دارای داده کاربر org.freedesktop.nm-cloud-setup.skip=yes باشد، از دستگاه صرف‌نظر می‌کنیم. اکنون برای هر آدرس IP پیداشده، یک مسیر ایستا به صورت "$FIPS_ADDR/32 0.0.0.0 100 type=local" اضافه کرده و تغییر را مجدداً اعمال می‌کنیم.

نتیجه این کار مشابه اجرای دستور زیر برای تمام دستگاه‌های مربوطه و تمام آدرس‌های پیداشده است:

nmcli device modify "$DEVICE" ipv4.routes "$FIPS_ADDR/32 0.0.0.0 100 type=local [,...]"

برای آژور، فراداده از نشانی‌های اینترنتی شروع‌شده با http://169.254.169.254/metadata/instance به همراه پارامتر URL "?format=text&api-version=2017-04-02" و هدر HTTP "Metadata:true" واکشی می‌شود. در حال حاضر، این ابزار فقط IPv4 را پیکربندی کرده و کاری برای IPv6 انجام نمی‌دهد. مراحل زیر انجام خواهد شد:

•ابتدا نشانی http://169.254.169.254/metadata/instance?format=text&api-version=2017-04-02 را واکشی می‌کند تا مشخص شود که آیا این ابزار روی ابر آژور اجرا می‌شود یا خیر. تنها در صورت شناسایی این پلتفرم، واکشی پیکربندی ادامه می‌یابد.
•سپس نشانی http://169.254.169.254/metadata/instance/network/interface/?format=text&api-version=2017-04-02 را واکشی می‌کند تا فهرست شناسه‌های رابط‌های موجود به دست آید. از این شناسه‌ها می‌توان برای جستجوهای بعدی استفاده کرد.
•سپس برای هر رابط، نشانی http://169.254.169.254/metadata/instance/network/interface/$IFACE_INDEX/macAddress?format=text&api-version=2017-04-02 را واکشی می‌کند تا آدرس MAC متناظر رابط‌های پیداشده به دست آید. آدرس MAC بعداً برای شناسایی دستگاه به کار می‌رود.
•سپس برای هر رابط دارای آدرس MAC، نشانی http://169.254.169.254/metadata/instance/network/interface/$IFACE_INDEX/ipv4/ipAddress/?format=text&api-version=2017-04-02 را واکشی می‌کند تا فهرست (شناسه‌های) آدرس‌های IP روی آن رابط به دست آید.
•سپس برای هر شناسه آدرس IP، آدرس را از نشانی http://169.254.169.254/metadata/instance/network/interface/$IFACE_INDEX/ipv4/ipAddress/$ADDR_INDEX/privateIpAddress?format=text&api-version=2017-04-02 واکشی می‌کند. همچنین اندازه زیرشبکه و پیشوند رابط را از نشانی‌های http://169.254.169.254/metadata/instance/network/interface/$IFACE_INDEX/ipv4/subnet/0/address/?format=text&api-version=2017-04-02 و http://169.254.169.254/metadata/instance/network/interface/$IFACE_INDEX/ipv4/subnet/0/prefix/?format=text&api-version=2017-04-02 واکشی می‌نماید.
•در این مرحله، فهرستی از تمامی رابط‌ها (بر اساس آدرس MAC) و آدرس‌های IPv4 پیکربندی‌شده آن‌ها داریم.

سپس این ابزار سیستم را مشابه محیط AWS پیکربندی می‌کند؛ یعنی با استفاده از مسیریابی مبتنی بر خط‌مشی مبتنی بر مبدأ با جداول/قوانین 30200/30400.

برای علی‌بابا کلود (Aliyun)، ابزار تلاش می‌کند پیکربندی را از http://100.100.100.200 واکشی کند. در حال حاضر، این ابزار فقط IPv4 را پیکربندی کرده و کاری برای IPv6 انجام نمی‌دهد. مراحل زیر انجام خواهد شد:

•ابتدا نشانی http://100.100.100.200/2016-01-01/meta-data/ را واکشی می‌کند تا مشخص شود که آیا API مورد انتظار در دسترس است یا خیر. این کار تعیین می‌کند که آیا محیط Aliyun شناسایی شده است و آیا باید پیکربندی میزبان با استفاده از فراداده Aliyun ادامه یابد یا خیر.
•سپس نشانی http://100.100.100.200/2016-01-01/meta-data/network/interfaces/macs/ را واکشی می‌کند تا فهرست رابط‌های موجود به دست آید. رابط‌ها با آدرس MAC خود شناسایی می‌شوند.
•سپس برای هر رابط، نشانی‌های http://100.100.100.200/2016-01-01/meta-data/network/interfaces/macs/$MAC/vpc-cidr-block ، http://100.100.100.200/2016-01-01/meta-data/network/interfaces/macs/$MAC/private-ipv4s ، http://100.100.100.200/2016-01-01/meta-data/network/interfaces/macs/$MAC/netmask و http://100.100.100.200/2016-01-01/meta-data/network/interfaces/macs/$MAC/gateway را واکشی می‌کند. از این طریق فهرستی از آدرس‌های IPv4 خصوصی، یک بلوک زیرشبکه CIDR و پیشوند آدرس‌های IPv4 خصوصی به دست می‌آید.
•سپس nm-cloud-setup روی تمام رابط‌هایی که موفق به دریافت پیکربندی IP برای آن‌ها شده است پیمایش می‌کند. اگر هیچ دستگاه اترنت متناظری برای آدرس MAC مربوطه پیدا نشود، از آن صرف‌نظر می‌شود. همچنین اگر دستگاه در حال حاضر در NetworkManager فعال نباشد یا اگر نمایه فعال فعلی دارای داده کاربر org.freedesktop.nm-cloud-setup.skip=yes باشد، از آن صرف‌نظر خواهد شد. همچنین اگر تنها یک رابط و یک آدرس IP وجود داشته باشد، این ابزار کاری انجام نمی‌دهد.

سپس این ابزار سیستم را مشابه محیط AWS پیکربندی می‌کند؛ یعنی با استفاده از مسیریابی مبتنی بر خط‌مشی مبتنی بر مبدأ با جداول/قوانین 30200/30400. یک تفاوت با AWS این است که درگاه پیش‌فرض (gateway) نیز به‌جای استفاده از اولین آدرس IP در زیرشبکه، از طریق فراداده واکشی می‌شود.

برای OCI، ابزار تلاش می‌کند پیکربندی را از http://169.254.169.254 واکشی کند. در حال حاضر، این ابزار فقط IPv4 را پیکربندی کرده و کاری برای IPv6 انجام نمی‌دهد. مراحل زیر انجام خواهد شد:

•ابتدا نشانی http://169.254.169.254/opc/v2/instance را واکشی می‌کند تا مشخص شود که آیا API مورد انتظار در دسترس است یا خیر. این کار تعیین می‌کند که آیا محیط OCI شناسایی شده است و آیا باید پیکربندی میزبان با استفاده از فراداده OCI ادامه یابد یا خیر.
•سپس نشانی http://169.254.169.254/opc/v2/vnics را واکشی می‌کند تا پیکربندی تمامی کارت‌های شبکه مجازی (VNIC) شامل آدرس MAC، آدرس IP خصوصی، درگاه پیش‌فرض و بلوک زیرشبکه آن‌ها به دست آید.
•سپس nm-cloud-setup روی تمام رابط‌هایی که توانسته پیکربندی آن‌ها را واکشی کند پیمایش می‌کند. اگر هیچ دستگاه اترنت متناظری برای آدرس MAC مربوطه پیدا نشود، از آن صرف‌نظر می‌شود. همچنین اگر دستگاه در حال حاضر در NetworkManager فعال نباشد یا اگر نمایه فعال فعلی دارای داده کاربر org.freedesktop.nm-cloud-setup.skip=yes باشد، از آن صرف‌نظر خواهد شد. همچنین اگر تنها یک رابط و یک آدرس IP وجود داشته باشد، این ابزار کاری انجام نمی‌دهد.

سپس این ابزار سیستم را مشابه محیط AWS پیکربندی می‌کند؛ یعنی با استفاده از مسیریابی مبتنی بر خط‌مشی مبتنی بر مبدأ با جداول/قوانین 30200/30400.

NetworkManager(8) nmcli(1)

NetworkManager 1.58.1