Перейти к содержимому

Linux где хранится arp таблица

  • автор:

Where is the ARP cache on Linux?

Where, in memory, does the ARP cache exist? I tried searching it up online but didn’t find anything.

ssharma's user avatar

1 Answer 1

GNU/Linux, unlike MacOSx, uses the /proc directory structure, a.k.a. procfs , to store system data. The arp cache is located at /proc/net/arp You print the data to stdout directly from that system file via:

I realized that you may also want the memory address that the kernel uses to find the arp cache. The exact address may vary. However, you can find the memory address table for all arp memory addresses the kernel uses in /proc/kallsyms

Утилита 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.

Теперь давайте рассмотрим самые важные объекты.

  • address или a — сетевые адреса.
  • link или l — физическое сетевое устройство.
  • neighbour или neigh — просмотр и управление ARP.
  • route или r — управление маршрутизацией.
  • rule или ru — правила маршрутизации.
  • tunnel или t — настройка туннелирования.

Конечно, это не все объекты которые поддерживает команда 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 a show enp0s3

ip a show dev 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 уже не кажется такой непонятной. Если у вас есть вопросы или хотите предложить ещё какие-нибудь примеры, пишите комментарии!

Linux где хранится arp таблица

ARP-таблица — это соответствие IP-адресов и MAC-адресов устройств, находящихся в сети.

В Windows посмотреть ARP таблицу можно так:

Интерфейс: 10.153.0.220 — 0xb

адрес в Интернете Физический адрес Тип

10.153.0.1 10-38-d2-2a-ad-06 динамический

10.153.0.4 b0-82-dc-25-fb-ea динамический

10.153.0.5 00-90-4c-8b-86-86 динамический

10.153.0.13 ac-a6-2d-7e-b5-ec динамический

10.153.0.14 ac-c6-2d-78-a1-ac динамический

10.153.0.15 44-9e-a1-d9-d5-58 динамический

В Linux в некоторых дистрибутивах есть утилита arp , а в некоторых (например Debian) почему-то такой утилиты нет, и вместо нее можно использовать arp-scan . Возможно, arp лежит в net-tools . Утилита arp-scan запускается в Debian только в окружении root.

Пример запуска arp-scan (ибо у меня Debian):

# arp-scan —interface=eth0 10.153.0.0/16

Interface: eth1, datalink type: EN10MB (Ethernet)

Starting arp-scan 1.8.1 with 65536 hosts (http://www.nta-monitor.com/tools/arp-scan/)

10.153.0.1 10:38:d2:2a:ad:06 ELITEGROUP COMPUTER SYSTEM CO., LTD.

10.153.0.3 68:05:ca:2c:e4:98 (Unknown)

10.153.0.4 b0:82:dc:25:fb:ea (Unknown)

10.153.0.5 00:90:4c:8b:86:86 REALTEK SEMICONDUCTOR CORP.

10.153.0.6 74:ea:3a:85:e2:a7 TP-LINK Technologies Co.,Ltd.

10.153.0.11 00:25:22:34:74:0c ASRock Incorporation

10.153.0.12 ac:16:2d:75:79:b0 (Unknown)

10.153.0.13 ac:a6:2d:7e:b5:bc (Unknown)

10.153.0.14 ac:c6:2d:78:a1:ec (Unknown)

10.153.0.15 44:9e:a1:d9:d5:58 (Unknown)

Не забывайте посмотреть на интерфейс и его IP через утилиту ifconfig , чтобы выбрать правильный диапазон IP адресов.

Linux arping Command Tutorial

The arping command is a command-line tool used in the Linux operating system to discover and detect hosts on the network. The arping uses the ARP protocol in order to ping hosts with the Layer 2 ARP requests. The ARP protocol is used to resolve IP addresses to the MAC addresses in order to communicate inside a LAN. The arping will try to resolve all network addresses into the MAC addresses and the hosts will provide the ARP reply for the ARP request with their MAC addresses. The arping name consists of arp+ing where the arp refers to the ARP protocol and ing or ping refers to the ping command.

Install arping on Ubuntu, Debian, Kali, Mint

The arping command can be installed on deb-based distributions like Ubuntu, Debian, Kali, and Mint. The package name is the same as the command arping.

Install arping on Ubuntu, Debian, Kali, Mint

Install arping on CentOS, Fedora, RHEL

The arping command also provided by the rpm based distributions like CentOS, Fedora, RHEL etc. The following command will install the arping for CentOS, Fedora, RHEL.

Display arping Command Version

After installing the arping command we can check the installation and its version without providing any option. This will list the version of the arping command and supported options in short form.

Display arping Options and Version

We can see from the output that the current arping command version is 2.20. As a basic and Mac-related tool, the arping command does not update regularly.

Display arping Help Information

Detailed help information and support options can be listed with the –help option. This will list all provided options and their descriptions like below.

Display arping Help Information

List Current ARP Table

Linux stores the IP address and MAC address records in a table named ARP table. ARP table is created with the ARP request responses and these table records are stored temporarily to get recent updates and prevent errors. The current ARP table and its records can be listed with the arp command like below. We will also provide the -a option to list all records.

The output will be like below.

Discover/Scan Hosts with ARP Protocol

The arping command can ping an IP address via the ARP protocol with the MAC address. But the IP address scan is provided like below. This will ping the target IP address continuously. As the arping command uses the low-level network protocol stack like creating ARP packets etc. it requires root or administrative privileges. These root privileges can be provided with the sudo command or running the arping command in the root user session.

The output will be like below. From the output, we can see that the ARP packet number is provided with the index=0. Also, the RTT or round trip time for the current ping is provided with the time= information. Every arp ping provides the remote IP address MAC address.

The ping will run continuously and can be stopped with the CTRL+c keys. After the ping stopped some basic statistics about the arping will be displayed.

  • 6 packets transmitted describes total transmitted ARP packets to the target.
  • 6 packets received describes total received packets against transmitted packets.
  • 0% unanswered describes unanswered packets.
  • min is the minimum transmission time.
  • avg is the average transmission time.
  • max is the maximum transmission time.

Set Ping Packet Count

By default the arping command ping the remote target continuously which will run forever unless we stop it or specify a ping packet count. The packet count can be specified with the -c option by providing the number. In the following example, we will set the ARP ping packet count as 5.

The command will stop after 5 ping and provide the following output.

Specify Target with MAC Address

The arping command can be also used with the MAC address as a target. By default, the IP address is used to specify the target but as standard operation, the IP address is resolved into a MAC address, and all ping packets are sent to the MAC address. So the target can be a MAC address.

The output will be as below. Different from the IP address as target the source interface should be devices according to the MAC address and ARP table.

Specify Network Interface

A system may have multiple network interfaces connected to different networks. These interfaces can be an Ethernet Card or Wireless NIC etc. By default, the arping command decides the source interfaces according to the target IP address, MAC address, and ARP table. After this investigation, if there is no reliable information the interface may be guessed. But we can also specify the source interface with the -I option by providing the interface name. So before specifying the source interface listing the current interfaces and their names is a great idea. We can list interfaces with the ip link command like below.

List Network Interface for arping

We can see that there are two interfaces named lo and ens33. the lo interface is the localhost interface and ens33 is an ethernet interface to the LAN. So we will provide the ens33 as the source interface.

Specify Source MAC Address

By default, the arping command uses the default network interface MAC address. The -s option is used to specify the source MAC address.

Arping Network Range with Bash Script

As a bash command arping can be used with other bash-related commands and features. The arping can only ping a single IP address at a time but we can create a bash for loop in order to ping multiple IP addresses. The following bash script can be used to ping MAC addresses with the arping command. Every ping result for the IP address will be printed to the terminal.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *