ip против ifconfig. Сравниваем, чтобы выбрать лучшее.

Из пакета net-tools в дистрибутивах на основе Linux имеется широкий набор команд, благодаря которым можно настроить сеть через командную строку. Пакет включат следующие команды: ifconfig, route, nameif, iwconfig, iptunnel, netstat и arp. На протяжении длительного времени пакет входил во все дистрибутивы Linux, так как его в действительности достаточно, для мониторинга и настройки сети так, как потребовал бы этого хоть новичок, хоть опытный пользователь Linux. За последние годы в ядре Linux, произошли большие улучшения и благодаря этому появилась более мощная альтернатива, которая может заменить все эти команды. Это альтернатива — команда ip из пакета iproute2util. Команда ip функционально организована на 2-х уровнях сетевого стека, то есть на уровне 2 (канальный уровень) и на уровне 3 (сетевой уровень) и выполняет все функции вышеупомянутых команд из пакета net-tools.

Несмотря на то, что команда /bin/ip в системах Linux уже достаточно давно, многие по привычке пользуются устаревшей командой /sbin/ifconfig для настройки, отображения. Конечно ifconfig не исчезнет в ближайшее время, хотя она уже не входит в новые дистрибутивы Linux, поэтому мы рекомендуем уже сейчас вооружиться и овладеть командой ip, тем более что она шире по функциональности и в конечном итоге заменит ifconfig.

Справочная страница ip поначалу может показаться пугающей, хотя на самом деле ее синтаксис очень легко читается. Все познается в сравнении. Поэтому в этой статье мы сделаем сравнение команд ifconfig с ip. А о новых возможностях ip мы расскажем в другой статье.

Примечания:
— Если вы используете ifconfig  или ip для настройки сетевых интерфейсов, изменения будут потеряны после перезагрузки. Чтобы ваши изменения были постоянными, вам необходимо изменить файлы конфигурации, такие как /etc/network/interfaces . Например, чтобы отключить интерфейс, вы можете просто удалить его конфигурационную часть из файла.
— Чтобы произвести настройку сетевого интерфейса с помощью команд ip или ifconfig у вас должны быть привилегии суперпользователя.

1. Отображение всех сетевых интерфейсов Linux.

$ ifconfig
$ ip addr show

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

2. Добавление или удаление IP-адреса в Linux.

Приведенная ниже команда назначает интерфейсу eth0 IP-адрес 192.168.0.5:

# ifconfig eth0 add 192.168.0.5
# ip addr add 192.168.0.5 dev eth0

Это простой вариант команды. Иногда бывает, что необходимо добавить маску подсети и широковещательный адрес. Обратите внимание, что маска подсети в команде ip может быть задана в нотации CIDR, то есть как 192.168.0.5/24:

# ifconfig eth0 192.168.0.5 netmask 255.255.255.0 broadcast 192.168.0.255
# ip addr add 192.168.0.5/24 broadcast 192.168.0.255 dev eth0

Приведенная ниже команда удалит с интерфейса eth0 IP-адрес 192.168.0.5:

# ifconfig eth0 del 192.168.80.5
# ip addr del 192.168.0.5/24 dev eth0

3. Включение отключение сетевого интерфейса.

Приведенные ниже команды включают или отключают определенный сетевой интерфейс:

# ifconfig eth0 up
# ip link set eth0 up

Для того, чтобы выключить сетевой интерфейс просто замените up на down.

4. Создание псевдонимов (alias).

Приведенные ниже команды создадут alias eth0:1 для интерфейса eth0 с IP-адресом 192.168.0.5:

# ifconfig eth0:1 192.168.0.5/24
# ip addr add 192.168.0.5/24 dev eth0 label eth0:1

5. Добавить MAC-адрес на сетевой интерфейс.

Приведенная ниже команда устанавливает аппаратный MAC-адрес на интерфейс eth0:

# ifconfig eth0 hw ether 1c:1b:0d:d5:bf:f8
# ip link set dev eth0 1c:1b:0d:d5:bf:f8

Проверить назначенный MAC-адрес можно в значении Hwaddr выведя команду ifconfig.

6. Протокол ARP

Приведенные ниже команды включают/отключают использование протокола ARP:

# ifconfig eth0 arp

Для того, чтобы отключить данную опцию используйте -arp

# ip link set dev eth0 arp on

Для того, чтобы отключить эту опцию просто замените on на off

Для добавления новой запаси в ARP-таблицу используйте следующие команды:

# arp -i eth0 -s 192.168.0.5 00:11:22:33:44:55
# ip neigh add 192.168.0.5 lladdr 00:11:22:33:44:55 hud permanent dev eth0

7. Отображение и настройка таблицы маршрутизации

Показать таблицу маршрутизации:

$ route
$ ip route show

Чтобы посмотреть на какой интерфейс (и шлюз) будет направлен пакет с определенным IP-адресом, в ip route есть хорошая особенность:

$ ip route get 192.168.7.103

Добавление маршрута на интерфейсе:

# add route -net 192.168.2.0/24 dev eth0
# ip route add 192.168.2.0/24 dev eth0

Удалить запись из таблицы маршрутизации:

# route del -net 192.168.2.0/24 dev eth0
# ip route del 192.168.2.0/24 dev eth0

Команды для добавления шлюза:

# route add -net 192.168.5.0/24 gw 192.168.5.1
# ip route add 92.168.5.0/24 via 192.168.5.1

8. Дополнительные конфигурации сетевого интерфейса.

Установка значения MTU на 1492:

# ifconfig eth0 mtu 1492
# ip link set dev eth0 mtu 1492

Включить или отключить многоадресный флаг:

# ifconfig etho multicast
# ip link set dev eth0 multicast on

Установка длины очереди передачи:

# ifconfig eth0 txqueuelen 1200
# ip link set dev eth0 txqueuelen 1200

Включить или отключить все режимы многоадресной рассылки

# ifconfig eth0 allmulti
# ip link set dev eth0 allmulti on

Заключение

Сравнив две команды ip и ifconfig, которые по сути идентичны и предназначены для одной цели — настройка и мониторинг сетевых интерфейсов, мы можем сделать для себя рациональный выбор. Команда ip ничем не хуже, а в некоторых моментах даже лучше подходит для реализации задач. Не менее весомый аргумент в пользу ip то, что в последние дистрибутивы Linux ifconfig уже не поставляется по умолчанию, а для установки пакета необходим выход в интернет, которого может и не быть на настраиваемом сервере.

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

echo "alias ip='ip --color'" >> .bash_aliases
echo "alias ipb='ip --color --brief'" >> .bash_aliases

Добавить комментарий

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