LINUX.ORG.RU
решено ФорумAdmin

link layer

 ,


0

1

Нужно переправлять все принимаемые ethernet фреймы с одного интерфейса на другой интерфейс? Как это сделать без бриджа? Бридж не подходит, т.к. один из инетрфейсов беспроводной и не поддерживает бриджинг



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

Включи wds на точке доступа и на интерфейсе sta (iw wlan0 4addr on), тогда сможешь и в бридж добавить.

Второй вариант, исправить в драйвере беспроводного интерфейса флаг, запрещающий добавлять в бридж. Но, тогда бридётся использовать ebtables для подмены MAC адресов, т.к. в беспроводной сети нельзя подменять MAC-источника в tripple-addr frames, т.к. два из них определяют адрес беспроводной сети и адрес назначения, а третий всегда является MAC-адресом беспроводного интерфейса станции, который является идентификатором для точек доступа во внутреннем списке подключённых станций (там ещё у них таблица соответствия MAC-sta <-> AID для powersave функций).

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

wds не вариант, роутер не мой. Флаг видел, вариант.

Сейчас делаю так: создал виртуальный wifi интерфейс, дал ему mac-адрес устройства за ethernetом, поднял этот виртуальный интерфейс. И скомпилировал небольшую программку, которая просто перегоняет AF_PACKET между интерфейсами. Плохо что один и тот же мак у двух устроств получается, но может заработать

urquan
() автор топика

что получилось

Получилось в таком виде, но работает только с одним устройством с ethernet-стороны моста: Ядро пересобрано с убраной проверкой на IFF_DONT_BRIDGE

Вот такой настраивает бриджинг:

#!/bin/sh

device_mac=$1

ip link add name lan_bridge type bridge

iw dev wlp1s0 interface add wlan_port type station
macchanger --mac $device_mac wlan_port

ip link set wlan_port master lan_bridge
ip link set enp0s29u1u3 master lan_bridge
ip link set dev enp0s29u1u3 up

wpa_supplicant -i wlan_port -c /etc/wpa_supplicant/wpa_supplicant-wlp1s0.conf -b lan_bridge

#force forwarding
bridge fdb delete $device_mac dev wlan_port master
bridge fdb delete $device_mac dev wlan_port vlan 1 master

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

Ээм, программка - лишняя сущность. Убираешь флаг и можешь спокойно добавлять sta-интерфейс в стандартный бридж (пакеты бриджуются модулём ядра - это быстрее и качественнее). Из-за специфики wifi, точка доступа различает станции по их мак-адресам, соответственно, если фрейм прилетает от хоста за станцией, тот мак-адрес точке доступа неизвестен и она такой фрейм отбрасывает. Решение пролемы - использовать аналогичный NAT но для L2 (то есть подмена не IP, а MAC-адресов). Это делается средствами ebtables из стандартной поставки дистрибутива и ядра. Раньше на точках доступа это называлось nat2.5.

Проблема nat2.5 заключается в дополнительной поддержке протоколов верхнего уровня. Это как connection tracking для специфических протоколов IP-уровня (например для ftp требуется подгрузка conntrack модуля, чтоб отслеживать порты передачи данных во вторичных соединениях). Собственно, для L2-уровня такими протоколами являются dhcp и pppoe (это из самых популярных), т.к. для них дополнительно требуется обратная трансляция и дополнительные функции (для pppoe от MAC-источника зависит то ли авторизация, то ли хеши какие-то, сейчас не вспомню). Но в целом, использование ebtables в простом варианте должно хватать.

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

Я не написал, что без программки обошёлся. Всё стандартно через бридж ходит. Вместо ebtables сделал через виртуальный фай-фай адаптер, которому назначен мак устройства, которое подключено через проводной интерфейс. Плюс в том, что для IP уровня всё прозрачно, connection-tracking не нужен

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

Ну как частный вариант использования - можно. Просто нужно будет помнить, что только одно устройство должно быть за станцией. А с ebtables уже не важно, что и сколько за станцией.

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