Неможливо ifdown eth0 (основний інтерфейс)


51

Я не можу ifdownінтерфейс на Debian 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

Як вимагає Марко:

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

4
Що /run/network/ifstateмістить?
Марко

Я оновив своє запитання щодо вмісту цього файлу, eth0 там немає. Швидкий "Google" повідомляє мені значення цього файлу (так як я до нього не звертався раніше), я думаю, я можу побачити, де проблема :)
jwbensley

@Marco; Це справді вирішило мою проблему, якщо ви опублікуєте це як відповідь, я можу відзначити це правильним :)
jwbensley

Відповіді:


55

Перевірте вміст файлу /run/network/ifstate. ifupі ifdownскористайтеся цим файлом, щоб відзначити, які мережеві інтерфейси можна піднімати та зменшувати. Таким чином, ifupїх можна легко сплутати, коли для створення інтерфейсу використовуються інші інструменти мереж (наприклад ifconfig).

Від людини іпуп

Програма веде облік того, чи є мережні інтерфейси вгору чи вниз. За виняткових обставин ці записи можуть суперечити реальним станам інтерфейсів. Наприклад, інтерфейс, який був створений за допомогою ifup та пізніше деконфігурований за допомогою ifconfig, все ще буде записаний як оновлений. Щоб виправити це, ви можете скористатися --forceпараметром, щоб примусити ifup або ifdownзапустити команди конфігурації чи деконфігурації, незважаючи на те, що він вважає поточним станом інтерфейсу.


8
Для того, щоб додати до цього відповіді, я повинен був додати eth0=eth0до , /run/network/ifstateщоб змусити його розпізнати інтерфейс і налаштувати його належним чином. Ця відповідь допомогла вказати мені на файл, але не зупинилася на тому, щоб запропонувати це доповнення, саме це і вирішило мою подібну проблему.
Девід Паркс

1
@DavidParks Ви впевнені, що інтерфейс позначений як autoв /etc/network/interfaces? Він повинен з'являтися /run/network/ifstateбез необхідності вручну змінювати файл.
Марко

1
--forceбула для мене відповіддю; виявилося, ifupщо не вивели інтерфейс в першу чергу через невдалу команду /etc/network/if-pre-up.d; пощастило мені взагалі мережу!
sanmai

32

ifdownце програма високого рівня, яка робить багато речей, які можуть вам не знадобитися. Крім того, він доступний не скрізь. Більш портативний спосіб може працювати для вас:

$ sudo ifconfig eth0 down

Якщо ви цього не можете ifup, у вас, ймовірно, є проблеми з налаштуваннями. Ручне виховання з цим, ifconfig eth0 upмабуть, не є правильним у цьому випадку. На Debian ifup- це бінарний виконуваний файл, тому вам, мабуть, доведеться straceрозібратися, де його зависають:

$ sudo strace -e open ifup eth0

Це підкаже вам, які файли ifupвідкриваються під час роботи, що може підключити вас до проблеми.

В інших системах (наприклад, RHEL та похідні) ifup- це сценарій оболонки, тому набагато простіше налагоджувати:

# sh -x `which ifup` eth0

Запуск скрипта оболонки з допомогою sh -xнього дозволяє надрукувати кожен запущений рядок, так що ви можете простежити виконання.


Відверта відповідь, але Марко знайшов проблему. Я намагався, sudo ifconfig eth0 down && sudo ifconfig eth0 upякий би махав інтерфейсом вгору та вниз, але я намагався вручну запустити сценарій if-up, про який я писав, і це не було. Після оновлення файлу / etc / network / run / ifstate, ifdown / up працює зараз. Дякуємо за вашу інформацію! :)
jwbensley

Забув сказати, чудова ідея з опцією -x! Дякую!
jwbensley

1
ifdownце програма високого рівня, яка робить багато чого, що вам може знадобитися. ifconfig eth0 downє більш портативним і його завжди можна запустити, але він не виконує завдання очищення, які ifdownможуть виконувати.
Жиль "ТАК - перестань бути злим"

Я не хочу пропонувати вам використовувати ifconfigвесь час, уникаючи ifup/down. Я запропонував це лише як крок усунення несправностей. Як я розумію, проблема виявилася результатом використання ifconfigзамість цього ifup/down, тим самим плутаючи механізми високого рівня. Але я цього не знав, коли розмістив свою відповідь.
Warren Young

20

Я бачив це раніше, коли ethX не був правильно налаштований /etc/network/interfaces. Для цього потрібно щось на зразок: -

auto eth0
   iface eth0 inet dhcp

Навіть при неправильно налаштованому /etc/network/interfacesфайлі ви можете збити eth0 за допомогою:

$ sudo ip link set eth0 down

Саме це сталося зі мною. Я забув додати його auto. Дякую.
Майк

2

Для всіх, хто бореться з цією проблемою:

Я перевірив файл ifstate. "Ім'я інтерфейсу" в / run / network.

Він був порожнім, тому я включив "ім'я інтерфейсу" (eth0) у файл ifstate. "Ім'я інтерфейсу" у / run / network.


1

Додати eth0=eth0в /run/network/ifstate. Це працювало для мене


0

Те, що я знайшов, допомогло мені викликати rmкоманду, щоб видалити файл блокування всередині/run/network/

У ls -laвас і ви повинні побачити прихований .ifstateфайл або щось під цим іменем.

Видаліть це, а потім спробуйте: ifdown && ifup

Якщо ви переживаєте, ви можете зламати щось, просто зробіть копію цього файлу за межами каталогу та видаліть файл із цього каталогу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.