অনুমানযোগ্য নেটওয়ার্ক ইন্টারফেসের নামগুলি ভেঙে ভিএম স্থানান্তর করে


9

/etc/networking/interfaces"অনুমানযোগ্য নেটওয়ার্ক ইন্টারফেসের নামগুলি" ব্যবহার করার সময় আপনি কীভাবে পুনরায় সেট করবেন ?

15.10 এর চেয়েও বেশি পুরানো উবুন্টুর সংস্করণগুলি নেটওয়ার্ক অ্যাডাপ্টারের নামগুলি ব্যবহার করে:

  • eth0
  • eth1
  • eth2

একটি নেটওয়ার্ক কার্ড প্রতিস্থাপন করা, বা একটি নতুন হাইপারভাইজারে একটি ভিএম স্থানান্তরিত করার ফলে লিনাক্স ইন্টারফেস নম্বর বাড়িয়ে তুলবে। মোছা /etc/udev/rules.d/70-peristent-net.rulesলিনাক্স পুনরায় ব্যবহার করতে পারে eth0

উবুন্টু 15.10 এবং আরও নতুন ' প্রিডিকটেটেবল নেটওয়ার্ক ইন্টারফেস নাম ' ব্যবহার করুন। নেটওয়ার্ক অ্যাডাপ্টারের নাম ম্যাক ঠিকানা থেকে প্রাপ্ত।

  • ens3
  • ens32
  • ens192

কোনও ভিএম স্থানান্তরিত করার পরে, নেটওয়ার্কিং শুরু হবে না যেহেতু /etc/network/interfacesএখনও পুরানো অস্তিত্বমান নেটওয়ার্ক অ্যাডাপ্টারের উল্লেখ রয়েছে।

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ens32
iface ens32 inet dhcp
pre-up sleep 2

/ ইত্যাদি / নেটওয়ার্ক / ইন্টারফেস ফাইলটি রিসেট করার সর্বোত্তম উপায় কী?

ভিএমটি বন্ধ করে নতুন হাইপারভাইজারে স্থানান্তরিত হওয়ার আগে আমাকে এই ক্রিয়াটি করা দরকার কারণ আমি শেফ / বেন্টো সুবর্ণ চিত্রগুলির উপর ভিত্তি করে স্বয়ংক্রিয় স্বর্ণের চিত্রগুলি তৈরি করতে প্যাকার ব্যবহার করছি ।

স্থানান্তরিত হওয়ার পরে ফাইলটি স্বয়ংক্রিয়ভাবে পরবর্তী বুটে পুনরায় জেনারেট না হওয়ায় / ইত্যাদি / নেটওয়ার্ক / ইন্টারফেসগুলি মোছার কাজ করে না।

আমি 'এথ0' নামকরণ কনভেনশনে ফিরে যেতে আমার গ্রাব ফাইলটি সম্পাদনা করার চেষ্টা করেছি। / Etc / নেটওয়ার্ক / ইন্টারফেসগুলি পুরাতন নাম (eth0) উল্লেখ করে তবে, ভিএম একটি আইপি পাবেন না এবং কোনও পুনরায় বুট করার ফলে ভিএম নতুন নামকরণ কনভেনশনটি ব্যবহার করবে। এছাড়াও আমি খুঁজে পেয়েছি সিস্টেমেড সর্বদা প্রাধান্য পাবে যদি না আমি biosdevname=0 গ্রাব কনফিগারেশনে স্থায়ীভাবে থেকে যায় তার গ্যারান্টি দিতে পারি । কীভাবে স্থায়ীভাবে এটি প্রয়োগ করবেন তা নিশ্চিত নন

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 bios.devname=0"

যদি সম্ভব হয় তবে আমি ক্লাউড আরম্ভ বা পোস্ট স্টার্টআপের কোনও স্ক্রিপ্ট ব্যবহার করতাম না কারণ আমি সোনার চিত্রগুলি যতটা সম্ভব পরিষ্কার করে রাখি।

অবশ্যই এটি একটি সমস্যা যে ক্লাউড সরবরাহকারীরা (আজুর, এডাব্লুএস, র্যাকস্পেস, ওপেনস্ট্যাক) ইতিমধ্যে সমাধান করেছে যখন তারা ভিএমএস আমদানি করে। পূর্বাভাসযোগ্য নেটওয়ার্ক ইন্টারফেসের নাম ব্যবহার করে কোনও ভিএম চেষ্টা করার এবং স্থানান্তরিত আমি সম্ভবত প্রথম ব্যক্তি হতে পারি না।

আমি ভিএমটি বন্ধ করে স্থানান্তরিত করার আগে এই কমান্ডগুলি চালনার চেষ্টা করেছি

apt-get remove biosdevname -y;
ln -s /dev/null /etc/systemd/network/99-default.link;

আমি যখন ভিএম স্থানান্তর করি তখন তা খুঁজে পাই /etc/network/interfacesএবং তা ip addressএখনও উল্লেখ করেens32


আপনি কি বোনের সাইট অ্যাসুবুন্টু থেকে সমাধানটি চেষ্টা করেছিলেন? askubuntu.com/a/785442/467355 - মূলত udev নিয়মটি ম্যানুয়ালি তৈরি করুন, এবং
ক্লোনটির

হ্যাঁ, আমি এটি তাকিয়ে ছিল। এগুলি জেনেরিক সোনার ছবি যা যে কেউ ব্যবহার করতে পারবেন তাই আমি ম্যাকের ঠিকানাটি আগে জানি না।
স্পুডার

এটি সম্পূর্ণরূপে "ক্লোনটির পরে নতুন ম্যাকটি aোকাতে একক সময় বুট স্ক্রিপ্টটি ব্যবহার করুন (বা এটি প্রতিটি ক্লোনার পরে তাজা তৈরি করতে)" - আপনি সোনালী চিত্রটিতে একটি নতুন বুট স্ক্রিপ্ট সন্নিবেশ করান যা বুট অনুসন্ধানের পরে সন্নিবেশ করান ওদেব নিয়মের সঠিক ম্যাক।
দানি_ল

উত্তর:


4

অবশ্যই এটি একটি সমস্যা যে ক্লাউড সরবরাহকারীরা (আজুর, এডাব্লুএস, র্যাকস্পেস, ওপেনস্ট্যাক) ইতিমধ্যে সমাধান করেছে যখন তারা ভিএমএস আমদানি করে।

আমি মনে করি ওপেনস্ট্যাকটি ক্লাউড-আর, কনফিগারড্রাইভ ফর্ম্যাট ব্যবহার করে এবং একটি নেটওয়ার্ক কনফিগারেশন সরবরাহ করে যা ভিএম হার্ডওয়ারের সাথে মেলে। সূত্র:

যদি আপনি প্রথম-বুট স্ক্রিপ্টটি বাতিল করেন তবে একটি সুস্পষ্ট উত্তর পাওয়া যাবে।

পূর্বে এটি ব্যবহারিকভাবে গ্যারান্টিযুক্ত ছিল যে একটি একক ইথারনেট কার্ড দিয়ে সজ্জিত হোস্টগুলির কেবলমাত্র একটিমাত্র "এথ0" ইন্টারফেস ছিল। এই নতুন স্কিমটি স্থিতিতে, প্রশাসককে এখন প্রথমে স্থানীয় ইন্টারফেসের নামটি কী তা কমান্ড চাওয়ার আগে এটি পরীক্ষা করতে হবে যেখানে আগে তার ভাল সুযোগ ছিল যে "এথ0" সঠিক নাম ছিল।

আমি এটি পছন্দ করি না, আমি কীভাবে এটি অক্ষম করব?

আপনার কাছে মূলত তিনটি বিকল্প রয়েছে:

  1. আপনি স্থির নামের অ্যাসাইনমেন্টটি অক্ষম করুন, যাতে অবিশ্বাস্য কার্নেল নামগুলি আবার ব্যবহার করা হয়। এর জন্য, কেবলমাত্র ডিফল্ট নীতিটির জন্য udev এর .link ফাইলটি মাস্ক করুন: ln -s / dev / null /etc/systemd/network/99-default.link

https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/

পুরানো অবিচলিত ইন্টারফেসের নামগুলিতে আবার স্যুইচ করা নথিভুক্ত বিকল্পগুলির মধ্যে একটি নয়।

অন্য বিকল্পটি এমন একটি সেটআপ যেখানে নেটওয়ার্কের ইন্টারফেসগুলি যথাযথ নাম নির্বিশেষে ডিফল্টরূপে সক্ষম হয়। আমি মনে করি নেটওয়ার্ড ম্যানেজার এটিকে ডিফল্টরূপে সমর্থন করে। systemd- নেটওয়ার্কযুক্ত এটিকে করতে বলা যেতে পারে

ভিএম এর জন্য আপনার একাধিক নেটওয়ার্ক ডিভাইস হওয়ার সাথে সাথেই সম্ভবত তাদের সম্ভবত নির্দিষ্ট কনফিগারেশন প্রয়োজন ...

ভিএম এর বাইরে, নেটওয়ার্ক ম্যানেজার-স্টাইল পদ্ধতির একটি সুস্পষ্ট সুবিধা রয়েছে: একটি পিসিতে একাধিক নেটওয়ার্ক ইন্টারফেস থাকতে পারে, সম্ভবত বিভিন্ন ধরণের, যার মধ্যে কেবল একটি সংযুক্ত রয়েছে। উদাহরণস্বরূপ এটি কয়েকটি প্রিমিয়াম মাদারবোর্ডে বা এমন একটি সিস্টেমে দেখা যাবে যেখানে প্রথম নেটওয়ার্ক ইন্টারফেসটি পছন্দসইভাবে কাজ করে নি এবং দ্বিতীয় ইন্টারফেসটি কোনও কোনও মুহুর্তে ইনস্টল করা হয়েছিল।


দুর্দান্ত পরামর্শ। আমি খুঁজে পাই যে ln -s /dev/null /etc/systemd/network/99-default.linkকোন পার্থক্য নেই। আমার ভিএমএস এখনও নতুন নামকরণ কনভেনশন ব্যবহার করে।
স্পুডার

3

আমি পরিষ্কারভাবে এটি করার চেষ্টা ছেড়ে দিয়েছি এবং নিম্নলিখিত হ্যাকটি নিয়ে এসেছি। ভিএম বন্ধ করে এবং স্থানান্তরিত করার ঠিক আগে নীচের স্ক্রিপ্টটি চালিয়ে, চালিত হওয়ার পরে ভিএমের নেটওয়ার্ক অ্যাডাপ্টার হিসাবে eth0 থাকবে।

ln -s /dev/null /etc/systemd/network/99-default.link;
echo '# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp
pre-up sleep 2' > /etc/network/interfaces

sed -i.bak 's/GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 bios.devname=0 quiet"/' /etc/default/grub
update-grub
apt-get remove biosdevname -y || true;

কঠোরভাবে বলতে গেলে, apt-get remove biosdevnameযেহেতু উবুন্টু 16.04 এ ডিফল্টরূপে প্যাকেজটি ইনস্টল করা হয়নি। এছাড়াও, বায়োসদেব নাম ইনস্টল না bios.devname=0হওয়ায় GRUB_CMDLINE_LINUX_DEFAULTএটিতে যুক্ত করার প্রয়োজন নেই। ভবিষ্যতে বায়োসদেব নামটি ইনস্টল করা থাকলে এটি নেটওয়ার্কটি ভাঙ্গা রোধ করে না।


কেন লিঙ্কটি সেট করা এবং কার্নেল আর্গুমেন্টটি পাস করা হচ্ছে? ডকুমেন্টেশন একটি যথেষ্ট হতে হবে বলে। কার্সারি চেকটি বাস্তবে বিষয়টি বোঝায়।
0xC0000022L

2

আপনার কি অনুমানযোগ্য নেটওয়ার্ক ইন্টারফেসের নামগুলি দরকার?

আমার সমাধানটি আনইনস্টল করা হয়েছে biosdevname, এবং এর ফলে সর্বদা নেটওয়ার্ক0 ইন্টারফেসটি এথ0, এথ 1 এবং এর মতো নামকরণ হয়েছে reli পূর্বাভাসযোগ্য নেটওয়ার্ক ইন্টারফেসের নাম বা বায়োদেব নাম ইনস্টল করার কোনও ভাল কারণ আমি খুঁজে পাইনি।

মধ্যে /etc/udev/rules.d/70-persistent-net.rulesআপনি পরিবর্তন করতে পারেন যেখানে কি হার্ডওয়্যার ম্যাক ঠিকানা eth0, eth1 তাই নাম পরার, এবং। আমি সাধারণত এই ফাইলটির বিষয়বস্তু মুছে ফেলি, এটি একটি ফাঁকা ফাইল হিসাবে সংরক্ষণ করুন, পুনরায় বুট করুন, তারপরে আমার কাছে সঠিক নেটওয়ার্ক অ্যাডাপ্টার প্রদর্শিত একটি ক্লিন স্লেট রয়েছে ...

# This file was automatically generated by the /lib/udev/write_net_rules
# program,run by the persistent-net-generator.rules rules file.
#
# This file was automatically generated by the /lib/udev/write_net_rules
# program,run by the persistent-net-generator.rules rules file.
#
# You can modify it,as long as you keep each rule on a single
# line,and change only the value of the NAME= key.
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

^^ যেখানে xx: xx: xx: xx: xx: xx হল আপনার নেটওয়ার্ক অ্যাডাপ্টারগুলির অনন্য ম্যাক ঠিকানা।

আমি জানি আপনি উল্লেখ করেছেন যে এই ফাইলটি মুছে ফেলা সমাধান নয়, তবে আমি উপরের উদাহরণটি পোস্ট করি কারণ কমপক্ষে সুয়েসে /lib/udev/write_net_rulesএই ফাইলটি তৈরি করে। সুতরাং দেখুন এই ফাইলটিতে ফিরে ট্র্যাকিং সাহায্য করে কিনা, এটি যদি আপনার বিতরণে প্রযোজ্য হয় তবে আপনি আপনার সমস্যা সমাধানের জন্য এটি সংশোধন করতে সক্ষম হতে পারেন।

এটি আমি সুস সংস্করণ 11 থেকে জানি যা সিস্টেমডের আগে পুরানো ইনিশ উপায়। নিশ্চিত নয় যে এটি সিস্টেমডের অধীনে লিনাক্সের সর্বশেষ সংস্করণগুলির জন্য পরিবর্তিত হয়েছে কিনা।


biosdevname udev দ্বারা "builtin" net_id দ্বারা সংযোজন করা হয় freedesktop.org/wiki/Software/systemd/...
sourcejedi

0

এই উবুন্টু 14.04 হোস্টকে 16.04 এ আপগ্রেড করতে চলেছে। biosdevnameপ্যাকেজ তাই অবলম্বন ইনস্টল করা নেই "biosdevname=0 net.ifnames=0"/etc/default.grub যেমন ওপি বলেছেন।

আমি এই স্ক্রিপ্টটি চালনা করছি এবং যদি আউটপুটটি ভাল দেখাচ্ছে, /etc/udev/rules.d/70-persistent-net.rulesকার্নেল যদি কোনও পৃথক ক্রমে ইথারনেট পোর্টগুলি গণনা করার সিদ্ধান্ত নেয় তবে আউটপুটটিকে নতুন ইউদেব নিয়ম তৈরি করতে পুনর্নির্দেশ করুন ।

#!/bin/bash
count=0

# build array of network devices starting with eth? from /proc
for dev in `cat /proc/net/dev | egrep 'eth.*:' | awk '{print $1};' | cut -d':' -f1 | sort`; do
   edev[$count]="$dev"
   let count="$count+1"
done

# use array to find mac address
for d in ${edev[@]}; do
   mac=`ip addr show "$d" | grep ether | awk '{print $2};'`
   if [ -n "$mac" ]; then
      echo "# mac for $d is $mac"
   fi 

   printf 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="%s", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="%s"\n' $mac $d
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.