Para qualquer pessoa que esteja enfrentando esse problema, o problema está no endereço MAC. Eu comecei a interface do ponto de acesso, dei um endereço mac. Então, depois de executar o hostapd, adicionou a interface da estação, deu-lhe um endereço MAC diferente e conectou-o à rede e deu o endereço IP da estação como o gateway padrão dos clientes através do dnsmasq.
Agora tudo está funcionando corretamente.
Como apontado por Diblo Dk, você poderia usar interfaces virtuais e fictícias, mas o hostapd não estava funcionando com elas. Eu não sei porque.
Aqui estão os passos:
- desative o serviço do gerenciador de rede, pois isso interfere nas interfaces virtuais
- desligue o wlan0 usando ifconfig wlan0 down
- crie uma interface de ponto de acesso usando o comando iw (tipo __ap), atribua um endereço mac e ip diferente
- ative o hostapd nessa interface de acesso
- use o dnsmasq para designar os clientes de conexão nessa interface, endereços IP e forneça o gateway padrão como o ip da interface da estação a ser criada
- ative o dnsmasq na interface de acesso. Agora, o cliente poderá se conectar ao ponto de acesso e obter endereços IP.
- crie uma nova interface (tipo estação) atribua-lhe um endereço MAC separado e conecte-o à rede atribuindo o essid e usando o dhclient para obter o endereço IP.
- se necessário, execute o ip masquerading através do comando iptables