If0 ifdown olamaz (ana arayüz)


51

Ben edemez ifdownDebian üzerinde bir arayüz 6.0.5:

user@box:/etc/network$ sudo ifdown eth0 && sudo ifup eth0
ifdown: interface eth0 not configured
SIOCADDRT: File exists
Failed to bring up eth0.

user@box:/etc/network$ cat interfaces 
auto lo
iface lo inet loopback

allow-hotplug eth0 
allow-hotplug eth1 

auto eth0
iface eth0 inet static
address 10.0.0.1
netmask 255.255.255.0
gateway 10.0.0.254

auto eth1
iface eth1 inet manual

Marco tarafından talep edildiği gibi:

user@box:/etc/network/$ cat /run/network/ifstate 
lo=lo
eth1=eth1

4
Neleri /run/network/ifstateiçerir?
Marco

Sorumu bu dosyanın içeriğiyle güncelledim, eth0 orada değil. Hızlı bir "Google" bana bu dosyanın anlamını söylüyor (daha önce
erişemediğim için)

@Marco; Bu gerçekten benim sorunumu çözdü, bunu bir cevap olarak
kaydederseniz

Yanıtlar:


55

Dosyanın içeriğini kontrol edin /run/network/ifstate. ifupve ifdownbu dosyayı hangi ağ arayüzlerinin açılıp kapanabileceğini not etmek için kullanın. Böylece, ifupbir arabirim oluşturmak için başka ağ araçları kullanıldığında kolayca karıştırılabilir (örn. ifconfig).

Gönderen adam ifup

Program, ağ arayüzlerinin yukarı mı yoksa aşağı mı olduğuna dair kayıtları tutar. İstisnai koşullar altında bu kayıtlar, arayüzlerin gerçek durumlarıyla tutarsız hale gelebilir. Örneğin, ifup kullanılarak oluşturulan ve daha sonra kullanılarak yapılandırılan bir arayüz ifconfighala up olarak kaydedilecektir. Bunu düzeltmek için , arabirimin geçerli durumunu düşündüğü halde yapılandırma veya deconfiguration komutlarını --forcezorlama ifup veya ifdownçalıştırma seçeneğini kullanabilirsiniz .


8
Bu cevabı eklemek eth0=eth0için /run/network/ifstate, arayüzü tanımasını ve doğru şekilde yapılandırmasını sağlamak için eklemek zorunda kaldım . Bu cevap bana dosyaya işaret etmeme yardımcı oldu, ancak benzer sorunumu çözen bu ilaveyi öne sürmekten vazgeçti.
David Parks

1
@DavidParks Eğer arayüz olarak işaretlenmiş emin misin autoiçinde /etc/network/interfaces? /run/network/ifstateDosyayı el ile değiştirmeye gerek kalmadan görünmesi gerekir.
Marco,

1
--forceCevabım benim içindi; ifupbaşarısız bir komut nedeniyle arayüzü ilk etapta ortaya koymadı /etc/network/if-pre-up.d; Şansım beni hiç ağa sahip!
sanmai

32

ifdownİhtiyacınız olmayan birçok şeyi yapan üst düzey bir programdır. Ayrıca, her yerde kullanılamaz. Daha taşınabilir bir yol sizin için işe yarayabilir:

$ sudo ifconfig eth0 down

O zaman yapamazsanız ifup, muhtemelen bazı yapılandırma sorunlarınız vardır. El ile onu yetiştirme, ifconfig eth0 upmuhtemelen bu durumda doğru şey değil. Debian'da, ifupbir ikili çalıştırılabilir dosya olduğundan, stracenerede kapatılacağını bulmak için büyük olasılıkla buna ihtiyacınız olacak:

$ sudo strace -e open ifup eth0

Bu, ifupçalışırken hangi dosyaların açıldığını ve bu durumun soruna yol açabileceğini gösterir.

Diğer sistemlerde (örneğin RHEL ve türevleri) ifupbir kabuk betiğidir, bu nedenle hata ayıklaması çok daha kolaydır:

# sh -x `which ifup` eth0

Bir kabuk betiği sh -xçalıştırmak, çalıştırdığı her satırı yazdırmasını sağlar, böylece yürütmeyi takip edebilirsiniz.


Çatlak bir cevap, ama Marco sorunu buldu. sudo ifconfig eth0 down && sudo ifconfig eth0 upArayüzü yukarı aşağı çevirecek olanı denedim ama yazdığım ve bunu yapmadığım bir if-up betiğini elle tetiklemeye çalışıyordum. / Etc / network / run / ifstate dosyasını güncelledikten sonra ifdown / up şimdi çalışıyor. Yine de bilginiz için teşekkürler! :)
jwbensley

-X seçeneğiyle harika bir fikir söylemeyi unuttum! Teşekkürler!
jwbensley

1
ifdownİhtiyacınız olabilecek birçok şeyi yapan üst düzey bir programdır. ifconfig eth0 downdaha taşınabilir ve her zaman çalıştırılabilir, ancak yapabilecek temizleme işlemlerini ifdownyapmaz.
Gilles 'SO- kötülük yapmayı bırak'

Her ifconfigzaman kaçınıp kaçmanızı önermek istemem ifup/down. Sadece bir sorun giderme adımı olarak önerdim. Sorunu anlamak gibi bu bir olduğu ortaya çıktı sonuç kullanmanın ifconfigyerine ifup/downböylece üst düzey mekanizmalarını kafa karıştırıcı. Fakat cevabımı gönderdiğimde bunu bilmiyordum.
Warren Young

20

Bunu daha önce ethX'in uygun şekilde yapılandırılmadığını gördüm /etc/network/interfaces. Bunun gibi bir şeye ihtiyacı var: -

auto eth0
   iface eth0 inet dhcp

Düzgün yapılandırılmamış bir /etc/network/interfacesdosyada bile eth0 ile aşağıdakileri aşağı getirebilirsiniz:

$ sudo ip link set eth0 down

Bu tam olarak başıma gelenlerdi. Eklemeyi unuttum auto. Teşekkürler.
Mike,

2

Bu sorunla mücadele eden herkes için:

İfstate dosyasını kontrol ettim / "run-name" / run / network.

Boş olduğundan, "arabirim adı" (eth0) ifstate. "Arabirim adı" dosyasını / run / network dizinine dahil ettim.


1

Ekle eth0=eth0için /run/network/ifstate. Bu benim için çalıştı


0

Bana yardım ettiğim şey içerideki rmkilit dosyasını kaldırmak için komut çağırmak./run/network/

Yapmanız ls -lave gizli bir .ifstatedosya veya bu adın altında bir şey görmeniz gerekir .

Bunu kaldırın ve sonra deneyin: ifdown && ifup

Endişeleniyorsanız, bir şeyleri kırmanız, dosyanın bir kopyasını dizinin dışına çıkarmanız ve dizinin içindeki dosyayı kaldırmanız olabilir.

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.