Embora eu não esteja familiarizado com a configuração avançada do OpenWRT (está na minha lista de tarefas para projetos geeks), meu primeiro conselho seria garantir que você não esteja fazendo o NAT em "Bob". Se Alice estivesse no lado da LAN de um WAP, e Charlie estivesse no lado da WAN, então Alice seria capaz de fazer ping de Charlie, mas não vice-versa. Esse é o firewall inerente que o NAT fornece.
Para que este não seja o caso, todos os seus APs precisam estar operando em algum tipo de modo "bridge" ou modo "ponto de acesso". Isso significa que o dispositivo atua como mais ou menos um encaminhador de pacotes - ele não faz nenhum roteamento ou inspeção de pacotes por conta própria. A maneira mais fácil de conseguir isso em roteadores mais baratos é desativar o servidor DHCP no roteador e, em seguida, conectar uma das portas LAN à sua rede (e também garantir que o IP da LAN do roteador não esteja em conflito com o gateway real). Você deixaria a porta WAN pendurada. Se o roteador reclamar (a maioria não, mas alguns o fazem), defina a conexão com a Internet como um IP estático e use algo como 223.255.255.254 com uma máscara de sub-rede 255.255.255.252 para o endereço e 223.255.255.253 para o gateway. (Curiosidades: essa é a última sub-rede da Classe C com o menor tamanho possível.)
A outra possibilidade pode ser uma incompatibilidade de máscara de sub-rede. Cada computador na mesma rede precisa ter a mesma máscara de sub-rede configurada (além de estar na mesma rede real, é claro). O computador usa a máscara de sub-rede para determinar não apenas o endereço de difusão IP, mas também para determinar se os pacotes de transmissão devem receber ser processado pela pilha de rede (ou seja, se os pacotes de transmissão para IPs não estiverem localizados no endereço e na máscara de sub-rede configurados no dispositivo, muitos dispositivos ignorarão o pacote).
Espero que isso ajude pelo menos um pouco.