محتوای آموزشی وبلاگ نتآرام
ماشین مجازی اوبونتو را به میزبان دیگری منتقل کردهاید، سیستم بالا میآید، اما SSH و شبکه کار نمیکنند. در کنسول میبینید کارت شبکه جدید مثلاً
ens192 نام دارد، در حالی که تنظیم قبلی هنوز دنبال ens160 میگردد. تغییر جایگاه مجازی کارت، نوع کنترلر یا روش نامگذاری سیستم میتواند نام رابط را عوض کند؛ در نتیجه تنظیم IP روی کارت مورد انتظار اعمال نمیشود.این تنها دلیل قطع شبکه نیست. جدا بودن کابل مجازی، MAC جدید، تنظیم نادرست شبکه مقصد یا آدرس نامعتبر نیز میتوانند همان علامت را ایجاد کنند. در این راهنما قبل از ویرایش، کارت درست را با تنظیم ماشین تطبیق میدهیم و بعد تنظیم Netplan را اصلاح و اتصال را آزمایش میکنیم. مثالها برای اوبونتوی دارای Netplan روی سرور مجازی ایران هستند؛ اصول تشخیص روی سرور اختصاصی ایران هم کاربرد دارد، اما جزئیات کارت و شبکه فیزیکی متفاوت است.
۱. راه دسترسی جایگزین و اطلاعات شبکه را آماده کنید
از کنسول مجازیسازی یا پنل ارائهدهنده وارد سیستم شوید؛ اتصال SSH که هماکنون قطع است راه بازیابی قابل اتکایی نیست. نام رابط قدیم و جدید، MAC، IP و prefix، gateway، DNS و نوع آدرسدهی DHCP یا ثابت را از تنظیم قبلی و اطلاعات شبکه مقصد جمع کنید. اگر آدرس ثابت هنگام انتقال باید تغییر کند، مقدارهای جدید را از مدیر شبکه بگیرید.
پیش از روشنکردن همزمان نسخه قدیمی و جدید با یک IP یا MAC، وضعیت آنها را با مدیر زیرساخت هماهنگ کنید؛ تکرار نشانی میتواند هر دو سرویس را مختل کند. پیش از ویرایش نیز از فایل تنظیم و روش بازگشت نسخه قابل بازیابی داشته باشید.
۲. ببینید کارت جدید واقعاً وجود و لینک دارد
در کنسول اوبونتو اجرا کنید:
کد / دستورip -br link
ip -br address
خروجی رابطها و نشانیهای فعلی را خلاصه نشان میدهد. مثلاً ممکن است
کد / دستورens192 دیده شود ولی ens160 وجود نداشته باشد. برای خواندن جزئیات و MAC رابط نمونه:ip link show dev ens192
نام واقعی را جایگزین کنید. مقدار پس از
link/ether را با MAC کارت ثبتشده در تنظیم ماشین مجازی مقایسه کنید. ممکن است MAC بعد از انتقال یا ساخت دوباره کارت عوض شده باشد؛ صرف شباهت نام کافی نیست. اگر چند کارت دارید، هرکدام را جداگانه با نقش آن در شبکه مدیریت، عمومی یا خصوصی تطبیق دهید.اگر کارت اصلاً دیده نمیشود، نوع کارت مجازی، اتصال آن در میزبان و سازگاری درایور را بررسی کنید. اگر
NO-CARRIER یا نبود لینک میبینید، ممکن است کابل مجازی یا پورت شبکه مقصد متصل نباشد؛ تغییر فایل Netplan بدون رفع آن کافی نیست. نامگذاری قابل پیشبینی سیستم میتواند به مسیر سختافزاری وابسته باشد؛ توضیح systemd جزئیات این نامها را شرح میدهد.۳. ببینید Netplan کدام رابط را تنظیم میکند
کد / دستورls -l /etc/netplan
sudo netplan get
در نسخههایی که
کد / دستورnetplan get پشتیبانی میشود، خروجی تنظیم ادغامشده را نشان میدهد و ممکن است اطلاعات داخلی داشته باشد. در نسخه قدیمیتر فایلهای YAML همان پوشه را جداگانه بخوانید. برای یک فایل نمونه:sudo cat /etc/netplan/50-cloud-init.yaml
نام فایل را با فایل واقعی خود عوض کنید. دنبال نام قدیمی زیر
ethernets یا match: macaddress بگردید. اگر تنظیم با MAC قدیمی تطبیق داده میشود و MAC جدید است، عوضکردن فقط نام ظاهری کافی نیست. Netplan میتواند چند فایل را ترکیب کند؛ پیش از تغییر، همه تعریفهای مربوط به همان رابط را بشناسید تا تنظیم دوم با اولی تداخل نکند.اگر فایل توسط cloud-init یا سامانه ارائهدهنده ساخته شده، مشخص کنید منبع تنظیم کجاست و آیا پس از راهاندازی مجدد بازنویسی میشود. راهنمای بازگشت تنظیم شبکه پس از ریبوت روش بررسی منبع و ماندگاری را جداگانه توضیح میدهد. خاموشکردن cloud-init بهصورت کلی بدون شناخت اثر آن بر ماشین توصیه نمیشود.
۴. فقط نام رابط درست را در تنظیم موجود جایگزین کنید
فرض کنیم فایل فعلی برای
کد / دستورens160 نوشته شده، کارت واقعی ens192 است و منبع مدیریت تنظیم را مشخص کردهاید. از فایل واقعی، با نام پشتیبان تازه در مکانی امن، نسخه بگیرید:sudo cp -an /etc/netplan/50-cloud-init.yaml /root/50-cloud-init.yaml.before-nic-change
اگر نام پشتیبان از قبل وجود دارد، نام تازه انتخاب کنید؛ گزینه
کد / دستور-n فایل موجود را بازنویسی نمیکند. سپس فایل اصلی مناسب را در ویرایشگر باز کنید:sudo nano /etc/netplan/50-cloud-init.yaml
برای شبکهای که واقعاً DHCP استفاده میکند، شکل ساده بعد از اصلاح ممکن است چنین باشد:
کد / دستورnetwork:
version: 2
renderer: networkd
ethernets:
ens192:
dhcp4: true
این قطعه فقط برای توضیح ساختار است، نه دستور جایگزینی کل فایل. اگر تنظیم قبلی آدرس ثابت، مسیر، DNS، IPv6 یا گزینه دیگری دارد، آنها را بر اساس اطلاعات شبکه مقصد حفظ و فقط بخش لازم را اصلاح کنید. فاصلهگذاری YAML مهم است و باید با فاصله باشد، نه tab. روی ماشینی با چند رابط از الگوی کلی مثل
en* استفاده نکنید؛ ممکن است تنظیم به کارت اشتباه اعمال شود.برای نشاندادن تفاوت، این یک نمونه مستقل و فرضی از آدرس ثابت است. نشانیهای
کد / دستور192.0.2.0/24 برای مستندسازیاند و روی سرویس واقعی کار نخواهند کرد؛ فقط اگر ارائهدهنده نوع آدرس و مسیر را تأیید کرده باشد، مقدارهای واقعی خود را جایگزین کنید:network:
version: 2
ethernets:
ens192:
dhcp4: false
addresses: [192.0.2.10/24]
routes:
- to: default
via: 192.0.2.1
nameservers:
addresses: [192.0.2.53]
برخی ارائهدهندگان IP با prefix متفاوت، gateway خارج از subnet یا مسیر خاص میدهند. گزینههایی مانند
on-link را فقط مطابق طراحی آن شبکه تنظیم کنید؛ حدسزدن mask یا gateway میتواند اتصال را قطع کند. مثالهای رسمی Netplan شکل تنظیم مسیرها را توضیح میدهند.۵. قبل از تأیید، اتصال را امتحان کنید
پس از ذخیره، ابتدا تبدیل تنظیم را بررسی کنید:
کد / دستورsudo netplan generate
اگر خطای YAML یا مسیر دیدید، فایل و خط اعلامشده را اصلاح کنید.
کد / دستورgenerate تنظیم را به شبکه فعال اعمال نمیکند و موفقیت آن صحت آدرس و gateway را تضمین نمیکند. برای آزمون با امکان بازگشت، در حالی که کنسول مستقل در دسترس است:sudo netplan try --timeout 120
در زمان شمارش، از نشست دیگر اتصال واقعی را آزمایش کنید و فقط اگر تنظیم درست است، در کنسول اجرای دستور آن را تأیید کنید. اگر تأیید نکنید، Netplan تلاش میکند تغییر را برگرداند؛ طبق مستند try در برخی وضعیتها باید بازگشت واقعی را نیز بررسی کرد. کنسول و نسخه پشتیبان به همین دلیل ضروریاند. در تنظیمات bond، bridge یا کارتهای چندگانه محدودیتهای بیشتری وجود دارد؛ راهنمای همان ساختار را بخوانید.
۶. اگر IP آمد اما اتصال کامل نشد
کد / دستورip -br address
ip route show
IP باید روی کارت مورد انتظار باشد و مسیر پیشفرض با gateway تأییدشده تطبیق کند. اگر آدرس DHCP نمیآید، اتصال کارت مجازی و سرویس DHCP همان شبکه را بررسی کنید. اگر IP درست است ولی مسیر پیشفرض وجود ندارد، بخش
routes یا روش دریافت gateway را با اطلاعات شبکه اصلاح کنید. وجود آدرس روی رابط دیگری میتواند نشانه انتخاب کارت اشتباه یا تعریف تکراری باشد.برای آزمایش DNS، با فرض نصب بودن ابزار resolver:
کد / دستورgetent ahosts example.com
اگر IP و اتصال شبکه کار میکنند ولی نام resolve نمیشود، nameserver و مسیر دسترسی به DNS را بررسی کنید. اگر نام حل میشود اما SSH از بیرون هنوز قطع است، وضعیت سرویس SSH و فایروال مقصد را جداگانه بخوانید؛ اصلاح نام کارت همه علتهای احتمالی را رفع نمیکند.
در پایان از یک اتصال خارجی مجاز وارد سرور شوید، مسیر برنامه یا سایت را امتحان کنید و در زمان مناسب پس از ریبوت کنترلشده دوباره نام رابط، IP و مسیر را ببینید. اگر تنظیم پس از ریبوت برگشت، قبل از ویرایش مجدد منبع cloud-init یا ابزار مدیریت شبکه را شناسایی کنید.
اشتراکگذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله بعدی
دیدگاهها (۰)
دیدگاههای تاییدشده و پاسخهای تیم نتآرام
