Eu vejo que você está permitindo o tráfego na tabela de redirecionamento da configuração do iptables, no entanto, isso só é de fato usado quando o encaminhamento de IP é de fato ativado para as interfaces em questão.
Por padrão, ubuntu e de fato a maioria das distribuições linux que eu vi desabilitam o encaminhamento IP para segurança que é de fato um padrão sã já que isso é necessário se sua caixa é um roteador, neste caso é exatamente o que você é configurando assim você deve habilitar o encaminhamento IP.
No arquivo /etc/sysctl.conf você precisa descomentar esta linha:
net.ipv4.ip_forward=1
Se você também quisesse encaminhar o tráfego IPv6, também seria necessário remover o comentário dessa linha e configurar a configuração correta do IPv6 com o prefixo atribuído pelo seu ISP.
net.ipv6.conf.all.forwarding=1
Isso garantirá que a configuração correta seja definida na inicialização, se você quiser evitar a reinicialização, poderá usar comandos como os seguintes para ativar o encaminhamento imediatamente para a sessão atual
Para o IPv4:
sudo sysctl -w net.ipv4.conf.[interface].forwarding=1
Para o IPv6:
sudo sysctl -w net.ipv6.conf.[interface].forwarding=1
Onde [interface] é o nome da interface na qual o encaminhamento deve ser habilitado para a interface que se conecta à Internet para que o tráfego possa ser encaminhado de volta para a rede sem fio e para a interface conectada à rede rede sem fio.
Além disso, sua regra MASQUERADE parece incorreta para mim, MASQUERADE deve sair do tráfego da interface que se conecta à Internet e não trafega de saída para os clientes sem fio, o que você tem.
Assim, se o seu roteador de internet estiver conectado ao PC por Ethernet, sua regra provavelmente será parecida com esta:
sudo iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE
Onde eth0 é a interface conectada à internet.
Quanto ao erro do hostapd, hw_mode = n é inválido, a configuração deve ser a seguinte:
hw_mode=g
ieee80211n=1
Assim, o 802.11n será negociado automaticamente se ambos os dispositivos o suportarem, você pode forçar o requisito para o 802.11n com o custo de impedir que alguns dispositivos que não suportam o mesmo se conectem com o seguinte:
require_ht=1
Espero que ajude, se não, eu posso tentar ajudar mais, mas é assim que eu configuro o meu e ele funciona bem com todos os meus dispositivos android e fireOS.
Edit: Desculpe, só vi que você tentou mudar para hw_mode = n em resposta ao comentário que você tinha em primeiro lugar embora eu recomendaria permitir 802.11n para dispositivos compatíveis com a opção ieee80211n = 1 desde o cartão que você tem suporte a ele e permitirá que dispositivos compatíveis operem em velocidades mais altas, enquanto ainda suportam clientes sem fio com menos capacidade, contanto que você não os force (o sinalizador require_ht = 1 desconectaria clientes não compatíveis com 802.11n). Não há nenhum motivo para forçá-lo, no entanto, como 802.11n e 802.11g podem ser suportados simultaneamente.