LINUX.ORG.RU
ФорумAdmin

Работа linux с трафиком на 2 уровне tcp/ip

 


1

1

Объясните мне такую вещь. Вот есть управляемые коммутаторы D-link, в основе прошивки которых лежит ядро linux. И есть на этих коммутаторах одна из самых простейших команд, позволяющая увидеть mac-адреса всех слинкованых с ним устройств, это «show fdb». Так если это так просто на свитчах, в основе которых linux - так значит оно возможно и на десктопно-серверном линуксе? Спрашивал несколько раз на ЛОРе - меня отсылали к командам arp и arp-scan, но это не совсем то - show fdb позволяет увидеть mac устройства через несколько секунд после того как оно было слинковано, а arp и arp-scan покажут mac только если с этим устройством был длительный обмен ip-трафиком, и вообще причём тут arp - протокол сопоставления ip-адресов mac-адресам, если об ip-адресах разговора вообще не было, речь чисто о взаимодействии на 2 уровне tcp/ip. Сразу после линкования в обе стороны должны пройти управляющие кадры и их mac-адреса сохраниться в буфере или я не так что понимаю? То же самое касается не только десктопно-серверного линукса, но и операционной системы для маршрутизаторов MikroTik RouterOS, в основе которой - тоже ядро linux и в котором тоже нет инструмента для просмотра mac-адресов слинкованых устройств. Подскажите, пожалуйста, что-нибудь по этому вопросу, может какой-то модуль ядра включать надо?

★★★★★

речь чисто о взаимодействии на 2 уровне tcp/ip

Что за уровень такой?

af5 ★★★★★
()

на 2 уровне нет tcp/ip, есть кадры ethernet.

У свитча бриджовые интерфейсы. Если ты на линуксе бриджовые интерфейсы поднимешь вместо ипишных, то получишь нечто похожее.

anto215 ★★
()
Ответ на: комментарий от anto215

Я имел в виду канальный уровень OSI, там где кадры Ethernet, ну ошибся в терминологии, бывает.
Так дело в типе интерфейсов? Как вообще такое возможно сделать, какими инструментами?

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

openvswitch если нужены вкусные плюшки L2, ну или по крестьянски bridge-utils

af5 ★★★★★
()
Ответ на: комментарий от anto215

Я не знал про такую фичу. Мне казалось, linux bridge используется для объединения в мост нескольких интерфейсов. То есть я могу добавить в br0 один единственный интерфейс eth0, а потом работать с ним с помощью инcтрументов brctl и ebtables как с портом коммутатора?

sunny1983 ★★★★★
() автор топика

arp и arp-scan покажут mac только если с этим устройством был длительный обмен ip-трафиком

Нет. Вопрос в arp-кэше и в том как записи вносятся в arp-таблицу. Крути настройки arp unsolicited и прочего. Только учти, что это снижает безопасность

Update: а, тебе нужна именно FDB таблица, то есть канального уровня а не сетевого(arp - это соответствие IP/MAC, нету IP - нет arp-записи). Тогда курить brctl, команду showmacs

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от sunny1983

Да, можешь. Мост из одного интерфейса - вполне себе рабочий пример. Например ты создаешь мост из одного проводного интерфейса, а потом через некоторое время добавляешь туда запускаемые виртуальные машины. Когда все виртуалки будут выключены - в мосту по прежнему будет 1 интерфейс. И это по-прежнему будет работать.

В Linux ЕМНИП даже bonding(агрегация каналов) можно построить из одного интерфейса. На что большинство свичей которые я видел - покрутит пальцем у виска

Pinkbyte ★★★★★
()

То же самое касается не только десктопно-серверного линукса, но и операционной системы для маршрутизаторов MikroTik RouterOS, в основе которой - тоже ядро linux и в котором тоже нет инструмента для просмотра mac-адресов слинкованых устройств.

Решается также как и на Linux - через собственный аналог brctl

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)

в основе прошивки которых лежит ядро linux

враньё

stels ★★★
()

В управляемом коммутаторе обычно на одном SoC интегрирован коммутатор и процессор. На процессоре работает линукс. Но он не занимается коммутацией кадров. Этим занимается коммутатор. А линукс может у коммутатора получить его текущую таблицу коммутации.

iliyap ★★★★★
()
Ответ на: комментарий от anto215

Вот получил я таблицу MACов. Но теперь задача расширилась. Теперь мне нужно узнать IP-адреса. Команды «brctl showmacs br0» и «arp-scan -I br0 -l» выдают разное количество строк, вывод - в сети есть некоторое количество устройств, которые работают без ip-адреса на 2 уровне, либо находятся со сканирующим компьютером в разных подсетях. Нужно выявить вторых. Подсеть, которой принадлежит сканирующий компьютер - 192.168.0.0/24, но судя по конфигам некоторых программ - могут быть также 192.168.212.0/24, 10.0.0.0/24 и 10.10.0.0/24, причём в том же VLANе. Но ладно, допустим я о существующих подсетях ничего не знаю,.. но хочу их обнаружить, как это сделать? ARP, если я не ошибаюсь, выдаёт MAC по IP, а нужно обратное действие. Куда нужно скормить MAC, полученый от всевидящего «brctl showmacs br0», чтобы получить IP, если о подсетях я ничего не знаю?

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

Куда нужно скормить MAC, полученый от всевидящего «brctl showmacs
br0», чтобы получить IP, если о подсетях я ничего не знаю?

Никуда. Надо или пробежаться по всем ip-адресам, которые соответствуют сетям, чьи адреса подняты на интерфейсах, либо использовать ping -b <броадкаст IP каждой из сетей>. Кстати, можно ещё что-то вроде fping -g 192.168.1.0/24. На броадкаст некоторые могут не ответить. После этого смотреть на вывод «arp -n». Адреса вне диапазонов сетей, соответствующих адресам на интерфейсах, узнать никак не получится, исключая вариант прослушивания трафика и ловли случайно залетающий пакетов.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 2)
Ответ на: комментарий от AS

То есть когда когда писали соответствующий RFC сознательно сделали протокол ARP односторонним.

Сегодня возникла практическая задача. Нашёл коробку с несколькими б/у-шными sip-конвертерами Cisco SP122. Ни на один из них зайти не могу, не помогает ни длительное удерживание резета, ни перезагрузка с зажатым резетом. «brctl showmacs br0» маки цисок видит, то есть они как бы живы, а вот определить ip никак не удаётся, пробовал сканировать по разному. На умолчальный ip тоже не отвечают. Акулой что ли просканировать...

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

То есть когда когда писали соответствующий RFC сознательно сделали протокол ARP односторонним.

Была задача передать IP через Ethernet, а не узнать список IP за конкретным MAC.

«brctl showmacs br0» маки цисок видит

Слушать tcpdump-ом. Если MAC-и есть, значит, что-то прилетает. Может быть, оно прилететает с IP, хотя и не обязательно.

AS ★★★★★
()
Ответ на: комментарий от sunny1983

Еще можно было по 169.254 пробовать, но с dhcp проще :)

anc ★★★★★
()
Ответ на: комментарий от AS

Была задача передать IP через Ethernet, а не узнать список IP за конкретным MAC.

А как же InARP? (только что в википедию влез)

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

А как же InARP? (только что в википедию влез)

А при чём тут Ethernet ?

AS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.