- Утилита ip Linux
- Синтаксис и опции утилиты ip
- Примеры использования ip
- 1. Просмотр IP адресов
- 2. Добавление IP адреса
- 3. Удаление IP адреса
- 4. Список интерфейсов
- 5. Включение или выключение интерфейсов
- 6. Настройка MTU
- 7. Настройка MAC адреса
- 8. Таблица ARP
- 9. Добавление записи в таблицу ARP
- 10. Очистка таблицы ARP
- 11. Просмотр таблицы маршрутизации
- 12. Добавление маршрута
- 13. Удаление маршрута
- Выводы
- How to Release old IP or force Renew DHCP lease IP in Linux
- What is DHCP
- How to Release old IP or force Renew DHCP Lease IP in Linux
- Solution 1: Restart Network Manager
- Solution 2: Using nmcli command
- Solution 3: Restart systemd-networkd
Утилита ip Linux
Если вы начинающий системный администратор, думаю, вам понадобится утилита ip. Она позволяет посмотреть сетевые интерфейсы и IP адреса им присвоенные, посмотреть и настроить таблицу маршрутизации, включать или отключать сетевые интерфейсы, управлять маршрутизацией и ARP, а также многое другое.
Раньше вместо неё использовалось несколько других утилит, одна из них — ipconfig. Однако потом им на замену пришла ip. Сейчас она уже поставляется во всех дистрибутивах, а со временем старые утилиты будут удалены, поэтому разобраться с ней стоит.
Синтаксис и опции утилиты ip
Сначала рассмотрим синтаксис команды. Утилита довольно многофункциональная, поэтому и синтаксис её вызова непростой:
$ ip [опции] объект команда [параметры]
Опции — это глобальные настройки, которые сказываются на работе всей утилиты независимо от других аргументов, их указывать необязательно.
- объект — это тип данных, с которым надо будет работать, например: адреса, устройства, таблица arp, таблица маршрутизации и так далее;
- команды — какое-либо действие с объектом;
- параметры — само собой, командам иногда нужно передавать параметры, они передаются в этом пункте.
Дальше рассмотрим все еще более подробно:
- -v, -Version — только вывод информации об утилите и ее версии.
- -h, -human — выводить данные в удобном для человека виде.
- -s, -stats — включает вывод статистической информации.
- -d, —details — показывать ещё больше подробностей.
- -f, -family — позволяет указать протокол, с которым нужно работать, если протокол не указан, то берется на основе параметров команды. Опция должна принимать одно из значений: bridge, dnet, inet, inet6, ipx или link. По умолчанию используется inet, link — означает отсутствие протокола.
- -o, -oneline — выводить каждую запись с новой строки.
- -r,-resolve — определять имена хостов с помощью DNS.
- -a, -all — применить команду ко всем объектам.
- -c, -color — позволяет настроить цветной, доступные значения: auto, always и never.
- -br, -brief — выводить только базовую информацию для удобства чтения.
- -4 — короткая запись для -f inet.
- -6 — короткая запись для -f inet-f inet6.
- -B — короткая запись для -f inet-f bridge.
- -0 — короткая запись для -f inet -f link.
Теперь давайте рассмотрим самые важные объекты.
Конечно, это не все объекты которые поддерживает команда ip Linux, но на первое время вам хватит. Во время ввода имя объекта может быть сокращено до одной буквы. При неоднозначности используется алфавитный порядок. Например, ip a show, расшифровывается как ip address show. Тогда как в ip r show, r — означает route.
Теперь рассмотрим доступные команды, с помощью которых может быть выполнена настройка сети linux. Они зависят от объекта, к которому будут применяться. Вот основные команды: add, change, del или delete, flush, get, list или show, monitor, replace, restore, save, set, и update. Если команда не задана, по умолчанию используется show (показать).
Здесь тоже поддерживается сокращение и в большинстве случаев для выполнения нужного действия достаточно нескольких символов. Но алфавитный порядок соблюдается не всегда. Например, ip a s, означает ip address show, а не ip address set, к сожалению.
Примеры использования ip
Вот теперь мы дошли к самому интересному — примерам использования утилиты ip Linux. То что я здесь опишу на самом деле лишь маленькая капля из всего того что может утилита ip.
1. Просмотр IP адресов
Чтобы посмотреть все IP адреса, связанные с сетевыми интерфейсами используйте такую команду:
Для просмотра информации в кратком виде используйте опцию -br:
Можно посмотреть IP адреса только по определённому сетевому интерфейсу, например: enp0s3:
Можно отобразить только статические IP адреса:
ip a show dev enp0s3 permanent
ip a show dev enp0s3 dynamic
2. Добавление IP адреса
Чтобы присвоить IP адрес для устройства нужно использовать команду add. Её общий синтаксис такой:
$ ip addr add IP_адрес / маска dev интерфейс
Например, давайте присвоим тому же интерфейсу enp0s3 IP адрес 10.0.2.100 с маской подсети 255.255.255.0:
ip addr add 10.0.2.100/255.255.255.0 dev enp0s3
Маску можно указать и в сокращённом виде:
ip addr add 10.0.2.100/24 dev enp0s3
3. Удаление IP адреса
Чтобы удалить IP адрес из интерфейса надо использовать команду del. Синтаксис её очень похож на предыдущую команду. Например, удалим IP адрес 10.0.2.100:
ip addr del 10.0.2.100/255.255.255.0 dev enp0s3
Можно удалять IP адреса по одному или удалить все сразу с помощью команды flush:
Или же можно удалить адреса только определённой подсети:
sudo ip a flush to 10.0.2.0/24
Если вы будете применять эти команды к интерфейсу, с помощью которого у вас работает сеть, то сеть пропадёт и чтобы её вернуть надо будет перезагрузить сетевые службы.
4. Список интерфейсов
Чтобы посмотреть список сетевых интерфейсов используйте объект link:
5. Включение или выключение интерфейсов
Для решения этой задачи тоже используется объект link, но с командой set. Синтаксис её такой:
$ ip link set dev интерфейс действие
В качестве действия можно использовать up или down. Например, чтобы отключить интерфейс enp0s3 выполните:
ip link set dev enp0s3 down
А чтобы включить его обратно:
ip link set dev enp0s3 up
6. Настройка MTU
Параметр MTU означает размер одного пакета, передаваемого по сети. Этот размер можно изменить с помощью команды set. Например, увеличим MTU для enp0s3 до 4000 тысяч байт:
ip link set mtu 4000 dev enp0s3
7. Настройка MAC адреса
Адрес MAC — это физический адрес, который используется для определения какому устройству надо передать сетевой пакет в локальной сети. Прежде чем настраивать MAC адрес ваше устройство надо отключить:
sudo ip link set dev enp0s3 down
Затем можно установить адрес:
sudo ip link set dev enp0s3 address AA:BB:CC:DD:EE:FF
А потом включить интерфейс обратно:
sudo ip link set dev enp0s3 up
8. Таблица ARP
Именно протокол ARP отвечает за преобразование IP адресов в низкоуровневые MAC адреса. Для того чтобы не отправлять ARP запросы каждый раз в сеть, кэш хранится в таблице ARP на протяжении 20-ти минут. Чтобы посмотреть содержимое таблицы ARP используйте такую команду:
9. Добавление записи в таблицу ARP
Обычно записи в эту таблицу попадают автоматически, но вы можете добавить их и вручную. Для этого используйте команду add объекта neigh:
sudo ip neigh add 192.168.0.105 lladdr b0:be:76:43:21:41 dev enp0s3
В этом примере я заставил компьютер думать, что узел с IP 192.168.0.105 это 192.168.0.1. Теперь можно попытаться выполнить ping по этому адресу и оно будет работать, несмотря на то, что реально такого узла в сети нет.
10. Очистка таблицы ARP
Вы можете удалять IP адреса по одному с помощью команды del:
sudo ip neigh del dev enp0s3 192.168.0.105
Можно удалить все записи для определённого сетевого интерфейса:
ip neigh flush dev enp0s3
Или очистить таблицу полностью командой flush:
11. Просмотр таблицы маршрутизации
Для просмотра таблицы маршрутизации используйте объект route и команду show:
12. Добавление маршрута
Синтаксис добавления нового маршрута в таблицу маршрутизации такой:
$ ip route add подсеть / маска via шлюз
Вместо шлюза можно указать сетевой интерфейс с помощью которого надо отправлять пакеты:
$ ip route add подсеть / маска dev устройство
Например, добавим новый маршрут для сети через тот же IP адрес:
sudo ip route add 169.255.0.0 via 169.254.19.153
Или можно указать сетевой интерфейс через который надо отправлять пакеты для определённой сети:
sudo ip route add 169.255.0.0 dev enp0s3
13. Удаление маршрута
Удалить маршрут можно командой с аналогичным синтаксисом, только вместо add надо использовать del:
sudo ip route del 169.255.0.0 via 169.254.19.153
Выводы
Вот и подошла к завершению наша статья. Надеюсь, утилита ip Linux уже не кажется такой непонятной. Если у вас есть вопросы или хотите предложить ещё какие-нибудь примеры, пишите комментарии!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
How to Release old IP or force Renew DHCP lease IP in Linux
In this article, we will see how to release old IP or force renew DHCP lease IP in Linux. Dynamically allocated IP is an IP leased out from a DHCP server for a particular amount of time over a network. If you are using a lease IP then you always have to renew your ip before the lease period expires. Usually, when a lease reaches 50% of its validity time period, the DHCP client unicasts a DHCP Request message to the DHCP server to request lease renewal. The same can be forced manually through a dhcp client tool in Linux Systems.
What is DHCP
The Dynamic Host Configuration Protocol is a network management protocol used on Internet Protocol networks for automatically assigning IP addresses and other communication parameters to devices connected to the network using a client–server architecture.
How to Release old IP or force Renew DHCP Lease IP in Linux
If you have any DHCP lease IP allocated to an interface which you want to release due to certain reasons then you always have the option to release it by using DHCP client tool called dhclient. For example, in my case I have two interfaces attached to my system — enp0s3 and enp0s8 .
To release the IP attached to both the above interfaces, we need to use sudo dhclient -r -v command. But sometimes what happens is that the IP does not get released as you can see below.
Please don’t ever try to release the IP over SSH connection as it will disconnect you from the host system and you may not be able to reconnect unless a new IP is assigned which is known to you.
If we try to check again the IP got released or not using ip addr sh command then we can notice that nothing happened. The assigned IP did not got released.
If you try to release IP from specific interface by choosing the interface using sudo dhclient -r -v enp0s3 command then also you can notice that the IP did not got released. This is a very common scenario faced by lot of folks hence I purposefully chosen this one while trying to explain how to release the DHCP lease IP so that you will understand what needs to be done here.
Sometimes even if you try to kill the dhclient process using kill -9 command then you will notice that it is getting started every time you kill this process and the IP is not getting changed. To check the process ID of currently running dhclient program, you can use ps -ef | grep dhclient command as shown below.
In my case process ID(PID) is 2167 , so to kill this one we are using kill -9 2167 command as shown below.
Now if I try to check the process again, I can see that a new dhclient command is launched with process ID(PID) 2169 . So now you must be wondering how did this happen.
Well, this happened because the network interfaces are currently controlled by Network Manager. You can verify this on Debian/Ubuntu systems by checking one of the below netplan configuration file depending on Ubuntu installation you are currently having.
Please note if you are using RHEL/CentOS based systems, then you need to check /etc/sysconfig/network-scripts/ifcfg-
You can check the running status of Network Manager by using sudo systemctl status NetworkManager command as shown below.
If you are also facing problems like above, then you can try below solutions that works for you.
Solution 1: Restart Network Manager
First solution you can try is that you can restart Network Manager by running sudo systemctl restart NetworkManager command as shown below.
Solution 2: Using nmcli command
If the first solution does not work then next you can try restarting your connection using nmcli command. Here you need to first check the current connection using nmcli con command as shown below.
Then first take down the connection for the interface where you need to renew the IP. In our case, let’s say we want to renew the IP of enp0s3 interface, then we need to run nmcli con down id «Wired Connection 1» command after releasing the IP as shown below.
Then bring up the connection using nmcli con up id «Wired connection 1» command as shown below.
Solution 3: Restart systemd-networkd
If second solution also did not worked out, then you can try restarting systemd-networkd once by using sudo systemctl restart systemd-networkd command as shown below.
After applying above solution, you can see that you will be able to release the IP as shown below.
You can verify the same by checking the status of ip assigned to network interfaces using ip addr sh command as shown below. From the output, you can see that none of the IP is assigned to both the interfaces — enp0s3 and enp0s8 . This confirms that IP release was successful.
Once the IP is released, you will be able to get the new ip by running sudo dhclient -v command as shown below.