У меня есть точка доступа (hostapd
), работающая на wlan0
. wlan0
и eth0
соединены мостом, а eth0
подключен к маршрутизатору. br0
настроен для DHCP и получает адрес, зарезервированный на маршрутизаторе.
Пусть коробка с точкой доступа будет называться коробкой точки доступа.
Иногда маршрутизатор показывает, что в поле точки доступа есть MAC-адрес устройства wlan0
вместо MAC-адреса eth0
как и должно быть.
Любые устройства, подключенные к точке доступа, будут показывать свои соответствующие MAC-адреса в arp-кэше маршрутизатора.
Маршрутизатор имеет правила межсетевого экрана моста, которые предписывают, чтобы все пакеты с зарезервированного IP-адреса DHCP блока точки доступа приходили с MAC-адреса eth0
поэтому блок теряет сетевое подключение, когда MAC изменяется с eth0
на wlan0
. Когда ящик теряет связь, все связанные клиенты на точке доступа все еще могут использовать Интернет.
Мне удалось обойти правила моста маршрутизатора с помощью следующих команд ebtables
на коробке с wlan0
.
ebtables -t nat -A PREROUTING -i eth0 -s $WLAN_MAC -j dnat --to-destination $LAN_MAC
ebtables -t nat -A POSTROUTING -o eth0 -s $WLAN_MAC -j snat --to-source $LAN_MAC
ebtables -t nat -A PREROUTING -i eth0 --logical-in br0 -s $WLAN_MAC -j dnat --to-destination $LAN_MAC
ebtables -t nat -A POSTROUTING -o eth0 --logical-out br0 -s $WLAN_MAC -j snat --to-source $LAN_MAC
Хотя окно точки доступа никогда не теряет подключения к Интернету, arp-кеш маршрутизатора все еще смешивает MAC-адреса. Есть ли способ предотвратить это?
РЕДАКТИРОВАТЬ
Я смог неуклюже решить эту проблему, установив MAC-адрес wlan0
на тот же MAC-адрес, что и eth0
. Мне не нравится это решение, и я хочу, чтобы оно работало без непосредственного изменения MAC- wlan0
.