CentOS 7 - Yeniden başlatmadan ağ arayüzünü yeniden adlandırın


24

Dosyaları değiştirerek ağ arayüzlerini yeniden adlandırıyorum /etc/sysconfig/network-scripts.

  • eth0 -> nic0
  • eth1 -> nic1

Ağ komut dosyalarının içeriği değişiklik yapıldıktan sonra şöyle görünür:

# 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

Bir yeniden başlatma, yeni yapılandırmayı etkinleştirir. Ama nasıl bu yapılandırmayı etkinleştirmek yapmak olmaksızın yeniden?

Bir systemctl restart networknumara yapmaz.

Bir arayüzü eski adına ( ifdown eth0) göre kapatabilirim, ancak ifupeski veya yeni ad sağlanmış olsa da aşağıdaki iletiyle sonuçlanır:

HATA: [/ etc / sysconfig / network-scripts / ifup-eth] nic0 aygıtı mevcut değil, başlatma işlemini geciktiriyor.

/etc/init.d/network status bu çıktıyı gösterir:

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

Hem, ifconfigve ip aeski arayüz adlarını gösterir.


1
Çekirdek modülleri olarak derlenmişlerse, ağ aygıtı sürücülerini kaldırmayı ve yeniden yüklemeyi deneyebilirsiniz.
Tom Hunt,

Yanıtlar:


29

İp komutunu kullanarak aygıtı yeniden adlandırabilirsiniz:

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

Düzenle :

Tamamlayıcılık ve dürüstlük adına (ve bilgi amaçlı olarak) aşağıdan ayrılıyorum, ancak Swill'in yorumunu ve Marco Macuzzo'nun cevabını / etc / sysconfig / network-scripts / ifcfg- arabiriminin adını ve cihazını değiştirdiğini doğruladım. eth0 (ve dosyayı yeniden adlandırmak) , yapılandırma dosyasına hwaddr = alanı dahil edildiği sürece cihazın doğru şekilde adlandırılmasına neden olacaktır . Başvurulan güncellemeden sonra bu yöntemi kullanmanızı öneririm.

Ayrıca udev kuralını yapılandırdığınızdan emin olmak isteyebilirsiniz, böylece bu bir sonraki yeniden başlatmada da işe yarayacaktır. Udev yolu, CentOS 7'de /usr/lib/udev/rules.d/60-net.rules dizinine taşındı, ancak yine de aynı şekilde yönetebilirsiniz. Eğer varsa sizin kernel dizesine "net.ifnames = 0 biosdevname = 0" katma sizin NIC için eski adlandırma şeması dönmek için, kaldırmak olabilir

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

Ve ile değiştirin

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

Her nic için bir girişe ihtiyacınız var. Doğru MAC adresini kullandığınızdan ve NAME alanını güncellediğinizden emin olun. "Net.ifnames = 0 biosdevname = 0" kullanmadıysanız, istenmeyen sonuçlar olabileceğinden dikkatli olun.


2
Bu konuda sadece bir not. CentOS 7.3 kullanıyorsanız, bu işe yaramaz. Bu, bu sorun nedeniyle ( access.redhat.com/solutions/2592561 ). /etc/udev/rules.d/90-eno-fix.rulesAğ aygıtlarını yeniden adlandırmak için önceden çalışan tüm çözümleri geçersiz kıldığı için dosyayı geçersiz kılmanız gerekir.
çalkalamak

Başvurduğunuz danışma belgesine baktığımızda, "Bu sorun systemd-219-30.el7_3.6 veya sonraki bir paketi içerecek şekilde yükleme havuzlarını güncelleyerek önlenebilir. Bu yeni sistem sürümü ile paket kurulumunda etkilenen arabirimler belirlenir ve udev kuralı otomatik olarak oluşturulur, böylece yeniden adlandırma sorunu tamamen önlenir. "
James Shewey

Bu, atıfta bulundukları farklı bir yeniden adlandırma sorunudur. Adının kısaltılmasından bahsediyorlar çünkü çok uzun (sanırım). Sabit olarak belirtilen udev kuralı, arayüz ismini eno########, bu isimleri yeniden adlandırmaya çalışan bütün girişimleri geçersiz kılan bir değere kodlar eth0. bu mantıklı mı? Makinemde hangi sürümü kullandığımı doğrulamak zorunda kalacağım, ancak dün en son CentOS 7.3'e yükselttim, bu yüzden belirtilen sürüme sahip olduğumu düşünüyorum.
çalkalamak

Bu yöntem benim için farklı ancak ilişkili bir problemi çözmemde yardımcı oldu - ilgisiz bir konfigürasyon hatası nedeniyle başlatılırken bir konteyner çöktü ve sistem adını ensXfY ismiyle değiştirilen arayüzü eth1'in konteyner ismine bıraktı. Daha sonra kabı yeniden başlatmayı denemek mümkün olmadı çünkü yeniden adlandırılana kadar arayüzü bulamadı
Michael Firth

9

Aslında, inanıyorum ki en iyi cevap daha önce bildirilmiş olan iki cevabın birleşimidir. Ağ servislerini yeniden başlatmadan cihaz adını değiştirmek için, ip linkJames Shewey ( ip link set <old_device_name> name <new_device_name>) tarafından önerilen komutları kullanın .

Değişikliklerin Red Hat Linux'ta yeniden başlatılmasını sağlaması için, ilgili dosyayı değiştirin /etc/sysconfig/network-scripts/. Dosyasını yeniden adlandırın ifcfg_<old_device_name>için ifcfg_<new_device_name>ve değiştirmek DEVICEiçin değişken içini <new_device_name>. Ayrıca, HWADDRdeğişkenin ayarlandığından ve doğru olduğundan emin olun . Udev kurallarına dokunmaya gerek yoktur , çünkü 60-net.rulesaslında ifcfg yapılandırma dosyalarını okumak için vardır /etc/sysconfig/network-scripts.


3

Eski adlandırma kurallarını geri yüklemek için /etc/default/grubdosyayı düzenlemeniz ve aşağıdakileri eklemeniz gerekir.

net.ifnames=0 biosdevname=0 

GRUB_CMDLINE_LINUXdeğişken sonunda


Ya da biosdevnameeğer kurulu ise paketi çıkarmadan
GAD3R

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
güzel hile yeniden adlandırma :) paylaşım için teşekkürler
166_MMX

2

@James Shewey tarafından verilen cevap, bunu yapmanın doğru yolu gibi görünüyor.

Sadece config dosyaları ile çalışmak /etc/sysconfig/network-scriptsve yeniden yükleme işlemini tetiklemek istiyorsanız, çekirdeğin modülünü @Tom Hunt tarafından belirtilen şekilde boşaltma ve yükleme işlemlerinde şu şekilde de çalışır:

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

Makineye uzaktan erişirseniz, nohup'ta tüm komutları çalıştırdığınızdan emin olun yoksa kendinizi kilitleyebilirsiniz:

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

Elbette yeniden yüklenecek sürücü arayüzünüze bağlıdır.


0

Yukarıdakileri Vagrant / VirtualBox ve güvenilir ile denedim, ancak bir şekilde bu benim geliştirme ortamımda işe yaramadı.

Eski arayüz adları, tam bir yeniden başlatılıncaya kadar ne yaptım korundu.

Aşağıdaki kuralları ekledim /etc/udev/rules.d/60-persistent-net.rules(dayanarak: https://access.redhat.com/solutions/112643) )

Amacım, arabirime PCI adresini temel alarak belirli bir ad vermekti.

Örnek:

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

Bu kuralları ekledikten sonra aşağıdaki komutları yürüttüm:

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

Hata mesajı oldu Cannot find device "int0"üzerindeki ip link set * upkomuta. Ve içinde /var/log/messagesşu mesajları fark ettim

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.

Ancak aşağıdakiler VM'ye VirtualBox aracılığıyla erişerek işe yaradı ve çekirdek modülünü kaldırmak ve yeniden eklemek için aşağıdaki komutları yürüttü.

rmmod e1000 
modprobe e1000

Bunu şu konuda buldum: https://www.centos.org/forums/viewtopic.php?t=54695

Fark ettim ki garip olan şey lsmodbana verdi (not Used by)

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

Lütfen kabul edilen yanıtla neyin işe yaramadığını ve kesin hata mesajlarını bize bildirin. Bu şekilde belki cevap geliştirilebilir.
Ned64

@ Ned64 Hata mesajı ve biraz daha fazla bilgi ekledim
Sander Visser

Demek istediğim: siz yazarken ne kök olarak, olur: ip link set eth0 down; ip link set eth0 name int0; ip link set int0 up? udev...Komuta yok !
Ned64
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.