Ok, depois de mais um mês pensando e pesquisando, tenho quase certeza de que esse é um problema do DNS. Da minha pesquisa, eu juntei o que eu acho que são as duas principais soluções. Cada um requer a adição dos registros DNS a alguma máquina localizada na rede.
1. Configurar um servidor DNS na minha máquina Ubuntu existente.
Desta forma, todo o tráfego DNS na minha rede local passará pela máquina Ubuntu. Dnsmasq parece ser o caminho a percorrer. Em seguida, eu configuraria o servidor para usar o servidor DNS de meu provedor (ou de quem quer que seja) para solicitação remota ao adicionar meus próprios registros para as máquinas locais. Finalmente, eu poderia usar os hosts virtuais no apache para resolver diferentes subdomínios para diferentes sites no meu servidor web. Um tutorial aparentemente bom está aqui:
http://2008.alepe.com/about_computers/about_linux/simple_intranet_dns_server_in_linux.html
O que não gosto neste método é que qualquer pedido de DNS remoto depende do meu servidor doméstico. É em 24/7, mas eu uso para muitas coisas, não apenas para um servidor web. Como resultado, um certo grau de ajustes é feito, e eu espero que de vez em quando eu experimente o que quer que seja. Dito isto, nem sempre estou em casa quando outros estão em casa usando a internet, e não quero deixá-los no escuro. Então ...
2. Eventualmente, obtenha um roteador compatível com o DD-WRT ou firmwares similares.
Meu roteador atual não tem capacidade, mas eu poderia gastar alguns dólares e obter um com a funcionalidade DNS integrada. Então, eu poderia evitar o uso do meu servidor e ainda ter registros DNS internos personalizados em um na máquina da casa. Um tutorial está aqui:
http://cybernetnews.com/local-internal-dns-ddwrt/
Parece que eu precisaria apenas adicionar meus registros DNS nas opções DNSmasq e seria bom ir. Os hosts virtuais no apache seriam configurados da mesma forma.