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