Centos 7 ifconfig команда не найдена

Обновлено: 07.07.2024

В очень многих инструкциях из интернета советуется использовать команду ifconfig для настройки сети или просмотра информации о ней. Это очень давняя, но удобная утилита, которая имеет простой синтаксис и выводит информацию в простом и правильном виде.

Но когда вы попытаетесь использовать эту команду, то иногда можете получить ошибку ifconfig команда не найдена. Здесь все понятно, команда не найдена, но это довольно популярная утилита, и странно, что она не поставляется по умолчанию. В этой статье мы рассмотрим что делать если вы сталкиваетесь с такой ошибкой и почему так происходит.

Ошибка ifconfig команда не найдена

Первая причина почему вы можете получать эту ошибку, очень проста. Скорее всего, утилита установлена в вашей системе, но интерпретатор bash не может ее найти. Дело в том, что в Linux существует несколько папок для хранения исполняемых файлов. Все утилиты, которые может выполнять только суперпользователь расположены в каталоге /sbin или /usr/sbin.


Соответственно, обычному пользователю не нужно давать доступ к этим файлам, поэтому эти каталоги доступны только root, а в переменную среды PATH, из которой bash берет каталоги для поиска программ для пользователя они даже не добавлены. Проще говоря, вам достаточно только запустить программу от имени суперпользователя:


Если даже после этого вы получаете эту ошибку, то это означает, что программа таки не установлена. Дело в том, что утилита довольно давняя, и некоторым разработчикам показалось, что нужно разработать что-то более совершенное, поэтому была разработана утилита ip. Она имеет больше возможностей и лучше. Но она непривычна и имеет сложный синтаксис. Теперь команда ip используется по умолчанию во многих дистрибутивах, а ifconfig удалена.

sudo apt install net-tools

sudo dnf install net-tools

sudo yum install net-tools

sudo pacman -S net-tools

После завершения установки пакета, а это будет выполнено очень быстро, вы можете пользоваться утилитой и ошибки ifconfig command not found больше не будет. Только запускайте ее с помощью sudo. Если вы решили больше не использовать ifconfig смотрите статью про утилиту ip linux.

Выводы

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

Причина заключается в том, что обычные пользователи системы и root пользователь имеют различные переменные окружения PATH (вы можете посмотреть PATH пользователя при помощи «echo $PATH). После ввода команды Linux, оболочка будет искать пользовательский PATH, чтобы попытаться найти команду для запуска. Она начинает поиск в каждой директории указанной в PATH, пока цель не будет найдена. Команды обычных пользователей обычно расположены в /usr/local/bin, /usr/bin и /bin. А команды пользователя root распологаются в основном в /usr/local/sbin, /usr/sbin, /sbin и корневой PATH это отражает. Поэтому, когда вы становитесь суперпользователем при помощи «su -», то вы также принимаете и новый путь PATH к основным командам. А используя только ‘su’, сохраняется пользовательский путь PATH по умолчанию, следовательно, при попытке выполнить программу расположенную в /usr/local/sbin, /usr/sbin, /sbin выдаст результат: ‘command not found’ error. Для более детального объяснения, смотрите справочную страницу (man bash), особенно раздел login shells. Таким образом, вы или должны указывать полный путь к команде (пример — /sbin/ifconfig) при использовании ‘su’, либо использовать ‘su -‘, когда становитесь root-ом.

Для проверки текущих сетевых настроек стоит использовать команду:

При работе в ОС семейства Linux, необходимо знать и понимать, что все аппаратные и программные устройства, а также различные параметры самой операционной системы и программ хранятся в конфигурационных файла. Таким образом, конфигурационные файлы интерфейсов управляют программными интерфейсами отдельных сетевых устройств. При загрузке ОС происходит считывание этих файлов и информации в ней, на основе которой и происходит определение необходимых (используемых и настроенных) интерфейсов, а также их запуск.

Такие файлы обычно называются ifcfg-<имя>, где <имя> относится к имени устройства, которое управляется этим конфигурационным файлом. Как было сказано выше — все интерфейсы и параметры ОС хранятся в различных специализированных файлах, что дает администратору удобною и гибкую возможность настройки параметров ОС и оборудования.

Настройка сетевого интерфейса

Настроим сетевой интерфейс путем редактирования конфигурационного файла, который расположен в директории /etc/sysconfig/network-scripts/

В моем случае кабель подключен в первый (и единственный)сетевой адаптер, который называется в системе etch0. Выполним редактирование соответствующего файла:

Напоминаю, чтобы внести изменения в содержание файла в редакторе vi— необходимо:


  • нажать клавишу «i» или «Insert»
  • для выхода из режима редактирования — «esc»
  • для сохранения внесенных изменений — «Shift+:» затем «wq» и нажать «Enter»

Для сети с использованием DHCP:

Комментарии выполненных действий:

DEVICE=<name> Имя физического устройства
BOOTPROTO=<none|bootp|dhco> Использ уемый протокол.
none — Не используем никакой протокол при загрузке
bootp — Используем BOOTP протокол
dhcp — Используем DHCP
ONBOOT=<yes|no> Активировать ли устройство во время загрузки
IPADDR=<address> IP адрес
GATEWAY=<address> IP адрес шлюза
NETMASK=<mask> Значение сетевой маски

Настройка сети

Выполняем редактирование сетевого конфигурационного файла:

NETWORKING=«yes»
HOSTNAME=«Имя.Вашего.Сервера» или рабочей станции

Для корректного применения настроек (чтобы они вступили в силу) выполняем перезапуск сети:

Если изменения в файле /etc/sysconfig/network не требуются, тогда можно рестартануть только интерфейс :

Также стоит знать, что настройку сети можно выполнить более быстро, выполним данные команды:

ifconfig eth0 192.168.Х.Х netmask 255.255.255.0

Для отключения сетевого интерфейса выполните:

ifconfig eth0 down

Если же вы хотите, чтобы настройки были получены автоматически по DHCP, то выполните следующую команду:

В данном случае, чтобы прекратить работу сетевого интерфейса необходимо будет завершить работу программы dhclient:

НО! При настройке сети подобным образом, после перезагрузки конфигурирование придется производить заново.

centos

Для проверки текущих сетевых настроек стоит использовать команду:

При работе в ОС семейства Linux, необходимо знать и понимать, что все аппаратные и программные устройства, а также различные параметры самой операционной системы и программ хранятся в конфигурационных файлах. Таким образом, конфигурационные файлы интерфейсов управляют программными интерфейсами отдельных сетевых устройств. При загрузке ОС происходит считывание этих файлов и информации в ней, на основе которой и происходит определение необходимых (используемых и настроенных) интерфейсов, а также их запуск.

Настройка сетевого интерфейса

Настроим сетевой интерфейс путем редактирования конфигурационного файла, который расположен в директории /etc/sysconfig/network-scripts/

В моем случае кабель подключен в первый (и единственный) сетевой адаптер, который называется в системе eth0. Выполним редактирование соответствующего файла:

Для сети со статическим IP адресом:

Для сети с использованием DHCP:

Комментарии выполненных действий:

Настройке сети

Выполняем редактирование сетевого конфигурационного файла:

Вводим следующие данные:

Для корректного применения настроек (чтобы они вступили в силу) выполняем перезапуск сети:

Если изменения в файле /etc/sysconfig/network не требуются, тогда можно рестартануть только интерфейс :

Также стоит знать, что настройку сети можно выполнить более быстро, выполним данные команды:

ifconfig eth0 192.168.Х.Х netmask 255.255.255.0

Для отключения сетевого интерфейса выполните:

Если же вы хотите, чтобы настройки были получены автоматически по DHCP, то выполните следующую команду:

В данном случае, чтобы прекратить работу сетевого интерфейса необходимо будет завершить работу программы dhclient:

НО! При настройке сети подобным образом, после перезагрузки конфигурирование придется производить заново.

Настройка DNS

Пропишите Ваши DNS сервера :

nameserver 192.168.Х.Х
nameserver 192.168.Х.Х

Настройка работы сети (и сетевых инструментов) в CenOS завершена.

Нашли ошибку в тексте? Выделите фрагмент текста и нажмите Ctrl+Enter

Вместо net-tools теперь iproute2, а вместо ifconfig теперь ip a

Если вы работаете с командной строкой в Linux, то почти наверняка используете команду ifconfig. Возможно, использовали её уже много лет. Она упоминается во многих инструкциях и книгах. И тем больше, я думаю, вы удивитесь, узнав, что пакет net-tools (которому принадлежит ifconfig) больше не устанавливается по умолчанию, поскольку теперь считается устаревшим.

Его место занял пакет iproute2, а вместо ifconfig нужно использовать команду ip. Запуск ifconfig без аргументов:

или в укороченной форме:


Почему заменили ifconfig

ifconfig – это программа из пакета net-tools, который на протяжении долгого времени не мог в полной мере поддерживать сетевой стек Linux. Он также по-прежнему использует ioctl для настройки сети, что является безобразным и менее продуктивным способом взаимодействия с ядром.

Множество изменений в сетевом коде Linux и множество новых возможностей недоступны при использовании net-tools: многолучеввая маршрутизация, политики маршрутизации (смотрите RPDB). route позволяет делать глупые вещи, такие как добавление множества маршрутов к одному месту назначения с той же метрикой.

  • ifconfig не сообщает должный аппаратный адрес для некоторых устройств.
  • Вы не можете настроить ipip, sit, gre, l2tp и т.д. во встроенных в ядро статичных туннелях.
  • Вы не можете создавать устройства tun или tap.
  • Способ добавления множества адресов данному интерфейсу также имеет бедную семантику.
  • Вы также не можете настраивать систему контроля трафика Linux используя net-tools.

Примеры использования ip. Аналоги ip для ifconfig

Сбор информации

Первое, что большинство людей изучает с командой ifconfig – это как узнать, какой IP адрес назначен интерфейсу. Это обычно делается командой ifconfig без флагов или аргументов. Чтобы сделать это же самое с командой ip, запустите её так:

Эта команда выведет список интерфейсов и связанную с ними информацию.


Допустим, вы хотите увидеть только информацию по IPv4 (для ясности). Чтобы сделать это, наберите команду:

Или вы хотите увидеть информацию только по IPv6:

Что если вы хотите увидеть информацию, связанную с конкретным интерфейсом? Вы можете вывести список данных по беспроводному соединению командой:

Вы можете задать ещё более конкретные условия этой командой. Если вы хотите увидеть IPv4 по интерфейсу wlan0, наберите команду:

Вы можете составить список только из работающих интерфейсов используя:

Изменение интерфейса

Теперь мы входим в сердце команды… использование её для изменения интерфейса. Допустим вы хотите назначить конкретный адрес первому ethernet интерфейсу eth0. С командой ifconfig это выглядело бы примерно так:

С командой ip это выглядит примерно так:

Вы можете немного сократить её:

Ясно, что вы должны знать маску подсети адреса, который вы назначаете.

Что насчёт того, чтобы удалить адрес из интерфейса? С командой ip вы также можете сделать это. Например, для удаления только что назначенного для eth0 адреса, наберите следующую команду:

Что если вы хотите просто очистить все адреса для всех интерфейсов? Командой ip это делается так:

Другой ключевой аспект команды ip – это возможность поднимать/отключать интерфейс. Чтобы отключить интерфейс eth0 наберите:

Чтобы обратно поднять eth0, используйте

С командой ip вы можете также добавлять и удалять шлюз по умолчанию. Работать с этим примерно так:

Добавление псевдонима (алиаса) интерфейса с ifconfig:

Если вы действительно хотите углубиться в детали, вы можете отредактировать очередь передачи. Вы можете задать низкое значение в очереди передачи для медленных интерфейсов и более высокое значение для быстрых интерфейсов. Чтобы сделать это, команда должна выглядеть примерно так:

Вышеприведённая команда установила бы высокую очередь передачи. Вы можете поиграться с этой величиной, чтобы найти, что лучше всего работает для вашего железа.

Вы также можете установить Maximum Transmission Unit (MTU) вышего сетевого интерфейса командой:

После сделанных изменений, используйте

для проверки, что изменения возымели эффект.

Управление таблицей маршрутизации

С командой ip вы также можете управлять системными таблицами маршрутизации. Это очень мощный элемент команды ip, и вам следует использовать его с осторожностью.

Допустим, вы хотите просмотреть все таблицы маршрутизации. Чтобы сделать это, наберите команду:

Вывод может выглядеть примерно так:

16

Теперь, допустим, вы хотите переправлять весь трафик через шлюз 192.168.5.0, подключённый через сетевой интерфейс eth0. Чтобы сделать это, наберите команду:

Для удаления этого же маршрута наберите:

18

ARP протокол

Добавьте любую запись в вашу ARP таблицу:

Отключите преобразование ARP на устройстве с ifconfig:

Цель этой заметки – дать начальное представление о команде ip. Конечно необязательно полностью отказываться от использования ifconfig, но теперь программа не предустановлена по умолчанию во многие дистрибутивы. И нужно быть готовым использовать команду ip.

При написании этой заметки использовались материалы:

Связанные статьи:

Рекомендуемые статьи:

11 Комментарии

Все прекрасно работает,

ifconfig в debiane прекрасно работает от рута.

И да, он таки от обычного пользавателя пишет, что команда не найдена, но под рутом все прекрасно работает.


За всю историю юзанья, никогlа не сталкивался с невозможностью чего либо соорудить при работе с ifconfig.

Нет чтобы сделать аналог без больших изнений, нет бли =н непонятно для чего все усложнили. Отправилил эту команду туда же куда и NetworkManager

sudo apt-get install net-tools

Есть "философия UNIX". Следуйте ей, если работаете в этой системе.

Как говорится, со своим уставом в чужой монастырь не ходят.

Не превращайтесь в Windows 🙁

«Unix прост. Но надо быть гением, чтобы понять его простоту» — Деннис Ритчи.

«Unix не предназначен для ограждения своих пользователей от глупостей, поскольку это оградило бы их и от умных вещей» — Дуг Гвин.

Это ни в коем случае не претензия. Вы меня не правильно поняли.

первое и самое важное, linux никогда не был unix, да и вообще linux - это не OS, это оболочка ядра(пакетный менеджер) и рассказывать что debian стал для домохозяек очень смешно, изначально для десктопа - ubuntu ( клон деба) а сам деб инетерсней использовать на серверах, и да , кто использует его на серверах - очень давно отказались от net-tools из-за дырявости данного пакета, + если ты уже так силь хочешь себе, скорее всего на десктоп unix - консервативный , тогда тебе нужно смотреть на FreeBSD и вообще на BSD системы, а насчет LFS какая разниза если ты влюбом варианте будетшь использовать одинаковое ядро ? и какая разница где ты будешь ставить пакеты в gentoo или в debian - хочешь позамарачивать, ставь в дебиане пакеты с исходного кода ))

- "lnux" не nix подобная ли ось?

- более конкретно, не ядро ли этой оси "lnuux"?

- точно ли ubuntu клон debiana? может быть он на нём основан?

- в чём "дырявость" пакета net-tools? только конкретно;

- кто эти мифические парни, "кто использует его на серверах - очень давно отказались от net-tools из-за дырявости данного пакета"? В моём понимании, представлении и по опыту "локальных войн", сервер настроил, запустил, и забыл его ковырять. На сервере "не играются" с пакетами. На нём вообще не играются. Контролируют его работу.

И ещё, LFS и ставить пакеты в Debian из исходного кода, это так же как угол в 100 градусов и температура кипения воды. Цифра одна, а остальное не очень 😉

И кстати, коллега, теперь не eth0, а epn3s0. И полноценный su теперь не su, а su - 😉

Читайте также: