É simples assim: hostapd
adiciona sua interface à ponte especificada por bridge=
depois de ter transformado wlan0
no modo AP. Adicionar sua interface em uma ponte antes que o hostapd esteja em execução não é possível, porque sua interface ainda está no modo gerenciado padrão.
Não diga ifupdown
(via /etc/network/interfaces
) para adicionar wlan0
à sua ponte e deixe hostapd
fazer isso:
bridge-ports eth0 # no wlan0 here.
Oh, o seu /etc/network/interfaces
está muito inchado. Você não precisa mexer muito com o brctl.
auto lo
iface lo inet loopback
# If you don't need to configure eth0, don't add a stanza for eth0.
iface wlan0 inet manual
# hostapd has ifupdown hooks in /etc/network/if-*.d/, just like bridge-utils
hostapd /etc/hostapd/hostapd.conf
auto br0
iface br0 inet dhcp
# This will run dhcp on eth0, then proceed to create an AP.
# bridge-ports already handles creating the bridge, adding the ports and
# upping them (with ifconfig and ioctls :-( )
bridge_ports eth0
# After the bridge is set up with only eth0, up the interface using
# the previously defined stanza. hostapd will add wlan0 to the bridge
# using the modern rtnetlink API.
post-up ifup wlan0
# When preparing to down, destroy the AP (and remove it from the bridge)
# before the bridge is downed.
pre-down ifdown wlan0