Você usa hosts virtuais baseados em nome na sua configuração do apache? Como você se conecta a partir da LAN e através do roteador NAT? Se você tiver hospedagem virtual baseada em nome, o cabeçalho Host na solicitação HTTP define qual host virtual atende à solicitação. Então, por exemplo, se eu tiver algo como:
<VirtualHost *:80>
ServerName my.internal.hostname
.....
</VirtualHost>
<VirtualHost *:80>
ServerName some.other.hostname
...
</VirtualHost>
E eu conecto o roteador externo com o link , posso acabar no último host virtual que eu especifiquei. Se aquele está configurado em um DocumentRoot que não tem permissões, recebo um 403.
Outra possibilidade pode ser que você tenha um DocumentRoot especificado e, mais tarde, uma diretiva Directory que não tenha "allow from all", mas apenas algo como "allow from 192.168.0.0/24".