सिस्टमडाउन के साथ Ubuntu 16.04 में नेटवर्क इंटरफेस का नाम बदलना


14

मैं दो भौतिक नेटवर्क कार्डों के साथ एक हेडलेस Ubuntu 16.04 LTS सर्वर का उपयोग कर रहा हूं, जिसका नाम enp5s0f0 और enp5s0f1 है।

मैं इन इंटरफेस का नाम बदलना चाहूंगा, और इस उदाहरण का पालन ​​करूंगा । मैंने इस तरह से फ़ाइल /lib/systemd/network/70-myinterface.link(मूल स्रोत काम नहीं करता है) बनाया (मैंने सही मैक पता सेट किया है):

[Match]
MACAddress=12:34:56:78:9a:bc

[Link]
Name=dmz0

और सर्वर को रिबूट किया। दुर्भाग्य से इंटरफ़ेस का नाम नहीं बदला, भले ही यह udevadmदर्शाता हो कि मेरी कॉन्फ़िगरेशन फ़ाइल का उपयोग किया गया है:

$ udevadm info /sys/class/net/enp5s0f1
P: /devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:02.0/0000:05:00.1/net/enp5s0f1
E: DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:02.0/0000:05:00.1/net/enp5s0f1
E: ID_BUS=pci
E: ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper)
E: ID_MODEL_ID=0x1096
E: ID_NET_DRIVER=e1000e
E: ID_NET_LINK_FILE=/lib/systemd/network/70-myinterface.link  <-- my file
E: ID_NET_NAME_MAC=enx123456789abc
E: ID_NET_NAME_PATH=enp5s0f1
E: ID_OUI_FROM_DATABASE=Intel Corporation
E: ID_PATH=pci-0000:05:00.1
E: ID_PATH_TAG=pci-0000_05_00_1
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Intel Corporation
E: ID_VENDOR_ID=0x8086
E: IFINDEX=3
E: INTERFACE=enp5s0f1
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp5s0f1
E: TAGS=:systemd:
E: USEC_INITIALIZED=1900192

क्या आपको पता है कि नाम बदलने से काम नहीं चला।


1
मैं इस फाइल को बनाने के लिए सबसे अच्छा स्थान होगा।
एनजीआरहोड्स

@NGRhodes मैं उद्धृत उदाहरण के आधार पर एक टाइपो मान रहा था, लेकिन कौन जानता है?
एल्डर गीक

इसके अलावा, चेक नेटमैनेजर नहीं चल रहा है, superuser.com/a/948996/127393
नेटवर्कमैन

बाउंटी को रखने के बाद मैंने देखा कि 16.04 में एक नया udv रूल फाइल है जो हमेशा नेटवर्क एडेड से परामर्श करने से पहले USB एडेप्टर के लिए मैक एड्रेस टाइप नामकरण को मजबूर करता है (/lib/udev/rules.d/73-nb-net-by -mac.rules)। यह बिल्कुल भी सही नहीं लगता है ... मुझे इसके नियम को पूरी तरह से अक्षम करना पड़ा, जिसने .link फ़ाइल को फिर से काम किया। मुझे यकीन नहीं है कि यह सबसे सही विकल्प है, हालांकि। '
अंती हापाला

उपयोग करना MACAddress= [Match]मेरे लिए linkफ़ाइलों में भी काम नहीं करता है , इसलिए मैंने Path=इसके बजाय उपयोग करना समाप्त कर दिया। आपको भी कोशिश करनी चाहिए। इसके अलावा आप यह भी जांच सकते हैं कि कौन सी linkफाइल आपके डिवाइस को udevadm test-builtin net_setup_link /sys/class/net/enp5s0f1कमांड से
जोड़ती है

जवाबों:


8

यह मदद कर सकता है या नहीं भी कर सकता है .. मैं /etc/udev/rules.d की जांच करूंगा और देखूंगा कि क्या आपके पास 70-persistent-net.rules हैं। आपको उस फ़ाइल का उपयोग करके उनका नाम बदलने में सक्षम होना चाहिए

मेरा ऐसा दिखता है:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="e0:cb:ee:d7:ff:9a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

यदि आपके पास इस फ़ाइल में आपके कार्डों की प्रविष्टियाँ हैं तो आप "NAME = TheNameYouWant" को बदलकर नाम को कभी भी आप क्या चाहते हैं, बदल सकते हैं।


सही पर। मैं एक उत्तर पोस्ट करने वाला था जिसमें मैंने उल्लेख किया है कि दिलचस्प बात यह है कि उबंटू का उपयोग करने वाले कुछ लोग हैं जिन्होंने कहा है कि उनके नेटवर्क का नाम बदलने के लिए @ मफेल का तरीका काम नहीं आया। यह वही था जो मैं सुझाने जा रहा था ... +1
गुमनाम 2

यहां पर ब्यावर जाना चाहिए।
इकोन

5

एक विकल्प जिसमें udev नियमों (systemd-networkd .link फ़ाइलों के लिए एक विकल्प) की आवश्यकता नहीं होती है जो Ubuntu 16.04 के साथ-साथ कई अन्य लिनक्स संस्करणों के साथ काम करता है

उदाहरण:

ifconfig peth0 down  
ip link set peth0 name eth0  
ifconfig eth0 up 

Peth0 से ऊपर के उदाहरण में मूल इंटरफ़ेस नाम है और eth0 वांछित नाम है। वर्तमान में आपके नाम में प्लग जहां peth0 है और वह नाम जहां आप चाहते हैं, eth0 है। कोई रिबूट की आवश्यकता या सुझाव नहीं है। दूसरे इंटरफ़ेस कार्ड के लिए प्रक्रिया को दोहराएं

उबंटू 16.04 पर कर्नेल 4.4.0-36-जेनेरिक # 55-उबंटू के साथ परीक्षण किया गया

संपादित करें: यदि आप एक निरंतर समाधान की तलाश कर रहे हैं जो रिबूट से बचता है तो Ubuntu 16.04 नाम बदलना नेटवर्क इंटरफेस को देखें

सूत्र: https://www.freedesktop.org/software/systemd/man/systemd.link.html

http://kernelpanik.net/rename-a-linux-network-interface-without-udev/

परिक्षण।

नोट: चूँकि @ antti-haapala विधि ने पहले काम किया था और अचानक बंद कर दिया, तो आपको यह जानने में रुचि हो सकती है कि "एक विशेष मामले के रूप में, एक खाली फ़ाइल (फ़ाइल का आकार 0) या एक ही नाम के साथ सहानुभूति / dev / null को इंगित करता है जो कॉन्फ़िगरेशन फ़ाइल को अक्षम करता है पूरी तरह से (यह "नकाबपोश" है) "। <स्रोत


मैं आपकी प्रतिक्रिया के लिए बहुत उपयोगी रहा हूं, धन्यवाद + 1 @ ElderGeek

1
@Alberto मुझे खुशी है कि यह मदद की है!
एल्डर गीक

दुख की बात है कि यह लगातार नहीं है लेकिन फिर भी + 1
delfiler

@delfiler आपकी टिप्पणी के लिए धन्यवाद। यदि मैं आपको सही ढंग से समझ रहा हूं तो आप एक समाधान की तलाश कर रहे हैं जो एक रिबूट बच जाता है। क्या मैं उस पर स्पष्ट हूं?
एल्डर गीक


3
  • सभी तीन कस्टम नामकरण विधि, समझाया गया systemd: प्रीडिक्टेबल नेटवर्क इंटरफ़ेस नाम , udev नियमों से संबंधित हैं।

    systemd .link और udev नियमों में फ़ोल्डर प्राथमिकता है। /etcओवरराइड /runओवरराइड /lib

    इसलिए वर्तमान सेटअप की जांच करें।

    # links
    ls -l /*/systemd/network/
    
    # rule that read links
    ls -l /*/udev/rules.d/80-net-setup-link.rules
    
    # rule that check for /etc/.../80-net-setup-link.rules & net.ifnames
    ls -l /*/udev/rules.d/73-usb-net-by-mac.rules
    

    इन udev नियमों में किसी भी बदलाव के बाद (ओवरराइड फ़ाइलों को जोड़ना / हटाना) प्रभावी होने के लिए, बूट रैम डिस्क को अद्यतन किया जाना चाहिए:

    sudo update-initramfs -u
    

    डिफ़ॉल्ट रूप से, ये केवल वही फ़ाइलें हैं जो आपको मिल सकती हैं

    ~$ ls -l /*/systemd/network/
    /etc/systemd/network/:
    total 0
    
    /lib/systemd/network/:
    total 12
    -rw-r--r-- 1 root root 404 Jul 12 17:28 80-container-host0.network ##(virtual-interface)
    -rw-r--r-- 1 root root 482 Jul 12 17:28 80-container-ve.network ##(virtual-interface)
    -rw-r--r-- 1 root root  80 Jul 12 17:28 99-default.link
    
    
    ~$ ls -l /*/udev/rules.d/80-net-setup-link.rules
    -rw-r--r-- 1 root root 292 Jul 12 17:28 /lib/udev/rules.d/80-net-setup-link.rules
    
    ~$ ls -l /*/udev/rules.d/73-usb-net-by-mac.rules
    -rw-r--r-- 1 root root 551 Jul 12 16:37 /lib/udev/rules.d/73-usb-net-by-mac.rules
    

    मैंने उन सभी को VBox ताज़ा 16.04 में परीक्षण किया है जो नीचे दिए गए लिंक में प्रलेखित हैं, सभी विधियाँ अपेक्षा के अनुसार काम करती हैं:

    Ubuntu 16.04 जटिल इंटरफ़ेस नाम

  • /etc/udev/rules.d/70-persistent-net-rulesपुराने रिलीज़ से बदल दिया गया है, जो कि systemd .link द्वारा प्रतिस्थापित किया गया है (लेकिन वे ऑटो नहीं बनाए गए हैं), मैंने इसे विशिष्ट समस्याओं के लिए इसके अस्तित्व की जाँच करने के लिए यहाँ जोड़ा है, लेकिन एंटिहापाल के मामले के लिए नहीं ।


1

आपको अपने initrdकुछ के साथ अपडेट करने की आवश्यकता है update-initramfs -k all -c, क्योंकि udv उन कॉन्फ़िगर को लागू करता है जो पहले से ही चल रहा है initrd

उबंटू 16.04 में अब 70-लगातार-नेट-नियम फाइल नहीं है।


1
यह अजीब है, यह 16.04 सिस्टम करता है। आह, लेकिन यह एक उन्नत प्रणाली है। आप सही हैं कि यह एक ताजा स्थापित में मौजूद नहीं है।
एल्डर गीक

0

मेरे पास टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं है, लेकिन केवल चिह्नित जवाब में जोड़ने के लिए, Ubuntu 16.04 की साफ स्थापना में /etc/udev/rules.d/70-persistent-net.rules फ़ाइल मौजूद नहीं होगी। हालांकि, यदि आप इसे मैन्युअल रूप से बनाते हैं, तो आप यहां उत्तर में दिखाए गए अनुसार एक पंक्ति जोड़ सकते हैं और यह उसी तरह काम करना चाहिए जैसे कि पुराने संस्करणों में किया गया था, एक उल्लेखनीय अंतर के साथ - KERNEL पैरामीटर को उस नाम के रूप में निर्दिष्ट किया जाना चाहिए जिसे सौंपा गया था डिफ़ॉल्ट रूप से इंटरफ़ेस। उदाहरण के लिए, यदि सिस्टम ने इंटरफ़ेस को "ens160" नाम दिया है और आप इसे "eth0" में बदलना चाहते हैं, तो लाइन निम्न दिखेगी:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="ens160", NAME="eth0"

यह नियम केवल मैक निर्दिष्ट किए गए इंटरफ़ेस (एटीटीआर {पता} पैरामीटर) से मेल खाने वाले और कर्नेल नाम मिलान वाले कर्नेल पैरामीटर से मेल खाने के नियम को बताता है। वैकल्पिक रूप से आप शायद KERNEL पैरामीटर को पूरी तरह से छोड़ सकते हैं और यह भी काम करना चाहिए।

संपादित करें: और जैसा कि पहले ही उल्लेख किया गया है, यदि आप .link फ़ाइल विधि का उपयोग करना चाहते हैं तो आपको प्रभावी होने के लिए initramfs को अपडेट करना होगा। यह भी ध्यान दें कि कस्टम .link फ़ाइल को / etc / systemd / नेटवर्क में बनाया जाना चाहिए, न कि / lib / systemd / नेटवर्क में (या तो काम करेगा लेकिन सर्वोत्तम अभ्यास का उपयोग / etc / systemd / नेटवर्क के लिए है क्योंकि इसके लिए वहाँ क्या है - कस्टम .link फ़ाइलों के लिए अनुमति दें, जो / lib / systemd / नेटवर्क में डिफ़ॉल्ट को ओवरराइड करती हैं)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.