Разница между командами ifconfig и ip

19

Я прочитал некоторые статьи / учебные пособия по команде ifconfig, большинство из которых содержали общее утверждение:

"ifconfig устарела командой ip"

и предложил узнать ip команду. Но никто из них не объяснил, почему команда «ip» является более мощной, чем «ifconfig».

В чем разница между ними обоими?

Мандар Шинде
источник

Ответы:

21

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

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

Дополнительно:

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

Смотрите также ifconfigотстой .

РЕДАКТИРОВАТЬ : Убрал утверждение о net-toolsпрекращении разработки, что теперь я забыл, где я получил для этого поста. net-tools'работал над ним с момента iproute2его выпуска, хотя в основном это исправление ошибок и незначительные улучшения и функции, такие как интернационализация.

Pilona
источник
NET-3 net-tools - не единственный ifconfig. Например, в GNU inetutils есть другой. И это еще не все. unix.stackexchange.com/a/504084/5132
JdeBP
7

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

В Linux ifconfigкоманда не развивалась долгое время. Это все еще прекрасно для того, что он делает. Если вы используете ifconfigчто-то, нет причин останавливаться.

Linux также предоставляет ipкоманду из набора инструментов iproute2 . Команда ipобъединяет несколько классических команд и более, в том числе ifconfig, routeи arp. ipможет сделать намного больше, чем ifconfig. С другой стороны, ipэто не всегда присутствует, особенно во встроенных системах (и никогда в вариантах Unix, кроме Linux).

Синтаксический ifconfigвыход «s своего рода сосет. Синтаксический ipвыход «s своего рода сосет. Там нет победителя.

Жиль "ТАК - прекрати быть злым"
источник
Я всегда думал, ipчто вывод синтаксического анализа довольно прост, и, конечно, чертовски проще, чем ifconfig. Мне также нравится, что во многих случаях выходные данные ipкоманды могут использоваться в качестве входных данных для другой ipкоманды с небольшими изменениями или без каких-либо изменений (например, каждая строка ip route showможет использоваться в качестве аргументов ip route add).
Патрик
1
@ Патрик разбирает ip route, и ip ruleвывод довольно ясен и довольно прост для анализа. Но ip linkили ip addrэто боль. Я действительно хотел бы, чтобы кто-то представил патч или что-то еще, чтобы ip addrраспечатать точные утверждения, возможно, с переключателем, который вы бы использовали для настройки текущей конфигурации, как вы получаете с ip route show.
Зоредаче
5

Просто чтобы добавить немного битов к ответу от пилона. Примерно в 2005 году был представлен новый механизм управления сетевым стеком - сокеты netlink .

Для настройки сетевого интерфейса iproute2используется механизм полнодуплексного сокета netlink, при этом ifconfigиспользуется ioctlсистемный вызов. Вот 2 основных документа по мотивации netlink и использованию rtnetlink .

Борис Бурков
источник