CentOS 7 - রিবুট না করে নেটওয়ার্ক ইন্টারফেসটির নতুন নাম দিন


24

আমি ফাইলগুলি সংশোধন করে নেটওয়ার্ক ইন্টারফেসের নাম পরিবর্তন করছি /etc/sysconfig/network-scripts

  • eth0 -> nic0
  • eth1 -> nic1

নেটওয়ার্ক স্ক্রিপ্টগুলির বিষয়বস্তু পরিবর্তনের পরে দেখে মনে হচ্ছে:

# cat /etc/sysconfig/network-scripts/ifcfg-nic0
DEVICE=nic0
BOOTPROTO=static
ONBOOT=yes
HWADDR=xx:xx:xx:xx:xx:xx
USERCTL=no
IPV6INIT=no
MASTER=bond0
SLAVE=yes

একটি রিবুট নতুন কনফিগারেশন সক্রিয় করে। কিন্তু কিভাবে আমি এই কনফিগারেশন সক্রিয় কি ছাড়া পুনরায় বুট করার?

একটি systemctl restart networkকৌশল না।

আমি একটি ইন্টারফেসটিকে তার পুরানো নাম ( ifdown eth0) দ্বারা বন্ধ করতে পারি ifupতবে পুরানো বা নতুন নাম সরবরাহ করা হলেও তা নীচের বার্তায় ফলাফল দেয়:

ত্রুটি: [/ etc / sysconfig / নেটওয়ার্ক-স্ক্রিপ্ট / ifup-eth] ডিভাইস nic0 উপস্থিত নেই বলে মনে হচ্ছে, আরম্ভের জন্য বিলম্ব করছে।

/etc/init.d/network status এই আউটপুটটি দেখায়:

Configured devices:
lo bond0 nic0 nic1
Currently active devices:
lo eth0 eth1 bond0

উভয়ই, ifconfigএবং ip aপুরানো ইন্টারফেসের নামগুলি দেখান।


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

উত্তর:


29

আপনি আইপি কমান্ডটি ব্যবহার করে ডিভাইসটির নাম পরিবর্তন করতে পারেন:

/sbin/ip link set eth1 down
/sbin/ip link set eth1 name eth123
/sbin/ip link set eth123 up

সম্পাদনা করুন :

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

আপনি কোনও ইউদেব নিয়মটি কনফিগার করেছেন তাও আপনি নিশ্চিত করতে চাইতে পারেন, যাতে এটি পরবর্তী রিবুটটিতেও কাজ করে। ওদেবের জন্য পথটি সেন্টোস 7-এ /usr/lib/udev/rules.d/60-net.rules এ চলে গেছে তবে আপনি এখনও এটিকে একইভাবে পরিচালনা করতে সক্ষম হন। যদি আপনি আপনার নেট এর পুরানো নামকরণ স্কিমটিতে ফিরে আসতে আপনার কার্নেল বুট স্ট্রিংয়ে "নেট.আইফনাম = 0 বায়োসদেবমনাম = 0" যুক্ত করেন , আপনি মুছে ফেলতে পারেন

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"

এবং এটি দিয়ে প্রতিস্থাপন

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:50:56:8e:3f:a7", NAME="eth123"

আপনার প্রতি এন সি প্রতি একটি প্রবেশ দরকার। সঠিক ম্যাক ঠিকানা ব্যবহার এবং NAME ক্ষেত্রটি আপডেট করার বিষয়ে নিশ্চিত হন। আপনি যদি "নেট.আইফনেমস = 0 বায়োসদেব নাম = 0" ব্যবহার না করেন তবে সতর্ক থাকুন কারণ অনিচ্ছাকৃত পরিণতি হতে পারে।


2
এই সম্পর্কে একটি নোট। আপনি যদি CentOS 7.3 ব্যবহার করছেন তবে এটি কার্যকর হয় না। এটি এই সমস্যাটির কারণে ( অ্যাক্সেস . redhat.com/solutions/2592561 )। আপনাকে ফাইলটি ওভাররাইড করতে হবে /etc/udev/rules.d/90-eno-fix.rulesকারণ এটি নেটওয়ার্ক ডিভাইসগুলির নামকরণের জন্য পূর্ববর্তী সমস্ত কার্যক্ষম সমাধানগুলিকে ওভাররাইড করে।
চকচক করে গেলা

আপনি উল্লেখ করেছেন এমন পরামর্শদাতার দিকে নজর রেখে, এটিতে উল্লেখ করা হয়েছে "systemd-219-30.el7_3.6 বা পরবর্তী প্যাকেজ অন্তর্ভুক্ত করার জন্য ইনস্টলেশন সংগ্রহগুলি আপডেট করার মাধ্যমে এই সমস্যাটি এড়ানো যেতে পারে new একটি উদেব নিয়ম স্বয়ংক্রিয়ভাবে উত্পন্ন হয় যাতে পুনরায় নামকরণের বিষয়টি সম্পূর্ণ এড়ানো যায়। "
জেমস শেইয়

এটি তারা উল্লেখ করছেন একটি ভিন্ন নামকরণ সমস্যা। নামটি সংক্ষিপ্ত হওয়ার বিষয়ে তারা কথা বলছে কারণ এটি অনেক দীর্ঘ (আমার মনে হয়)। ইউদেব নিয়মটিতে হার্ডওয়ারের উল্লেখ করা হয়েছে যা ইন্টারফেসের নামটিকে এমন একটি eno########মান হিসাবে কোড করে যা এর নাম পরিবর্তন করার জন্য এই সমস্ত প্রচেষ্টাকে ওভাররাইড করে eth0। যে জানার জন্য? আমি কোন সংস্করণটি ব্যবহার করছি তা আমার মেশিনে যাচাই করতে হবে তবে গতকাল আমি সর্বশেষ সেন্টোস .3.৩ এ আপগ্রেড করেছি, তাই আমার মনে হয় আমার উল্লিখিত সংস্করণটি থাকবে।
চকচক করে গেলা

একটি ভিন্ন তবে সম্পর্কিত সমস্যা সমাধানের জন্য এই পদ্ধতিটি আমার পক্ষে কার্যকর ছিল - একটি সম্পর্কযুক্ত কনফিগারেশন ত্রুটির কারণে শুরু করার সময় একটি ধারক ক্র্যাশ হয়ে যায় এবং সিস্টেমের নাম ইজএক্সএফওয়াইয়ের নাম পরিবর্তনের সাথে ইন্টারফেসটি এথ 1 এর ধারক নামে রেখে দেয়। এরপরে কনটেইনারটি শুরু করে পুনরায় চেষ্টা করা সম্ভব হয়নি কারণ এটির পুনরায় নামকরণ না করা পর্যন্ত ইন্টারফেসটি খুঁজে পেল না
মাইকেল ফ

9

আসলে, আমি বিশ্বাস করি সেরা উত্তরটি ইতিমধ্যে পোস্ট করা দুটি উত্তরের সংমিশ্রণ। নেটওয়ার্ক পরিষেবাদি পুনরায় আরম্ভ না করেই ডিভাইসের নাম পরিবর্তন করতে, ip linkজেমস শেউই ( ip link set <old_device_name> name <new_device_name>) প্রস্তাবিত আদেশগুলি ব্যবহার করুন ।

পরিবর্তনগুলি রেড হ্যাট লিনাক্স একটি পুনরায় বুট করার টেকা করতে, প্রাসঙ্গিক ফাইল পরিবর্তন /etc/sysconfig/network-scripts/। ফাইল পুনঃনামকরণ ifcfg_<old_device_name>করার ifcfg_<new_device_name>এবং পরিবর্তন DEVICEপরিবর্তনশীল ভিতরে <new_device_name>। এছাড়াও, HWADDRভেরিয়েবলটি সেট এবং সঠিক কিনা তা নিশ্চিত করুন ।Udev নিয়মগুলিকে স্পর্শ করার দরকার নেই , যেহেতু 60-net.rulesআসলে ifcfg কনফিগারেশন ফাইলগুলি পড়তে হয় /etc/sysconfig/network-scripts


3

পুরানো নামকরণ কনভেনশন পুনরুদ্ধার করতে আপনার /etc/default/grubফাইলটি সম্পাদনা করতে হবে এবং নিম্নলিখিতটি যুক্ত করতে হবে

net.ifnames=0 biosdevname=0 

GRUB_CMDLINE_LINUXভেরিয়েবলের শেষে


অথবা biosdevnameইনস্টল করা থাকলে কেবল প্যাকেজটি সরিয়ে
ফেলুন

3
ip link set ens33 down
ip link set ens33 name eth0
ip link set eth0 up

mv /etc/sysconfig/network-scripts/ifcfg-{ens33,eth0}

sed -ire "s/NAME=\"ens33\"/NAME=\"eth0\"/" /etc/sysconfig/network-scripts/ifcfg-eth0

sed -ire "s/DEVICE=\"ens33\"/NAME=\"eth0\"/" /etc/sysconfig/network-scripts/ifcfg-eth0

MAC=$(cat /sys/class/net/eth0/address)

echo -n 'HWADDR="'$MAC\" >> /etc/sysconfig/network-scripts/ifcfg-eth0

1
সুন্দর নাম পরিবর্তনের কৌশল :) ভাগ করে নেওয়ার জন্য ধন্যবাদ
166_MMX

2

@ জেমস শ্যুইয়ের দেওয়া উত্তরটি এটি করার সঠিক উপায় বলে মনে হচ্ছে।

আপনি যদি কনফিগার ফাইলগুলির সাথে কেবল কাজ করতে চান /etc/sysconfig/network-scriptsএবং তারপরে একটি পুনরায় লোড ট্রিগার করতে পারেন, মন্তব্যগুলিতে @ টম হান্ট দ্বারা উল্লিখিত কার্নেল মডিউলটি আনলোড এবং লোড করাও কাজ করে:

service network stop
modprobe -r igb
modprobe igb
service network start

আপনি যদি মেশিনটিকে দূর থেকে অ্যাক্সেস করেন তবে নিশ্চিত হয়ে নিন যে আপনি সমস্ত কমান্ড কোনও নোপআপে চালাচ্ছেন বা আপনি নিজেকে লক আউট করবেন:

nohup sh -c "service network stop && modprobe -r igb && modprobe igb ; service network start"

অবশ্যই পুনরায় লোড করার ড্রাইভারটি আপনার ইন্টারফেসের উপর নির্ভর করে।


0

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

পুরানো ইন্টারফেসের নামগুলি পুরো পুনঃসূচনা পর্যন্ত আমি যা কিছু করেছি তা বজায় রাখা হয়েছিল।

আমি নিম্নলিখিত বিধিগুলিতে যুক্ত করেছি /etc/udev/rules.d/60-persistent-net.rules( https://access.redhat.com/solutions/112643 এর উপর ভিত্তি করে )

আমার লক্ষ্য ছিল ইন্টারফেসটিকে পিসিআই ঠিকানার ভিত্তিতে একটি নির্দিষ্ট নাম দেওয়া give

উদাহরণ:

ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:09.0", NAME:="int0"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:10.0", NAME:="ext0"

এই নিয়মগুলি যুক্ত করার পরে আমি নিম্নলিখিত কমান্ডগুলি কার্যকর করেছি:

ip link set eth0 down
udevadm control --reload-rules
udevadm trigger
ip link set int0 up

সংশ্লিষ্ট ত্রুটি সংক্রান্ত বার্তা Cannot find device "int0"উপর ip link set * upকমান্ড। এবং /var/log/messagesআমি নিম্নলিখিত বার্তা লক্ষ্য করেছি

Aug 16 17:08:41 localhost ansible-command: Invoked with creates=None executable=None _uses_shell=True strip_empty_ends=True _raw_params=ip link set eth0 down && udevadm control --reload-rules && udevadm trigger && ip link set int0 up#012 removes=None argv=None warn=True chdir=None stdin_add_newline=True stdin=None
Aug 16 17:08:41 localhost NetworkManager[6989]: <info>  [1565975321.5971] device (eth6): state change: disconnected -> unavailable (reason 'carrier-changed', sys-iface-state: 'managed')
Aug 16 17:08:41 localhost systemd-udevd: Network interface NamePolicy= disabled on kernel command line, ignoring.

তবে নিম্নলিখিতগুলি ভার্চুয়ালবক্সের মাধ্যমে ভিএম অ্যাক্সেস করে কাজ করেছে এবং কার্নেল মডিউলটি সরিয়ে এবং পুনরায় যুক্ত করতে নিম্নলিখিত কমান্ডগুলি কার্যকর করেছে।

rmmod e1000 
modprobe e1000

আমি এটি নিম্নলিখিত থ্রেডে পেয়েছি: https://www.centos.org/forums/viewtopic.php?t=54695

আমি যে আশ্চর্যজনক বিষয়টি লক্ষ্য করেছি তা হ'ল lsmodআমাকে দেয় (নোটটি নোট করুন Used by)

[vagrant@node-01 ~]$ lsmod
Module                  Size  Used by
e1000                 137586  0 

সঠিক ত্রুটি বার্তাগুলি সহ গ্রহণযোগ্য উত্তরের সাথে কী কাজ করে না তা দয়া করে আমাদের জানান। এইভাবে সম্ভবত উত্তরটি উন্নত করা যেতে পারে।
নেড 64

@ নেড 64 আমি ত্রুটি বার্তা এবং আরও কিছু তথ্য যুক্ত করেছি
স্যান্ডার ভিজার

আমি যা বলতে চাইছি তা হল: আপনি যখন মূল লিখবেন তখন কি হবে ip link set eth0 down; ip link set eth0 name int0; ip link set int0 up? কোন udev...আদেশ!
নেড Aug৪
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.