Как использовать команду ip в Linux
Вы можете настроить IP-адреса, сетевые интерфейсы и правила маршрутизации на лету с помощью команды Linux ip
. Мы покажем вам, как вы можете использовать эту современную замену классического (и теперь устаревшего) ifconfig
.
Как работает команда ip
С помощью команды ip
вы можете настроить способ обработки компьютером Linux IP-адресов, контроллеров сетевых интерфейсов (NIC) и правил маршрутизации. Изменения также вступают в силу немедленно — вам не нужно перезагружаться. Команда ip
может сделать гораздо больше, но в этой статье мы сосредоточимся на наиболее распространенных вариантах ее использования.
Команда ip
имеет множество подкоманд, каждая из которых работает с определенным типом объектов, например с IP-адресами и маршрутами. Есть, в свою очередь, множество вариантов для каждого из этих объектов. Именно это богатство функций дает команде ip
детализацию, необходимую для выполнения деликатных задач. Это не работа топором — здесь нужен набор скальпелей.
Мы рассмотрим следующие объекты:
- Адрес: IP-адреса и диапазоны.
- Связь: сетевые интерфейсы, такие как проводное подключение и адаптеры Wi-Fi.
- Маршрут: правила, управляющие маршрутизацией трафика, отправляемого на
адреса
через интерфейсы (ссылки
).
Использование ip с адресами
Очевидно, что вам сначала нужно знать настройки, с которыми вы имеете дело. Чтобы узнать, какие IP-адреса есть у вашего компьютера, вы используете команду ip
с объектом address
. Действие по умолчанию — show
, в котором перечислены IP-адреса. Вы также можете опустить show
и сократить address
до addr или даже a.
Все следующие команды эквивалентны:
ip address show
ip addr show
ip addr
ip a
Мы видим два IP-адреса вместе с большим количеством другой информации. IP-адреса связаны с контроллерами сетевых интерфейсов (NIC). Команда ip
старается быть полезной и также предоставляет кучу информации об интерфейсе.
Первый IP-адрес — это (внутренний) петлевой адрес, используемый для связи внутри компьютера. Второй — фактический (внешний) IP-адрес компьютера в локальной сети (LAN).
Разберем всю полученную информацию:
- lo: имя сетевого интерфейса в виде строки.
: это петлевой интерфейс. ЭтоUP
, что означает, что он работает. Физический сетевой уровень (первый) также работает.- mtu 65536: максимальная единица передачи. Это размер самого большого блока данных, который может передать этот интерфейс.
- qdisc noqueue:
qdisc
— это механизм организации очереди. Он планирует передачу пакетов. Существуют различные методы организации очереди, называемые дисциплинами. Дисциплинаnoqueue
означает «отправлять сразу, не стоять в очереди». Это дисциплинаqdisc
по умолчанию для виртуальных устройств, например петлевой адрес. - состояние UNKNOWN: это может быть
DOWN
(сетевой интерфейс не работает),UNKNOWN
(сетевой интерфейс работает, но ничего не работает). подключено) илиВВЕРХ
(сеть работает и соединение есть). - группа по умолчанию: интерфейсы могут быть сгруппированы логически. По умолчанию все они помещаются в группу под названием «по умолчанию».
- qlen 1000: максимальная длина очереди передачи.
- link/loopback: адрес управления доступом к среде (MAC) интерфейса.
- inet 127.0.0.1/8: IP-адрес версии 4. Часть адреса после косой черты (
/
) представляет собой нотацию бесклассовой междоменной маршрутизации (CIDR), представляющую маску подсети. Он указывает, сколько начальных непрерывных битов установлено равным единице в маске подсети. Значение восемь означает восемь бит. Восемь битов, равных единице, представляют 255 в двоичном формате, поэтому маска подсети равна 255.0.0.0. - host host: область действия IP-адреса. Этот IP-адрес действителен только внутри компьютера («хост»).
- lo: интерфейс, с которым связан этот IP-адрес.
- valid_lft: действительный срок действия. Для IP-адреса версии 4, назначенного протоколом динамической конфигурации хоста (DHCP), это период времени, в течение которого IP-адрес считается действительным и может отправлять и принимать запросы на подключение.
- preferred_lft: предпочитаемое время жизни. Для IP-адреса версии 4, выделенного DHCP, это время, в течение которого IP-адрес можно использовать без ограничений. Оно никогда не должно превышать значение
valid_lft
. - inet6: IP-адрес версии 6,
scope
,valid_lft
иpreferred_lft
.
Физический интерфейс более интересен, как мы покажем ниже:
- enp0s3: имя сетевого интерфейса в виде строки. «en» означает Ethernet, «p0» — номер шины карты Ethernet, а «s3» — номер слота.
: этот интерфейс поддерживает широковещательную и многоадресную рассылку, а интерфейсUP
(рабочий и подключенный). Аппаратный уровень сети (первый уровень) также находится в состоянииUP
.- mtu 1500: максимальная единица передачи, поддерживаемая этим интерфейсом.
- qdisc fq_codel: планировщик использует дисциплину под названием «Справедливая постановка в очередь, контролируемая задержка». Он предназначен для предоставления справедливой доли пропускной способности всем потокам трафика, использующим очередь.
- состояние UP: интерфейс работает и подключен.
- группа по умолчанию. Этот интерфейс входит в группу интерфейсов по умолчанию.
- qlen 1000: максимальная длина очереди передачи.
- link/ether: MAC-адрес интерфейса.
- inet 192.168.4.26/24: IP-адрес версии 4. «/24» говорит нам, что в маске подсети 24 смежных начальных бита равны единице. Это три группы по восемь бит. Восьмибитное двоичное число равно 255; поэтому маска подсети — 255.255.255.0.
- brd 192.168.4.255: широковещательный адрес для этой подсети.
- глобальная область действия: IP-адрес действителен везде в этой сети.
- динамический: IP-адрес теряется, когда интерфейс выходит из строя.
- noprefixroute: не создавать маршрут в таблице маршрутов при добавлении этого IP-адреса. Кто-то должен добавить маршрут вручную, если он хочет использовать его с этим IP-адресом. Аналогичным образом, если этот IP-адрес будет удален, не ищите маршрут для удаления.
- enp0s3: интерфейс, с которым связан этот IP-адрес.
- valid_lft: действительный срок действия. Время, когда IP-адрес будет считаться действительным; 86 240 секунд – это 23 часа 57 минут.
- preferred_lft: предпочитаемое время жизни. Время, в течение которого IP-адрес будет работать без каких-либо ограничений.
- inet6: IP-адрес версии 6,
scope
,valid_lft
иpreferred_lft
.
Отображать только адреса IPv4 или IPv6
Если вы хотите ограничить вывод IP-адресами версии 4, вы можете использовать параметр -4
следующим образом:
ip -4 addr
Если вы хотите ограничить вывод IP-адресами версии 6, вы можете использовать параметр -6
следующим образом:
ip -6 addr
Отображение информации для одного интерфейса
Если вы хотите просмотреть информацию об IP-адресе для одного интерфейса, вы можете использовать параметры show
и dev
и назвать интерфейс, как показано ниже:
ip addr show dev lo
ip addr show dev enp0s3
Вы также можете использовать флаг -4
или -6
для дальнейшего уточнения вывода, чтобы вы видели только то, что вас интересует.
Если вы хотите просмотреть информацию IP версии 4, связанную с адресами на интерфейсе enp0s3
, введите следующую команду:
ip -4 addr show dev enp0s3
Добавление IP-адреса
Вы можете использовать параметры add
и dev
, чтобы добавить IP-адрес к интерфейсу. Вам просто нужно указать команде ip
, какой IP-адрес добавить и к какому интерфейсу его добавить.
Мы собираемся добавить IP-адрес 192.168.4.44 к интерфейсу enp0s3
. Мы также должны предоставить нотацию CIDR для маски подсети.
Набираем следующее:
sudo ip addr add 192.168.4.44/24 dev enp0s3
Мы вводим следующее, чтобы еще раз взглянуть на IP-адреса версии 4 на этом интерфейсе:
ip -4 addr show dev enp0s3
Новый IP-адрес присутствует на этом сетевом интерфейсе. Мы переходим на другой компьютер и используем следующую команду, чтобы узнать, можем ли мы ping
новый IP-адрес:
ping 192.168.4.44
IP-адрес отвечает и отправляет подтверждения на эхо-запросы. Наш новый IP-адрес настроен и работает после одной простой команды ip
.
Удаление IP-адреса
Команда для удаления IP-адреса почти такая же, как и для добавления, за исключением того, что вы заменяете add
на del
, как показано ниже:
sudo ip addr del 192.168.4.44/24 dev enp0s3
Если мы введем следующее для проверки, мы увидим, что новый IP-адрес был удален:
ip -4 addr show dev enp0s3
Использование ip с сетевыми интерфейсами
Вы используете объект link
для проверки и работы с сетевыми интерфейсами. Введите следующую команду, чтобы увидеть интерфейсы, установленные на вашем компьютере:
ip link show
Чтобы увидеть один сетевой интерфейс, просто добавьте его имя в команду, как показано ниже:
ip link show enp0s3
Запуск и остановка ссылок
Вы можете использовать параметр set
с помощью up
или down
, чтобы остановить или запустить параметр сетевого интерфейса. Вы также должны использовать sudo
, как показано ниже:
sudo ip link set enp0s3 down
Мы вводим следующее, чтобы взглянуть на сетевой интерфейс:
ip link show enp0s3
Состояние сетевого интерфейса — DOWN
. Мы можем использовать опцию up
для перезапуска сетевого интерфейса, как показано ниже:
sudo ip link set enp0s3 up
Мы вводим следующее, чтобы сделать еще одну быструю проверку состояния сетевого интерфейса:
ip link show enp0s3
Сетевой интерфейс был перезапущен, и его состояние отображается как UP
.
Использование ip с маршрутами
С помощью объекта route
вы можете проверять маршруты и управлять ими. Маршруты определяют, куда перенаправляется сетевой трафик на разные IP-адреса и через какой сетевой интерфейс.
Если компьютер или устройство назначения совместно используют сеть с компьютером-отправителем, компьютер-отправитель может переслать пакет непосредственно ему.
Однако, если целевое устройство не подключено напрямую, компьютер-отправитель перенаправляет пакет на маршрутизатор по умолчанию. Затем маршрутизатор решает, куда отправить пакет.
Чтобы просмотреть маршруты, определенные на вашем компьютере, введите следующую команду:
ip route
Давайте посмотрим на полученную информацию:
- по умолчанию – правило по умолчанию. Этот маршрут используется, если ни одно из других правил не соответствует отправляемому.
- через 192.168.4.1: направляет пакеты через устройство с адресом 192.168.4.1. Это IP-адрес маршрутизатора по умолчанию в этой сети.
- dev enp0s3: используйте этот сетевой интерфейс для отправки пакетов на маршрутизатор.
- proto dhcp: идентификатор протокола маршрутизации. DHCP означает, что маршруты будут определяться динамически.
- показатель 100: показатель предпочтения маршрута по сравнению с другими. Маршруты с более низкими показателями используются предпочтительно, чем маршруты с более высокими показателями. Вы можете использовать это, чтобы отдать предпочтение проводному сетевому интерфейсу, а не Wi-Fi.
Второй маршрут управляет трафиком в диапазоне IP-адресов 169.254.0.0/16. Это сеть с нулевой конфигурацией, что означает, что она пытается самостоятельно настроиться для связи внутри сети. Однако вы не можете использовать его для отправки пакетов за пределы непосредственной сети.
Принцип сетей с нулевой конфигурацией заключается в том, что они не полагаются на наличие и активность DHCP и других служб. Им нужно только видеть TCP/IP, чтобы идентифицировать себя для каждого из других устройств в сети.
Давайте взглянем:
- 169.254.0.0/16: диапазон IP-адресов, на который распространяется это правило маршрутизации. Если компьютер обменивается данными в этом диапазоне IP-адресов, это правило вступает в силу.
- dev enp0s3: сетевой интерфейс, который будет использовать трафик, управляемый этим маршрутом.
- ссылка на область. Областью действия является
ссылка
, что означает, что область ограничена сетью, к которой этот компьютер напрямую подключен. - Показатель 1000. Это высокий показатель, поэтому его не рекомендуется использовать.
Третий маршрут управляет трафиком в диапазоне IP-адресов 192.168.4.0/24. Это диапазон IP-адресов локальной сети, к которой подключен этот компьютер. Это для связи внутри этой сети.
Давайте разберем это:
- 192.168.4.1/24: диапазон IP-адресов, на который распространяется это правило маршрутизации. Если компьютер обменивается данными в пределах этого диапазона IP-адресов, это правило запускает и контролирует маршрутизацию пакетов.
- dev enp0s3: интерфейс, через который этот маршрут будет отправлять пакеты.
- proto kernel: маршрут, созданный ядром во время автоматической настройки.
- Ссылка на область. Область действия —
link
, что означает, что область ограничена непосредственной сетью, к которой подключен этот компьютер. - src 192.168.4.26: IP-адрес, с которого отправляются пакеты по этому маршруту.
- показатель 100: этот низкий показатель указывает на предпочтительный маршрут.
Отображение информации для одного маршрута
Если вы хотите сосредоточиться на деталях конкретного маршрута, вы можете добавить в команду параметр list
и диапазон IP-адресов маршрута следующим образом:
ip route list 192.168.4.0/24
Добавление маршрута
Мы только что добавили новую сетевую карту на этот компьютер. Мы вводим следующее и видим, что оно отображается как enp0s8
:
ip link show
Мы добавим новый маршрут к компьютеру для использования этого нового интерфейса. Сначала мы вводим следующее, чтобы связать IP-адрес с интерфейсом:
sudo ip addr add 192.168.121.1/24 dev enp0s8
В новый интерфейс добавляется маршрут по умолчанию, использующий существующий IP-адрес. Мы используем параметр delete
, как показано ниже, чтобы удалить маршрут и указать его детали:
sudo ip route delete default via 192.168.4.1 dev enp0s8
Теперь мы воспользуемся опцией add
, чтобы добавить наш новый маршрут. Новый интерфейс будет обрабатывать сетевой трафик в диапазоне IP-адресов 192.168.121.0/24. Мы дадим ему метрику 100; поскольку это будет единственный маршрут, обрабатывающий этот трафик, метрика в значительной степени академическая.
Набираем следующее:
sudo ip route add 192.168.121.0/24 dev enp0s8 metric 100
Теперь мы набираем следующее, чтобы увидеть, что он нам дает:
ip route
Наш новый маршрут готов. Однако у нас все еще есть маршрут 192.168.4.0/24, который указывает на интерфейс enp0s8
— мы набираем следующее, чтобы удалить его:
sudo ip route delete 192.168.4.0/24 dev enp0s8
Теперь у нас должен быть новый маршрут, который направляет весь трафик, предназначенный для диапазона IP-адресов 192.168.121.0/24, через интерфейс enp0s8
. Это также должен быть единственный маршрут, использующий наш новый интерфейс.
Мы вводим следующее для подтверждения:
ip route
Пройденный маршрут, не укоренившийся
Самое замечательное в этих командах то, что они не являются постоянными. Если вы хотите очистить их, просто перезагрузите систему. Это означает, что вы можете экспериментировать с ними, пока они не будут работать так, как вы хотите. И очень хорошо, если вы устроите ужасный беспорядок в своей системе — простая перезагрузка восстановит порядок.
С другой стороны, если вы хотите, чтобы изменения были постоянными, вам придется проделать дополнительную работу. Что именно зависит от семейства дистрибутивов, но все они связаны с изменением файлов конфигурации.
Тем не менее, таким образом вы можете протестировать команды, прежде чем делать что-либо постоянным.
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts