ZaLinux.ru

Решение проблемы «bash: ifconfig: команда не найдена»

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

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

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

ifconfig

равнозначен запуску

ip address

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

ip a

15

Почему заменили 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, запустите её так:

ip a

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

17

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

ip -4 a

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

ip -6 a

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

ip a show wlan0

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

ip -4 a show wlan0

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

ip link ls up

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

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

ifconfig eth0 192.168.1.101

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

ip a add 192.168.1.101/255.255.255.0 dev eth0

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

ip a add 192.168.1.101/24 dev eth0

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

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

ip a del 192.168.1.101/24 eth0

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

ip -s -s a f to 192.168.1.0/24

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

ip link set eth0 down

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

ip link set eth0 up

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

ip route add default via 192.168.1.254

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

ifconfig eth0:1 10.0.0.1/8

С ip:

ip addr add 10.0.0.1/8 dev eth0 label eth0:1

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

ip link set txqueuelen 10000 dev eth0

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

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

ip link set mtu 9000 dev eth0

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

ip a list eth0

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

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

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

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

ip r

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

16

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

ip route add 192.168.5.0/24 dev eth0

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

ip route del 192.168.5.0/24 dev eth0

18

ARP протокол

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

arp -i eth0 -s 192.168.0.1 00:11:22:33:44:55
ip neigh add 192.168.0.1 lladdr 00:11:22:33:44:55 nud permanent dev eth0

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

ifconfig -arp eth0

С ip:

ip link set dev eth0 arp off

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

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

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

1 Комментарий

  1. Serg

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

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

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

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *