Por favor, descreva detalhadamente como todos os seus servidores estão fisicamente conectados, incluindo roteamento por cabo Ethernet e qualquer configuração de switch.
Você pode ter problemas ao usar a tradução de endereços de rede por meio de seu gateway, pois ele está vinculado a um roteador. Que tipo de roteador? Que tipo de conexão com a Internet? Você pode conectar seu gateway diretamente à Internet? Deve ser o roteador principal.
Independentemente disso, devemos ser capazes de isolar a causa do problema de comunicação com seu gateway e servidor Web.
Você tem alguma regra de firewall em seu servidor da Web? Por favor, verifique e tenha certeza.
Como é a tabela de roteamento e a lista de interfaces em seu servidor Web?
Ativar o registro para facilitar a depuração:
$iptables -A INPUT -j LOG --log-level 7 --log-prefix "Dropped by firewall: "
$iptables -A OUTPUT -j LOG -log-level 7 --log-prefix "Dropped by firewall: "
Editar 1
Obrigado pela atualização e diagramas. Coisa boa. Não tenho certeza se entendi a diferença de desempenho entre o IIS e o servidor Apache. Ambos podem ser contatados através do gateway na porta 80?
Você adicionou as instruções de registro? Isso ajudará.
Vou rever tudo em detalhes novamente esta noite.
Editar 2
Ah, parece que o DNAT não funciona. Anteriormente, parecia que você também estava tendo problemas para se comunicar internamente entre seu gateway e seus servidores da Web.
Tente substituir:
$iptables -A PREROUTING -t nat -i $EXTIF -p tcp --dport 80 -j DNAT --to 192.168.0.98:80
$iptables -A FORWARD -p tcp -m state --state NEW -d 192.168.0.98 --dport 80 -j ACCEPT
Com:
$iptables -A PREROUTING -t nat -p tcp -d 94.4.18.166 --dport 80 -j DNAT --to-destination 192.168.0.98:80
Editar 3
Script. Por exemplo:
EXTIP='/sbin/ifconfig $EXTINT | grep 'inet addr' |awk '{print $2}' | sed 's/addr://g''
$iptables -A PREROUTING -t nat -p tcp -d $EXTIP --dport 80 -j DNAT --to-destination 192.168.0.98:80'
Qualquer lógica adicional pode ser adicionada com base no desempenho desejado.