- Команда ip в Linux (с примерами)
- Как использовать команду ip
- Отображение и изменение IP-адресов
- Отображение информации обо всех IP-адресах
- Отображение информации об одном сетевом интерфейсе
- Назначьте IP-адреса интерфейсу
- Назначьте несколько IP-адресов одному интерфейсу
- Удалить / удалить IP-адрес из интерфейса
- Отображение и изменение сетевых интерфейсов
- Отображение информации о сетевых интерфейсах
- Измените статус интерфейса ВВЕРХ / ВНИЗ
- Отображение и изменение таблицы маршрутизации
- Показать таблицу маршрутизации
- Добавить новый маршрут
- Удалить маршрут
- Выводы
- Remove network interface permanently
Команда ip в Linux (с примерами)
Команда ip — это мощный инструмент для настройки сетевых интерфейсов, который должен знать любой системный администратор Linux. Он используется для включения или выключения интерфейсов, назначения и удаления адресов и маршрутов, управления кешем ARP и многого другого.
В этой статье объясняется, как использовать команду ip, на практических примерах и подробных объяснениях наиболее распространенных параметров.
Как использовать команду ip
Утилита ip является частью пакета iproute2, который установлен во всех современных дистрибутивах Linux.
Синтаксис команды ip следующий:
ip [ OPTIONS ] OBJECT COMMAND | help >
OBJECT — это тип объекта, которым вы хотите управлять. Наиболее часто используемые объекты (или подкоманды):
- link ( l ) — отображение и изменение сетевых интерфейсов.
- address ( a ) — отображение и изменение IP-адресов.
- route ( r ) — отображение и изменение таблицы маршрутизации.
- neigh ( n ) — Отображение и управление соседними объектами (таблица ARP).
Объект может быть написан в полной или сокращенной (краткой) форме. Чтобы отобразить список команд и аргументов для каждого объекта, введите ip OBJECT help .
При настройке сетевых интерфейсов вы должны выполнять команды как root или пользователь с привилегиями sudo . В противном случае команда RTNETLINK answers: Operation not permitted .
Конфигурации, установленные с помощью команды ip , не являются постоянными. После перезапуска системы все изменения теряются. Чтобы сделать изменения постоянными, вам необходимо отредактировать файлы конфигурации конкретного дистрибутива или добавить команды в сценарий запуска.
Отображение и изменение IP-адресов
При работе с объектом addr команды принимают следующий вид:
ip addr [ COMMAND ] ADDRESS dev IFNAME
Наиболее часто используемые КОМАНДЫ объекта addr : show , add и del .
Отображение информации обо всех IP-адресах
Чтобы отобразить список всех сетевых интерфейсов и связанный с ними IP-адрес, введите следующую команду:
Результат будет выглядеть примерно так:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:8c:62:44 brd ff:ff:ff:ff:ff:ff inet 192.168.121.241/24 brd 192.168.121.255 scope global dynamic eth0 valid_lft 2900sec preferred_lft 2900sec inet6 fe80::5054:ff:fe8c:6244/64 scope link valid_lft forever preferred_lft forever
Вы получите тот же результат, если наберете опустить команду show и наберете: ip addr .
Если вы хотите отображать только IP-адреса IPv4 или IPv6 , используйте ip -4 addr или ip -6 addr .
Отображение информации об одном сетевом интерфейсе
Чтобы получить информацию о конкретном сетевом интерфейсе, используйте ip addr show dev за которым следует имя устройства. Например, чтобы запросить eth0 , вы должны ввести:
Назначьте IP-адреса интерфейсу
Чтобы назначить IP-адрес интерфейсу, используйте следующий синтаксис:
ip addr add ADDRESS dev IFNAME
Где IFNAME — это имя интерфейса, а ADDRESS — это IP-адрес, который вы хотите назначить интерфейсу.
Чтобы добавить адрес 192.168.121.45 с сетевой маской 24 к устройству eth0 , вы должны ввести:
sudo ip address add 192.168.121.45/24 dev eth0
В случае успеха команда не покажет никаких результатов. Если интерфейс не существует, вы получите сообщение « Cannot find device «eth0» .
Назначьте несколько IP-адресов одному интерфейсу
С помощью ip вы можете назначить несколько адресов одному интерфейсу. Например:
sudo ip address add 192.168.121.241/24 dev eth0
sudo ip address add 192.168.121.45/24 dev eth0
Чтобы подтвердить, что IP-адреса назначены, введите ip -4 addr show dev eth0 или ip -4 a show dev eth0 :
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 inet 192.168.121.241/24 brd 192.168.121.255 scope global dynamic eth0 valid_lft 3515sec preferred_lft 3515sec inet 192.168.121.45/24 scope global secondary eth0 valid_lft forever preferred_lft forever
Удалить / удалить IP-адрес из интерфейса
Синтаксис для удаления IP-адреса из интерфейса следующий:
ip addr dev ADDRESS dev IFNAME
IFNAME — это имя интерфейса, а ADDRESS — это IP-адрес, который вы хотите удалить из интерфейса.
Чтобы удалить адрес 192.168.121.45/24 с устройства eth0, введите:
sudo ip address del 192.168.121.45/24 dev eth0
Отображение и изменение сетевых интерфейсов
Для управления и просмотра состояния сетевых интерфейсов используйте объект link .
При работе с объектами link наиболее часто используются следующие команды: show , set , add и del .
Отображение информации о сетевых интерфейсах
Чтобы отобразить список всех сетевых интерфейсов, введите следующую команду:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:8c:62:44 brd ff:ff:ff:ff:ff:ff
В отличие от ip addr show , ip link show не выводит информацию об IP-адресах, связанных с устройством.
Чтобы получить информацию о конкретном сетевом интерфейсе, используйте ip link show dev за которым следует имя устройства. Например, чтобы запросить eth0 вы должны ввести:
2: eth0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:8c:62:44 brd ff:ff:ff:ff:ff:ff
Измените статус интерфейса ВВЕРХ / ВНИЗ
Чтобы вывести интерфейсы вверх или вниз, используйте ip link set dev за которым следует имя устройства и желаемое состояние:
ip link set dev DEVICE> up|down>
Например, чтобы подключить интерфейс eth0 сети, вы должны ввести:
Отображение и изменение таблицы маршрутизации
Для назначения, удаления и отображения таблицы маршрутизации ядра используйте объект route . Наиболее часто используемые команды при работе с объектами маршрутов: list , add и del .
Показать таблицу маршрутизации
Чтобы получить список записей маршрута ядра, используйте одну из следующих команд:
ip route ip route list ip route list SELECTOR
При использовании без SELECTOR команда выведет список всех записей маршрута в ядре:
default via 192.168.121.1 dev eth0 proto dhcp src 192.168.121.241 metric 100 192.168.121.0/24 dev eth0 proto kernel scope link src 192.168.121.241 192.168.121.1 dev eth0 proto dhcp scope link src 192.168.121.241 metric 100
Чтобы отобразить только маршрутизацию для определенной сети, например 172.17.0.0/16 , введите:
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
Добавить новый маршрут
Чтобы добавить новую запись в таблицу маршрутизации, используйте команду route add за которой следует имя сети или устройства.
Добавьте маршрут к 192.168.121.0/24 через шлюз 192.168.121.1
ip route add 192.168.121.0/24 via 192.168.121.1
Добавьте маршрут к 192.168.121.0/24, который может быть достигнут на устройстве eth0.
ip route add 192.168.121.0/24 dev eth0
Чтобы добавить маршрут по умолчанию, используйте ключевое слово default . Следующая команда добавит маршрут по умолчанию через локальный шлюз 192.168.121.1 который может быть достигнут на устройстве eth0 .
ip route add default via 192.168.121.1 dev eth0
Удалить маршрут
Чтобы удалить запись из таблицы маршрутизации, используйте команду route add . Синтаксис удаления маршрута такой же, как и при добавлении.
Следующая команда удалит маршрут по умолчанию:
Удалите маршрут для 192.168.121.0/24 через шлюз 192.168.121.1
ip route add 192.168.121.0/24 via 192.168.121.1
Выводы
К настоящему времени вы должны хорошо понимать, как использовать команду Linux ip . Для получения дополнительной информации о других параметрах ip посетите страницу руководства по команде ip или введите man ip в терминале.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Remove network interface permanently
I’m trying to remove a network interface permanently. For some reason, ifconfig lists eth0 and eth1 , although the latter RX/TX metrics remain at zero. I suspect that extra eth1 entry might be causing delays during boot. Surprinsgly, a search did not yield any answer on how to proceed. Most posts either are for older versions of Ubuntu or Debian, or for other distros (RedHat), or have no permanent effect, or pertain to adding an interface, or try to turn it off but after it’s been started, or are simply unanswered. But the answer might be somewhere after Google’s thrid result page. Removing the second entry from the desktop (up and down arrows, on the top bar) has no effect either on ifconfig . EDIT: I actutally do have two network cards on the MB. That’s a bit of a surprise I admit. I don’t have wifi. Question still stands, a least out of curiosity.
krakoukass@durum:~$ ifconfig eth0 Link encap:Ethernet HWaddr 00:1f:d0:a3:40:d9 inet addr:192.168.1.66 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::21f:d0ff:fea3:40d9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:84 errors:0 dropped:0 overruns:0 frame:0 TX packets:93 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:12255 (12.2 KB) TX bytes:12241 (12.2 KB) eth1 Link encap:Ethernet HWaddr 00:1f:d0:a3:40:db UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:634 errors:0 dropped:0 overruns:0 frame:0 TX packets:634 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:64758 (64.7 KB) TX bytes:64758 (64.7 KB) krakoukass@durum:~$ lspci | grep -i eth 04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02) 05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02) krakoukass@durum:~$ cat /etc/network/interfaces # interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback krakoukas@durum:~$ systemctl -l status ifup@eth1.service ● ifup@eth1.service - ifup for eth1 Loaded: loaded (/lib/systemd/system/ifup@.service; static; vendor preset: enabled) Active: active (exited) since Fri 2015-05-15 12:36:34 CEST; 14min ago Process: 457 ExecStart=/bin/sh -ec ifup --allow=hotplug %I; ifup --allow=auto %I; if ifquery %I >/dev/null; then ifquery --state %I >/dev/null; fi (code=exited, status=0/SUCCESS) Main PID: 457 (code=exited, status=0/SUCCESS) May 15 12:36:34 durum systemd[1]: Started ifup for eth1. May 15 12:36:34 durum systemd[1]: Starting ifup for eth1. May 15 12:36:34 durum sh[457]: Unknown interface eth1 krakoukas@durum:~$ systemctl -l status ifup@eth0.service ● ifup@eth0.service - ifup for eth0 Loaded: loaded (/lib/systemd/system/ifup@.service; static; vendor preset: enabled) Active: active (exited) since Fri 2015-05-15 12:36:34 CEST; 15min ago Process: 458 ExecStart=/bin/sh -ec ifup --allow=hotplug %I; ifup --allow=auto %I; if ifquery %I >/dev/null; then ifquery --state %I >/dev/null; fi (code=exited, status=0/SUCCESS) Main PID: 458 (code=exited, status=0/SUCCESS) May 15 12:36:34 durum systemd[1]: Started ifup for eth0. May 15 12:36:34 durum systemd[1]: Starting ifup for eth0. May 15 12:36:34 durum sh[458]: Unknown interface eth0