- ARP сканирование локальной сети Linux
- Как выполнить ARP сканирование локальной сети?
- Утилита ARP Scan
- Установка ARP Scan
- Сканирование сети
- ARP спуфинг и ARP прокси
- Выводы
- Static ARP
- Re: Static ARP
- Re: Static ARP
- Re: Static ARP
- Re: Static ARP
- Re: Static ARP
- Re: Static ARP
- Re: Static ARP
- Re: Static ARP
- Static ARP
- Re: Static ARP
- Re: Static ARP
- RE: Static ARP
- Arch Linux
- #1 2018-06-21 05:03:31
- systemd.service static arp
- #2 2018-06-21 05:36:02
- Re: systemd.service static arp
- #3 2018-06-21 07:24:11
- Re: systemd.service static arp
- #4 2018-06-21 12:08:57
- Re: systemd.service static arp
- #5 2018-06-21 13:22:56
- Re: systemd.service static arp
- #6 2018-06-21 13:38:39
- Re: systemd.service static arp
- #7 2018-06-21 14:50:10
- Re: systemd.service static arp
- #8 2018-06-21 19:11:09
- Re: systemd.service static arp
- #9 2019-08-26 00:29:01
- Re: systemd.service static arp
- #10 2019-08-26 14:41:29
- Re: systemd.service static arp
ARP сканирование локальной сети Linux
Иногда возникает необходимость узнать какие устройства подключены к локальной сети Linux. Это может понадобиться если вы хотите подключиться к одному из компьютеров и не помните его адрес или хотите убедиться в безопасности вашей сети и найти все скрытые устройства.
Самый надежный способ обнаружить все подключенные к сети Linux устройства, в том числе и скрытые — это ARP сканирование локальной сети. В этой статье мы рассмотрим как его выполнить и какие утилиты для этого нужны.
Как выполнить ARP сканирование локальной сети?
Как вы знаете, у всех компьютеров в сети есть IP адреса. Никогда не задавались вопросом, как сеть определяет, какому компьютеру принадлежит тот или иной адрес? Ведь сети бывают разные, проводные, беспроводные, ppp и т д. И в каждой из этих сетей аппаратный адрес компьютера имеет свой формат, зависящий от конструктивных особенностей сети, а IP адреса одни и те же.
Все очень просто. Для преобразования физических адресов, в ip адреса используется протокол ARP (Address Resolution Protocol), так и расшифровывается — протокол разрешения адресов. Когда компьютеру нужно обратиться к другому компьютеру в локальной сети, он отправляет специальный запрос в котором буквально спрашивает «У кого IP адрес 192.168.1.4», компьютер с таким ip адресом отправляет ответ «У меня, я 11:22:33:44:55», в ответе он передает свой физический адрес в этой сети. Дальше этот адрес заносится в специальную таблицу. но это уже тонкости реализации и они выходят за рамки нашей статьи. Сегодня мы поговорим как самому выполнить ARP сканирование локальной сети linux и найти все подключенные устройства.
Формат сообщений ARP — простой. Сообщение содержит либо запрос с IP адресом, либо ответ. Размер сообщения зависит от используемого сетевого протокола IPv4 или IPv6, типа оборудования сети и т д. Типы и размеры адресов определяются в заголовке сообщения. Заголовок завершается кодом сообщения. Код 1 для запроса и 2 для ответа.
Тело сообщения состоит из четырех адресов, аппаратные и сетевые адреса отправителя и получателя.
Если в вашей сети есть устройства, которые не отвечают на любые запросы, такие как Ping, HTTP, HTTPS и т д, то их можно найти послав ARP запрос. Это могут быть различные фаерволы и маршрутизаторы, в том числе маршрутизаторы компании Cisco, такое поведение заложено их протоколом. В таком случае ARP сканирование сети Linux будет единственным способом найти такое устройство.
Утилита ARP Scan
ARP Scan или еще называемый MAC Scanner — это очень быстрый инструмент для сканирования локальной сети Linux с помощью ARP. Утилита показывает все IPv4 адреса устройств в вашей сети. Поскольку ARP не использует маршрутизацию, то такой вид сканирования работает только в локальной сети.
ARP Scan находит все активные устройства, даже если у них включен брандмауэр. Компьютеры не могут скрыться от ARP также как они скрываются от ping. Но ARP сканирование не подходит для поиска компьютеров за пределами локальной сети, в таких ситуациях используйте ping сканирование.
Установка ARP Scan
Этот arp сканер сети доступен для следующих операционных систем:
- Debian, поставляется по умолчанию;
- Ubuntu, можно установить с репозитория Universe;
- Fedora, официальные репозитории начиная с версии 6;
- RedHat — доступна начиная с версии 5;
- Gentoo, официальные репозитории;
- ArchLinux — официальные репозитории Pacman.
Для установки в Ubuntu выполните:
sudo apt install arp-scan
Сканирование сети
ARP Scan позволяет находить активные компьютеры как в проводных сетях ethernet, так и в беспроводных Wifi сетях. Также есть возможность работать с Token Ring и FDDI. Не поддерживаются последовательные соединения PPP и SLIP, поскольку в них не используется ARP. Программу нужно запускать с правами суперпользователя.
Но сначала надо узнать сетевой интерфейс, который используется для подключения к сети. Для этого можно воспользоваться программой ip:
В данном случае, это enp24s0. Самый простой способ выполнить ARP сканирование и обнаружить все подключенные к локальной сети компьютеры — запустить программу со следующими параметрами:
sudo arp-scan —interface=enp24s0 —localnet
Здесь параметр —interface, задает интерфейс для сканирования, а —localnet, говорит, что нужно использовать все возможные IP адреса для текущей сети.
Первый параметр можно опустить, тогда программа будет искать все узлы для интерфейса с меньшим номером в системе. В нашем примере имя интерфейса — enp24s0.
Вместо параметра —localnet, можно указать маску сети:
sudo arp-scan —interface=enp24s0 10.0.1.0/24
ARP сканирование можно использовать, даже если у вашего интерфейса нет IP адреса. Тогда в качестве исходящего адреса будет использован 0.0.0.0. Правда, на такие запросы могут ответить не все системы. Тогда ARP сканер сети не так эффективен.
ARP спуфинг и ARP прокси
Поскольку в ARP нет поддержки аутентификации, ARP ответ на запрос может отправить любая машина, даже не та которой он был адресован. Иногда такое поведение используется в архитектуре сети — ARP прокси или маршрутизатор предает свой IP адрес вместо адреса запрашиваемой машины. Но также может использоваться для перехвата данных, отправляемых компьютером. Хакер может использовать ARP чтобы выполнить атаку «Человек посередине» или «Отказ в обслуживании» на других пользователей сети. Для защиты от таких атак существует специальное программное обеспечение.
Выводы
ARP Scan это простой, но очень мощный инструмент, с помощью которого можно выполнять сканирование ip адресов в локальной сети linux. Те, кто знаком с Cisco маршрутизаторами и коммутаторами, знают что найти такие устройства можно только с помощью ARP. Это полезный инструмент, возможно, когда-то вам он пригодится.
Источник
Static ARP
Есть роутер с несколькими интерфейсами. Сеть 192.168.2.0 разбита на три подсети с маской 255.255.255.240. Cоздаем файл /etc/ethers, где про- писываем соответствие IP- MAC для всех адресов подсетей и загружаем его arp -f /etc/ethers. Далее вводим в первую подсеть машину с чужим MAC-ом, пинги на нее с роутера не проходят и она в этой подсети не работает, как и должно быть. Но при подключении ко второй или третьей подсети машины с чужим MAC-ом, пинги на нее с роутера проходят с DUP-ом и зта машина имеет доступ в сеть. Получается, что static arp работает только для первой подсети. Почему static arp не работает на остальных подсетях?
Re: Static ARP
1. Пропиши в конфигурации интерфейсов не только ип и маску, но и адрес подсети и броадкаст. 2. Если не поможет, попробуй сначала подцепить к 3-му и-фейсу, потом к 1-му. Может, не в 1-м и-фейсе дело. 3. Если не поможет, /etc/ethers в студию. 4. Смотри сниффером, что происходит. Интересно, вообще, узнать, откуда второй пинг приходит. Если настроена маршрутизация между сетями, и если броадкаст во всех трех сетях стоит 255, то вот тебе и источник dup’ов.
Re: Static ARP
Интерфейс eth1 поднят командой ifconfig eth1 192.168.2.1 netmask 255.255.255.240 broadcast 192.168.2.15, eth2 поднят командой ifconfig eth2 192.168.2.33 netmask 255.255.255.240 broadcast 192.168.2.47,eth3 поднят командой ifconfig eth3 192.168.2.65 netmask 255.255.255.240 broadcast 192.168.2.79. Какой такой адрес подсети должен быть указан в ifconfig-е ? Маршрутизации между сетями нет. Файл ethers : 192.168.2.4 00:0a:5e:45:09:0c 192.168.2.5 00:0a:5e:45:08:0b и тд прописаны все адреса сетей.
Re: Static ARP
Адрес подсети это адрес вида 10.0.0.0, т.е. самый первый IP-адрес в любой сети. Броадкаст — самый последний.
Рекомендую прописать все в файле настроек сетевых интерфейсов, а не поднимать интерфейс из командной строки. Тогда ты четко будешь представлять, какая у тебя сеть и какой адрес присваивается роутеру, более того, принадлежит вообще этот адрес указанной сети или нет.
Сеть 1: 192.168.2.0/28 Сеть 2: 192.168.2.32/28 Сеть 3: 192.168.2.64/28
После того, как пропишешь, проверь все еще раз и проверь сначала к третьей сети подцепить машину. Если не получится — лови снифером.
Re: Static ARP
Вопрос был не о том, что такое адрес подсети и броадкаст сети, Вы наверно не- внимательно читали сообщение. Интерфейсы поднимаются из файла rc.inet1, который при запуске читает rc.inet1.conf. А на счет Сеть 1: 192.168.2.0/28 Сеть 2: 192.168.2.32/28 Сеть 3: 192.168.2.64/28 это я себе четко представляю.
Re: Static ARP
Понятно, однако, адреса подсетей все же лучше прописать.
> Интерфейс eth1 поднят командой ifconfig .
Насколько я знаю, команда ifconfig поднимает интерйфейс, беря аргументы из командной строки, а не из файла конфигурации. Может быть, в этом проблема?
Если все верно, то еще раз говорю, надо смотреть снифером.
Re: Static ARP
Посмотри arp таблицу с помощью команы ip:
Если окажется, что все MAC-адреса прописались для интерфейса eth0, попробуй прописывать их для требуемых интерфейсов так:
ip neigh add 192.168.25.1 lladdr 00:40:95:0A:E6:E5 nud permanent dev eth4
Re: Static ARP
Отрывок из файла rc.inet1 # Set up ethernet card: /sbin/ifconfig eth$ <1>
Re: Static ARP
Команда ip входит в состав пакета iproute2. Такого пакета нет в системе, но команда arp показывает, что MAC-адреса прописались для соотвествующих интерфейсов.
Static ARP
Вместо arp -f /etc/ethers попробуй создать отдельные файлы для каждого интерфейса и для каждого прописать например:
arp -i интерфейсN -f /etc/ethersN
Re: Static ARP
2Schreibikus Что arp -i интерфейсN -f /etc/ethersN или arp -f /etc/ethers результат одинаков.
Re: Static ARP
Просмотр при помощи tcpdump-а показал, что во второй и третьей подсетях идут arp-запросы типа who-has 192.168.2.39 tell 192.168.2.38, а в первой этого не наблюдается.
RE: Static ARP
Попробуй сделать жесткую привязку всех адресов в файле /etc/ethers, отключи ARP на всех интерфейсах (подними интерфейсы с параметром -arp в ifconfig), сделай скриптик типа этого:
# обнуляем всю таблицу arp
# к каждому компу в локальной сети привязываем несуществующий (нулевой) # MAC адрес
while [ $I -le 254 ]
arp -s 192.168.0.$ 0:0:0:0:0:0
# к реально существующему компу в сети из базы данных в файле
Источник
Arch Linux
You are not logged in.
#1 2018-06-21 05:03:31
systemd.service static arp
Hello i am trying to create systemd.service that will set static arp when the network is brought up.
I made two services that set static arp succesfully, however when disconnecting and reconnecting, the services have to be restarted to set a new static arp.
I am using NetworkManager with nm-applet to connect.
Here are the two services that i made, but have to be restarted each time:
arp-ethers.service calls the /etc/ethers file to set static arp:
arp -s exec.service:
How can i make sure the static arp is set when nm-applet brings up the network, without manually restarting the .services?
Last edited by zeermooi (2018-06-21 14:53:57)
#2 2018-06-21 05:36:02
Re: systemd.service static arp
Not an Installation issue, moving to Apps & DEs.
Registered Linux User #482438
Online
#3 2018-06-21 07:24:11
Re: systemd.service static arp
You want to Wants= and After= (or Before=) on network-online.target and enable NetworkManager-wait-online.service . network.target is invoked when network devices become available, which is too soon for what you want to do.
Also remove the RemainAfterExit=yes, as that will assume the service to have been started, and they won’t be invoked again.
Last edited by V1del (2018-06-21 07:35:07)
#4 2018-06-21 12:08:57
Re: systemd.service static arp
systemctl enable arp-ethers.service
systemctl start arp-ethers.service
When disconnect the wired network with the nm-applet, and re-connect, the arp entry is not set static, unless: systemctl restart arp-ethers.service
Would love to see the arp entry set static when disconnect/re-connect with nm-applet.
Last edited by zeermooi (2018-06-21 12:13:11)
#5 2018-06-21 13:22:56
Re: systemd.service static arp
I doubt the service is somehow controlled by NM, try https://wiki.archlinux.org/index.php/Ne … dispatcher
#6 2018-06-21 13:38:39
Re: systemd.service static arp
Hello seth, thank you.
cd /etc/NetworkManager/dispatcher.d/pre-up.d
then put arp.sh script in there with the #!/bin/sh arp -s command.
#7 2018-06-21 14:50:10
Re: systemd.service static arp
is it a bad idea to make the entry arp -a of router/gateway static?
#8 2018-06-21 19:11:09
Re: systemd.service static arp
Err… what?
1. why do you implement a static ARP if you’re not sure why you’re doing this?
2. static ARPs are mostly useful to mitigate ARP spoofing, to a certain degree for better performance (but in a ethernet LAN that’s rather neglectable)
3. «arp -a» is just a different output format (according to the manpage «BSD-style»)
#9 2019-08-26 00:29:01
Re: systemd.service static arp
I do not want to necrobump this old post, but i was not sure if i should make new post, because the content of this one suits my question.
The answer provider by V1del, solved my issue on making static arp with systemd.service.
When i boot the Arch laptop, wpa_supplicant@wlp1s0.service, and systemd-networkd.service, get started, and there is internet connectivity, without any problems.
The static arp entry is set to permanent.
But when the laptop is connected to the internet for a few hours, the $ arp -a, command shows that the arp entry is not permanent anymore?
How can this happen, and how do i prevent the arp entry from changing?
#10 2019-08-26 14:41:29
Re: systemd.service static arp
Reasons.
Any process w/ root permissions (like systemd-networkd) can theoretically edit the ARP list, simply flushing the cache should™ («will», but try yourself: «ip -s -s neigh flush all») not remove static entries, though.
You should
a) open a new thread since this is off-topic (OP tried to add an entry after NM, this is more about systemd services — and he indicated to have no idea why he wanted static entries itfp.)
b) elaborate on what you do and how things change over time (ie. how do you add the entry *exactly* and the conrasting outputs of «arp -n»)
Pro tip: if you want to control your network on that level, stupid network managing services that try to outsmart you will only get in your way. NM and systemd-networkd are kitchen sinks.
Источник