A situação
O Raspbian Stretch é conectado sem fio a uma sub-rede privada 10.0.0.0/16 via wlan0 (modelo RT5370). Sem mais modificações, o Raspbian Stretch tem acesso à Internet e o DNS está funcionando. PS: Eu não tenho acesso físico ao roteador que se conecta à Internet - somente sem fio.
Eu adicionei outro NIC RT5370 como wlan1 e o configurei como um ponto de acesso sem fio usando hostapd.
Como não sei o intervalo de endereços do servidor DHCP do roteador, não quero adicionar um endereço estático à wlan0.
Eu configurei um endereço IPv4 estático em wlan1 192.168.0.1/28 (16 endereços de host) e configurei o dnsmasq para ser o servidor DHCP para esta rede.
O problema
Deve ser bem simples na verdade.
O Raspbian Stretch pode 1) acessar a Internet ou 2) agir como um WAP para conectar clientes. O problema é que os dois recursos não funcionam ao mesmo tempo.
Eu vi guias em que a conexão com a Internet é estabelecida via cobre em vez de ondas de rádio, mas não vejo por que faz alguma diferença se a interface conectada à Internet for sem fio em vez de com fio. De qualquer forma ...
O que eu tentei
Em uma nova reinicialização, posso pingar google.com e 8.8.8.8 com êxito.
Eu posso ver wlan0 e wlan1 depois de verificar ifconfig
e eles parecem estar configurados ok.
Aqui está a saída de route
.
Kernel IP routing table
Destination Gateway Genbask Flags Metric Ref Use Iface
default 10.0.0.36 0.0.0.0 UG 303 0 0 wlan0
default 192.168.0.1 0.0.0.0 UG 304 0 0 wlan1
10.0.0.0 0.0.0.0 255.255.0.0 U 303 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.240 U 303 0 0 wlan1
Eu não sei por que parece que dois gateways padrão estão aqui quando uma única rota padrão parece mais apropriada, mas a Internet funciona, então eu continuo ...
Depois de provar que o Stretch Raspbian tem acesso à Internet, eu tento:
root@computer:/# hostapd /etc/hostapd/hostapd.conf
E veja isto:
Configuration file: /etc/hostapd/hostapd.conf
nl80211: Could not configure driver mode
nl80211: deinit ifname=wlan1 disabled_11b_rates=0
nl80211: driver initialization failed.
wlan1: interface state UNINITIALIZED->DISABLED
wlan1: AP-DISABLED
hostapd_free_hapd_data: Interface wlan1 wasn't started
Agora, curiosamente, depois disso:
root@computer:/# killall wpa_supplicant
root@computer:/# hostapd /etc/hostapd/hostapd.conf &
Eu entendo isso:
Configuration file: /etc/hostapd/hostapd.conf
Using interface wlan1 with hwaddress aa:bb:cc:11:22:33 and ssid "myssid"
wlan1: interface state UNINITIALIZED->ENABLED
wlan1: AP-ENABLED
Isso me permite conectar com sucesso máquinas clientes ao myssid via wlan1, mas agora não consigo pingar google.com ou 8.8.8.8 e notei que o wlan0 não está aparecendo no ifconfig e minha tabela de roteamento se parece com isso agora:
Kernel IP routing table
Destination Gateway Genbask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.240 U 303 0 0 wlan1
Para recuperar o wlan0, eu faço:
root@computer:/# service dhcpcd restart
root@computer:/# sysctl daemon-reload
Agora wlan0 e wlan1 estão aparecendo em ifconfig, o Raspbian Stretch pode pingar google.com e 8.8.8.8, mas os clientes conectados a wlan1 não têm acesso à Internet.
Neste ponto, minha tabela de roteamento é assim:
Kernel IP routing table
Destination Gateway Genbask Flags Metric Ref Use Iface
default 10.0.0.36 0.0.0.0 UG 303 0 0 wlan0
10.0.0.0 0.0.0.0 255.255.0.0 U 303 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.240 U 304 0 0 wlan1
Se apenas eu pudesse permitir o acesso à Internet de clientes wlan1, tudo isso poderia acabar:)