24 примера использования команды IP в Linux

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

Команда ip – это новая сетевая утилита командной строки, которая используется для назначения IP-адреса сетевому интерфейсу или настройки/обновления полезных сетевых переменных в системе Linux. Она является частью пакета iproute2 и предлагает несколько задач сетевого администрирования, таких как включение или выключение сетевых интерфейсов, назначение и удаление IP-адресов и маршрутов, управление ARP-кэшем и многое другое.

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

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

Настройка статического IP-адреса в Linux

Для постоянной настройки статического IP-адреса в Linux необходимо обновить или отредактировать файл конфигурации сети, чтобы назначить системе статический IP-адрес. Вы должны быть суперпользователем с командой su (switch user) из терминала или командной строки.

в RHEL

Откройте и отредактируйте файлы сетевой конфигурации для (eth0 или eth1), используя ваш любимый текстовый редактор. Например, назначение IP-адреса интерфейсу eth0 в дистрибутивах на базе RHEL выглядит следующим образом.

vi /etc/sysconfig/network-scripts/ifcfg-eth0 [В RHEL/CentOS/Fedora и Rocky Linux/AlmaLinux]

в Debian

Чтобы настроить постоянный статический IP адрес, необходимо изменить файл конфигурации сетевого интерфейса /etc/network/interfaces для внесения постоянных изменений, как показано ниже для дистрибутивов на базе Debian.

sudo nano /etc/network/interfaces [В Debian, Ubuntu и Mint]

Далее перезапустите сетевые службы после ввода всех данных с помощью следующей команды.

sudo systemctl restart networking

Временная настройка статического IP-адреса в Linux

Для временной настройки сети вы можете использовать команду ip для назначения IP-адреса определенному интерфейсу (eth2) на лету.

ip addr add 172.19.1.10/24 dev eth2
OR
sudo ip addr add 172.19.1.10/24 dev eth2

Примечание: К сожалению, все эти настройки будут потеряны после перезагрузки системы.

h2 Как отобразить все сетевые интерфейсы

В команде ip объект link представляет сетевой интерфейс. Мы можем использовать команду show для отображения всех сетевых интерфейсов.

Теперь давайте отобразим все сетевые интерфейсы с помощью следующей команды:

ip link show

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

Как проверить IP-адрес конкретного сетевого интерфейса

Чтобы получить подробную информацию об отдельном сетевом интерфейсе, такую как IP-адрес и MAC-адрес, используйте следующую команду, как показано ниже.

ip link show eth2

До сих пор мы использовали объект link, показывающий подробную информацию о сетевых интерфейсах. Однако он не показывает IP-адрес, связанный с сетевым интерфейсом. Чтобы преодолеть это ограничение, мы можем использовать объект addr с командой ip.

Давайте разберем это на примере.

ip addr show

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

ip addr show eth2

Как отобразить IP-адрес в цветном выводе

Команда ip показывает подробную информацию о сетевых объектах. Однако иногда нам нужно взглянуть на ограниченную информацию. В таких случаях мы можем включить цветной вывод. Эта опция выделяет важные детали разными цветами.

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

ip --color addr show eth2

В приведенном выше выводе видно, что имя интерфейса, адрес ethernet и состояние выделены разными цветами.

Как отобразить IP-адрес в формате JSON

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

Так, давайте используем опцию -j с командой для отображения того же вывода в формате JSON:

ip -j link show eth2

Этот метод пригодится при автоматизации, потому что JSON является широко распространенным форматом и существует множество библиотек/инструментов для разбора JSON на различных языках программирования.

Как сделать вывод JSON более читабельным

В предыдущем примере мы использовали опцию -j для отображения вывода в формате JSON. Этот формат JSON по умолчанию компактен и занимает мало места. Однако его нелегко читать из-за отсутствия отступов.

Чтобы преодолеть это ограничение, мы можем использовать опцию -p, которая делает вывод более читабельным за счет отступов. Давайте разберем это на следующем примере:

ip -j -p link show eth2

Здесь мы видим, что тот же вывод гораздо более читабелен по сравнению с предыдущими примерами.

Как удалить IP-адрес из сетевого интерфейса

В предыдущем примере мы использовали подкоманду add для назначения IP-адреса. Аналогичным образом мы можем использовать подкоманду del для удаления определенного IP-адреса.

Следующая команда удалит назначенный IP-адрес с заданного интерфейса (eth2).

ip addr del 172.19.1.10/24 dev eth2
OR
sudo ip addr del 172.19.1.10/24 dev eth2

Теперь проверим, что IP-адрес был удален:

ip -j -p addr show eth2

В приведенном выше выводе видно, что теперь сетевой интерфейс eth2 имеет только один IP-адрес.

Как включить сетевой интерфейс

Флаг «up» с именем интерфейса (eth2) включает сетевой интерфейс. Например, следующая команда активирует сетевой интерфейс eth2.

ip link set eth2 up
OR
sudo ip link set dev eth2 up

Теперь проверим обновленный статус:

ip -j -p link show eth2 | grep operstate

Как отключить сетевой интерфейс

Флаг «down» с именем интерфейса (eth2) отключает сетевой интерфейс. Например, следующая команда отключит сетевой интерфейс eth2.

ip link set eth2 down
OR
sudo ip link set eth2 down

Теперь проверим состояние сетевого интерфейса eth2:

ip -j -p link show eth2 | grep operstate

Вывод выше показывает новое состояние сетевого интерфейса.

Как удалить все IP-адреса сетевого интерфейса

В предыдущем примере мы видели, как использовать подкоманду del для удаления IP-адреса. Однако иногда нам нужно удалить все IP-адреса определенного сетевого интерфейса. В таких случаях мы можем использовать подкоманду flush.

Сначала с помощью команды flush удалите все IP-адреса сетевого интерфейса eth2:

sudo ip addr flush eth2

Теперь давайте проверим, что все IP-адреса сетевого интерфейса eth2 удалены:

ip -j -p addr show eth2

В приведенном выше выводе поле addr_info показывает пустой JSON-массив. Это указывает на отсутствие IP-адреса, связанного с сетевым интерфейсом eth2.

Как проверить таблицу маршрутизации?

Таблица маршрутизации хранит необходимую информацию для пересылки сетевого пакета в нужное место назначения. Мы можем использовать объект route команды ip для отображения правил маршрутизации.

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

ip route show

В приведенном выше выводе первая колонка представляет пункт назначения, а последняя – IP-адрес источника.

Как добавить новый статический маршрут?

Зачем нужно добавлять статические маршруты или ручные маршруты? К примеру, нам нужно добавить статические маршруты, чтобы трафик шел по наилучшему пути до места назначения.

sudo ip route add 172.19.1.0/24 dev eth2 proto kernel scope link src 172.19.1.2

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

ip route show

Как удалить статический маршрут?

Подкоманда del удаляет определенную запись из таблицы маршрутизации. Например, команда ниже удаляет запись маршрута устройства eth2:

sudo ip route del 172.19.1.0/24

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

ip route show

Как добавить постоянные статические маршруты

Все вышеперечисленные маршруты будут потеряны после перезагрузки системы. Чтобы добавить постоянный статический маршрут, отредактируйте файл /etc/sysconfig/network-scripts/route-eth2 Для сохранения статических маршрутов для eth2 нужно использовать такое название. По умолчанию файл route-eth2 отсутствует и его необходимо создать. Для другого интерфейса, название файла будет другим.

в RHEL

vi /etc/sysconfig/network-scripts/route-eth2

и добавьте следующие строки, сохраните и выйдите.

172.19.1.0/24 via 172.19.1.2 dev eth2

в Debian

Откройте файл /etc/network/interfaces и в конце добавьте постоянные статические маршруты. IP адреса могут отличаться в вашем окружении.

sudo vi /etc/network/interfaces
auto eth2
iface eth2 inet static
address 172.19.50.2
netmask 255.255.255.0
gateway 172.19.50.100
#########{Static Route}###########
up ip route add 172.19.1.0/24 via 172.19.1.2 dev eth2

Далее перезапустите сетевые службы после ввода всех данных с помощью следующей команды.

sudo systemctl restart networking

Как добавить шлюз по умолчанию?

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

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

Сначала добавим сетевой интерфейс eth0 в качестве шлюза по умолчанию:

sudo ip route add default via 172.17.0.1

Теперь проверим настройку шлюза по умолчанию с помощью следующей команды:

ip route show

Обратите внимание, что мы выполнили эту команду на тестовой машине. Будьте осторожны при использовании этой команды на боевом сервере.

Как удалить шлюз по умолчанию?

Мы можем использовать следующую команду для удаления шлюза по умолчанию:

sudo ip route del default

Теперь давайте просмотрим таблицу маршрутизации, чтобы убедиться, что шлюз по умолчанию был удален:

ip route show

Как отобразить ARP-кэш?

ARP означает Протокол разрешения адресов, который используется для поиска MAC адреса, связанного с определенным IP-адресом.

Мы можем использовать объект neigh с командой ip для отображения ARP-кэша:

ip neigh show

В приведенной выше команде neigh показывает соседние объекты.

Как добавить запись ARP?

Для создания новой записи ARP мы можем использовать подкоманду add с объектом neigh.

sudo ip neigh add 172.19.1.0 lladdr 02:42:e3:40:a6:b1 dev eth2

Теперь давайте составим список записей ARP-кэша:

ip neigh show

В приведенном выше выводе мы видим новую запись для сетевого интерфейса eth2.

Как удалить запись ARP?

Как и для других сетевых объектов, для удаления записи ARP можно использовать подкоманду del. Например, команда ниже удаляет ARP-запись сетевого интерфейса eth2:

sudo ip neigh del 172.19.1.0 dev eth2

Теперь давайте проверим, что запись была удалена, просмотрев список ARP-кэша:

ip neigh show

Как очистить все ARP-записи?

Мы можем использовать подкоманду flush для удаления нескольких ARP-записей. Чтобы понять это, сначала добавьте несколько записей ARP с состоянием STALE:

sudo ip neigh add 172.19.1.0 lladdr 02:42:e3:40:a6:b1 dev eth2 nud stale
sudo ip neigh add 172.19.2.0 lladdr 02:42:e3:40:a6:b2 dev eth2 nud stale
sudo ip neigh add 172.19.3.0 lladdr 02:42:e3:40:a6:b3 dev eth2 nud stale

Далее убедитесь, что новые записи были успешно добавлены:

ip neigh show

Затем очистите все записи с помощью следующей команды:

sudo ip neigh flush all

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

ip neigh show

Как установить MTU для сетевого интерфейса?

MTU означает Maximum Transmission Unit, который представляет собой наибольший размер пакета, который может быть передан за одну транзакцию. Мы можем манипулировать размером MTU в соответствии с нашими требованиями к производительности.

Сначала найдем MTU сетевого интерфейса eth2:

ip -j -p link show eth2 | grep mtu

Следующее, обновим размер MTU сетевого интерфейса eth2 до 3000:

sudo ip link set mtu 3000 dev eth2

И наконец, проверьте, что MTU был успешно обновлен:

ip -j -p link show eth2 | grep mtu

Как изменить сетевой Mac-адрес?

Команда ip позволяет нам изменить MAC-адрес сетевого интерфейса. Для этого мы можем использовать подкоманду set с объектом link:

Сначала перечислите текущий MAC адрес сетевого интерфейса eth2:

ip -j -p link show eth2 | grep address

Следующая команда:

sudo ip link set dev eth2 address 02:42:ac:13:01:03

Наконец, проверьте, что MAC-адрес был изменен:

ip -j -p link show eth2 | grep address

Пожалуйста, обратитесь к странице руководства, выполнив man ip из терминала/программы командной строки, чтобы узнать больше об IP-команде.

man ip
Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.tecmint.com

Похожие статьи

Комментарии (0)