Ubuntu 16.04'te ağ arabirimini systemd ile yeniden adlandırma başarısız oluyor


14

Enp5s0f0 ve enp5s0f1 adlı iki fiziksel ağ kartı ile başsız bir Ubuntu 16.04 LTS Sunucusu kullanıyorum.

Bu arayüzleri yeniden adlandırmak ve bu örneği takip etmek istiyorum . Bu nedenle /lib/systemd/network/70-myinterface.link(orijinal kaynak çalışmıyor gibi görünüyor) dosyayı oluşturdum (doğru mac adresini ayarladım):

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

[Link]
Name=dmz0

ve sunucuyu yeniden başlattı. Ne yazık ki, udevadmyapılandırma dosyamın kullanıldığını göstermesine rağmen, arayüz yeniden adlandırılmadı :

$ 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

Yeniden adlandırma işleminin neden işe yaramadığı hakkında bir fikriniz var mı?


1
Ben / etc / systemd / network bu dosyayı oluşturmak için en iyi yer olacağını düşündüm.
NGRhodes

@NGRhodes Alıntılanan örneğe dayalı bir yazım hatası olduğunu varsayıyordum, ama kim bilir?
Elder Geek

Ayrıca, networkmanager'in çalışmadığını kontrol edin, superuser.com/a/948996/127393 , networkmanager'in önceliğe sahip olduğunu önerir
NGRhodes

Ödül verdikten sonra, 16.04'te ağa danışılmadan önce her zaman USB adaptörleri için MAC adres türü adlandırmalarını zorlayan yeni bir udev kural dosyası olduğunu fark ettim (/lib/udev/rules.d/73-usb-net-by -mac.rules). Bu hiç doğru gelmiyor ... Kuralını tamamen devre dışı bırakmak zorunda kaldım, bu da .link dosyasını tekrar çalıştırdı. Yine de en doğru seçenek olup olmadığından emin değilim. '
Antti Haapala

Kullanımı MACAddress= [Match]benim için çalışmıyor linkyanı dosyalar, ben kullanarak sona erdi yüzden Path=yerine. Siz de denemelisiniz. Ayrıca hangi linkdosyanın cihazınızla eşleştiğini udevadm test-builtin net_setup_link /sys/class/net/enp5s0f1komutla kontrol edebilirsiniz
webKnjaZ

Yanıtlar:


8

Bu yardımcı olabilir veya olmayabilir .. /etc/udev/rules.d kontrol ve 70-persistent-net.rules olup olmadığını görmek istiyorum. Bu dosyayı kullanarak yeniden adlandırabilmelisiniz

Benimki şöyle:

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

Bu dosyadaki kartlarınız için girişleriniz varsa, "NAME = TheNameYouWant" öğesini değiştirerek adı istediğiniz gibi değiştirebilirsiniz.


Kesinlikle doğru. İlginç bir şekilde bahsettiğim bir yanıt göndermek üzereydim, Ubuntu'yu kullanan birkaç kişinin, ağ ağının adını değiştirme yönteminin çalışmadığını söyledi. Bu önereceğim şeydi ... +1
anonymous2

Kelle gitmeli.
EKons

5

Ubuntu 16.04 ve diğer birçok Linux sürümü ile çalışan udev kuralları (systemd-networkd .link dosyalarına alternatif) gerektirmeyen bir seçenek

Misal:

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

Yukarıdaki örnekte peth0 orijinal arayüz adı ve eth0 istenen addır. Şu anda sahip olduğunuz adı peth0'ın bulunduğu yere ve istediğiniz adı eth0'ın olduğu yere ekleyin. Yeniden başlatma gerekmez veya önerilmez. İşlemi ikinci arayüz kartı için tekrarlayın

4.4.0-36-jenerik # 55-Ubuntu çekirdeği ile Ubuntu 16.04'te test edildi

Düzenleme: Yeniden başlatmayı sürdüren kalıcı bir çözüm arıyorsanız bkz . Ağ Arabirimlerini Değiştirme Ubuntu 16.04

Kaynaklar: https://www.freedesktop.org/software/systemd/man/systemd.link.html

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

Test yapmak.

Not: @ antti-haapala yöntemi daha önce çalıştığından ve aniden durduğundan, "Özel bir durum olarak, boş bir dosya (dosya boyutu 0) veya aynı adı taşıyan / dev / null'u gösteren sembolik bağlantının yapılandırma dosyasını devre dışı bıraktığını bilmek isteyebilirsiniz. tamamen ("maskeli") ". <-Source


Cevabınız çok faydalı oldu, teşekkür ederim + 1 @ElderGeek

1
@Alberto yardımcı olduğuna sevindim!
Yaşlı Geek

ne yazık ki kalıcı değil ama yine de + 1
delfiler

@delfiler Yorumunuz için teşekkür ederiz. Seni doğru anlıyorsam, yeniden başlatmadan sağ kalan bir çözüm arıyorsunuz. Bununla ilgili açık mıyım?
Elder Geek


3
  • Açıklanan üç özel adlandırma yönteminin tümü systemd: Öngörülebilir Ağ Arabirimi Adları , udev kurallarıyla ilgilidir.

    systemd .link ve udev kurallarının klasör önceliği vardır. /etcgeçersiz /runkılar /lib.

    Mevcut kurulumu kontrol edin.

    # 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
    

    Bu udev kurallarındaki herhangi bir değişiklikten sonra (geçersiz kılma dosyaları ekleme / kaldırma), Önyükleme RAM diski güncellenmelidir:

    sudo update-initramfs -u
    

    Varsayılan olarak, bulabileceğiniz tek dosya bunlar

    ~$ 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
    

    Hepsini aşağıdaki linkte belgelendiği gibi VBox taze 16.04 kurulumunda test ettim, tüm yöntemler beklendiği gibi çalışıyor:

    Ubuntu 16.04 Karmaşık Arabirim Adları

  • /etc/udev/rules.d/70-persistent-net-rulessistemd .link'in yerini alan eski sürümlerden (ancak otomatik olarak oluşturulmazlar), belirli sorunlar için varlığını kontrol etmek için buraya ekledim, ancak AnttiHaapala'nın durumu için değil .


1

Udev, bu yapılandırmaları zaten çalışırken uyguladığından, sizin initrdgibi bir şeyle güncellemeniz gerekir .update-initramfs -k all -cinitrd

Ubuntu 16.04 artık 70-persistent-net-rules dosyasına sahip değil.


1
Tuhaf, bu 16.04 sistemleri var. Ahh ama bu yükseltilmiş bir sistem. Yeni bir kurulumda bulunmadığı doğru.
Elder Geek

0

Yorum yapmak için yeterli üne sahip değilim, ancak işaretli cevaba eklemek için Ubuntu 16.04'ün temiz kurulumlarında /etc/udev/rules.d/70-persistent-net.rules dosyası bulunmayacak. Bununla birlikte, manuel olarak oluşturursanız, burada yanıtta gösterildiği gibi bir satır ekleyebilirsiniz ve bu, daha eski sürümlerde olduğu gibi, önemli bir farkla çalışmalıdır - KERNEL parametresi, atanmış ad olarak belirtilmelidir. varsayılan olarak arabirim. Örneğin, sistem arabirimi "ens160" olarak adlandırdıysa ve "eth0" olarak değiştirmek istiyorsanız, satır şöyle görünebilir:

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

Bu, kurala yalnızca belirtilen MAC ile eşleşen (ATTR {address} parametresinde) ve KERNEL parametresiyle eşleşen bir çekirdek adıyla bir arabirimde eşleşmesini söyler. Alternatif olarak, muhtemelen KERNEL parametresini tamamen atlayabilirsiniz ve bu da işe yarayacaktır.

DÜZENLEME: Daha önce de belirtildiği gibi, .link dosya yöntemini kullanmak istiyorsanız, initramf'lerin yürürlüğe girmesi için güncelleştirmeniz gerekecektir. Ayrıca, özel .link dosyasının / etc / systemd / network içinde / lib / systemd / network içinde oluşturulmaması gerektiğini unutmayın (ya çalışacaktır ancak en iyi uygulama / etc / systemd / network'ü kullanmaktır, çünkü bunun için - bunun için / lib / systemd / network içindeki varsayılanları geçersiz kılan özel .link dosyalarına izin ver).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.