Конфигурация сетевых интерфейсов: команды ifconfig и ip.

Как сетевые администраторы или кто-либо, кто занимается устранением неполадок в сети, вы часто сталкиваетесь с терминами «ifconfig» и «ip». Обе эти команды используются в операционных системах на базе Unix для настройки сетевого интерфейса, но что их отличает? В этой статье мы рассмотрим различия, углубимся в некоторые примеры, чтобы лучше понять эти команды.

Утилита ifconfig «interface configuration» используется для администрирования системы/сети в операционных системах Unix/Linux для настройки, управления и запроса параметров сетевого интерфейса через интерфейс командной строки или в сценариях настройки системы.

Команда «ifconfig» используется для отображения информации о текущей конфигурации сети, настройки IP-адреса, сетевой маски или широковещательного адреса для сетевого интерфейса, создания псевдонима для сетевого интерфейса, настройки аппаратного адреса и включения или отключения сетевых интерфейсов.

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

 sudo ifconfig

Вы можете вывести только информацию про определенный интерфейс, например, про eth0:

 sudo ifconfig eth0

С помощью опции -a вы можете вывести все интерфейсы, даже те, которые сейчас отключены:

 sudo ifconfig -a

Чтобы посмотреть список интерфейсов с минимальной информацией о них используйте опцию -s:

 sudo ifconfig -s

Чтобы включить интерфейс используется команда ifconfig eth0 up:

 sudo ifconfig eth0 up

Чтобы отключить - down:

 sudo ifconfig eth0 down

Вы можете получить более подробную информацию об ошибках с помощью опции -v:

sudo ifconfig -v

Включить поддержку протокола ARP для интерфейса:

 sudo ifconfig eth0 arp

А чтобы отключить:

 sudo ifconfig eth0 -arp

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

 sudo ifconfig eth0 promisc

А чтобы отключить:

 sudo ifconfig eth0 -promisc

С помощью команды netmask вы можете установить маску сети для интерфейса:

sudo ifconfig eth0 netmask 255.255.255.0

Чтобы добавить ip адрес для интерфейса используйте просто укажите его после интерфейса:

sudo ifconfig eth0 192.168.1.11

Команда broadcast позволяет установить широковещательный адрес:

sudo ifconfig eth0 broadcast 192.168.1.255

С помощью команды hw вы можете установить аппаратный адрес или так называемый, MAC адрес. Здесь, кроме самого адреса нужно указать тип сети, ether для проводного подключения Ethernet:

sudo ifconfig eth0 hw ether BC:AE:C5:BE:8B:B7

С помощью mtu вы можете изменить максимальный размер пакета:

sudo ifconfig eth0 mtu 1000

Однако примерно с 2009 года команда «ip» начала заменять традиционную команду ifconfig. Команда «ip» является частью пакета iproute2, который активно поддерживается, в отличие от пакета net-tools.

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

Вот пример использования команды «ip»:

ip addr

Например, если вы хотите подключить сетевой интерфейс:

sudo ip link set eth0 up

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

Например, чтобы отобразить таблицу маршрутизации, вы должны использовать:

ip route show

Хотя ifconfig имеет свое историческое значение и до сих пор находит применение благодаря своей простоте и привычности, команда «ip» предлагает более мощное и комплексное решение для настройки сети и устранения неполадок. Он активно поддерживается, обладает более широким набором функций и полностью поддерживает IPv6, что делает его более актуальным в современных сетевых сценариях.