Вместо net-tools теперь iproute2, а вместо ifconfig теперь ip a
Если вы работаете с командной строкой в Linux, то почти наверняка используете команду ifconfig. Возможно, использовали её уже много лет. Она упоминается во многих инструкциях и книгах. И тем больше, я думаю, вы удивитесь, узнав, что пакет net-tools (которому принадлежит ifconfig) больше не устанавливается по умолчанию, поскольку теперь считается устаревшим.
Его место занял пакет iproute2, а вместо ifconfig нужно использовать команду ip. Запуск ifconfig без аргументов:
ifconfig
равнозначен запуску
ip address
или в укороченной форме:
ip a
Почему заменили 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
Эта команда выведет список интерфейсов и связанную с ними информацию.
Допустим, вы хотите увидеть только информацию по 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
Вывод может выглядеть примерно так:
Теперь, допустим, вы хотите переправлять весь трафик через шлюз 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
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.
При написании этой заметки использовались материалы:
- http://unix.stackexchange.com/questions/145447/ifconfig-command-not-found
- https://www.linux.com/learn/tutorials/846486-replacing-ifconfig-with-ip
- https://tty1.net/blog/2010/ifconfig-ip-comparison_en.html
Связанные статьи:
- Нерекомендуемые сетевые команды Linux и их замена (99.7%)
- Как использовать команду ip в Linux (61%)
- Переход с устаревшей команды iwconfig (wireless_tools) на iw (59.7%)
- Ошибка «Authentication helper program /usr/lib64/squid/basic_ncsa_auth: (2) No such file or directory» (РЕШЕНО) (51.7%)
- Ошибки «TLS Error: TLS key negotiation failed to occur within 60 seconds» и «TLS handshake failed» (РЕШЕНО) (51.7%)
- Как установить драйвер для Wi-Fi Mediatek MT7921 и Mediatek MT7961 в Linux (RANDOM - 0.4%)
Все прекрасно работает,
ifconfig в debiane прекрасно работает от рута.
И да, он таки от обычного пользавателя пишет, что команда не найдена, но под рутом все прекрасно работает.
За всю историю юзанья, никогlа не сталкивался с невозможностью чего либо соорудить при работе с ifconfig.
Нет чтобы сделать аналог без больших изнений, нет бли =н непонятно для чего все усложнили. Отправилил эту команду туда же куда и NetworkManager
sudo apt-get install net-tools
Есть "философия UNIX". Следуйте ей, если работаете в этой системе.
Как говорится, со своим уставом в чужой монастырь не ходят.
Не превращайтесь в Windows 🙁
Цитаты хорошие, но суть претензий я не понял…
«Unix прост. Но надо быть гением, чтобы понять его простоту» — Деннис Ритчи.
«Unix не предназначен для ограждения своих пользователей от глупостей, поскольку это оградило бы их и от умных вещей» — Дуг Гвин.
«Unix никогда не говорит „пожалуйста“» — Роб Пайк.
Это ни в коем случае не претензия. Вы меня не правильно поняли.
Я про "Вместо net-tools теперь iproute2". iproute2 просто монстр какой-то. Всё может. От чего и предостеригали. Огромному большинству пользователей вполне хватало возможностей net-tools. Не так много как у великолепного и всемогущего iproute2, но… А тут выпиливают проверенный и привычный всем "инструмент" (в Debian 10) и ставят другой с "колосальными возможностями", которыми воспользуются всего-то 2, максимум 5 % ползователей данной "оси". Лично я был неприятно этим удивлён. Пришлось выпиливать эту "заботу" и возвращать старое и проверенное. Возможно я консерватор, но не надо "чинить то, что работает", не надо считать пользователя идиотом и делать ему хорошо. Он сам себе сделает хорошо. А если не сумеет сделать, значит оно ему не надо, не созрел ещё до этого. За чем усложнять-то всё? К примеру - route позволяет делать глупые вещи, такие как добавление множества маршрутов к одному месту назначения с той же метрикой. Да и ладно! Мозги зачем? Этак теперь nix стал win-подобным. Уберегает пользователя от всего! «Unix не предназначен для ограждения своих пользователей от глупостей, поскольку это оградило бы их и от умных вещей» — Дуг Гвин. «Unix никогда не говорит „пожалуйста“» — Роб Пайк. А теперь говорит. А теперь уберегает. Что сказать, превращается в систему для домохозяек, как хотел БГ. Хотя с другой стороны, это ХОРОШО. Лично меня это заставляет гораздо раньше, чем планировал, приняться изучать - Linux from Scratch где можно самому всё под себя. Ну… в общем мысль ясна 🙂
первое и самое важное, 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 - 😉