iptables question

1

Eu tenho uma rede pequena, com um IP válido e um firewall com 3 interfaces de rede (LAN, WAN, DMZ).

  • Desejo ativar o PAT nesse IP válido para redirecionar o tráfego HTTP para um servidor na minha DMZ. (feito)
  • Quero ativar o MASQ neste ip do tráfego proveniente da minha LAN (concluído)
  • Eu também quero da minha LAN para acessar meu servidor http na DMZ. (parcialmente)

Pergunta:

no cenário acima, eu não posso da minha LAN, para acessar o meu servidor http na DMZ, já que ele tem o IP usado pelo MASQ (o único ip válido que eu tenho). Qual seria a melhor opção para resolver este problema?

interfaces de rede:

  • eth0 (WAN)
  • eth1 (DMZ)
  • eth2 (LAN)

    / sbin / iptables -t nat -A POSTROUTANDO -o eth0 -j MASQUERADE

    / sbin / iptables -A AVANÇAR --o eth1 -d 2.2.2.2 -p tcp --dportar 80 -j ACCEPT

    / sbin / iptables -t nat -A PREROUTING -i eth0 -d 1.1.1.1 -p tcp --dportar 80 -j DNAT - para 2.2.2.2

    / sbin / iptables -A FORWARD -i eth0 -o eth1 -m estado - estado RELACIONADO, ESTABELECIDO -j ACEITAR

    / sbin / iptables -A FORWARD -i eth1 -o eth0 -j ACEITAR

    / sbin / iptables -A FORWARD -i eth2 -o eth0 -j ACEITAR

por VP. 04.03.2011 / 17:51

3 respostas

2

Estou um pouco confuso com a sua explicação. Então, vou usar um exemplo de cenário aqui:

  • eth0 = WAN = 123.11.22.33
  • eth1 = DMZ = 192.168.1.0/24
  • eth2 = LAN = 172.16.0.0/16

E o servidor web recebe 192.168.1.55

# First, allow LAN & DMZ to access the outside world
-t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Now, allow outside access to the webserver
-t nat -A PREROUTING -i eth0 -d 123.11.22.33 -p tcp --dport 80 -j DNAT --to 192.168.1.55:80
# Finally, allow forwarding
-A FORWARD -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -d 191.168.1.55 -p tcp --dport 80 -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -i eth2 -j ACCEPT

Se precisar de mais segurança, sinta-se à vontade para expandir as duas últimas linhas acima, por exemplo:

-N eth1_fwd
-N eth2_fwd
-A FORWARD -i eth1 -g eth1_fwd
-A FORWARD -i eth2 -g eth2_fwd
-A eth1_fwd -s ...... -j ACCEPT
...
-A eth2_fwd -s ...... -j ACCEPT
...

Espero que isso ajude. Não esqueça de adicionar uma rota padrão para o gateway padrão da eth0:)

editar: oops, errado ifaces nas regras posteriores

    
por 07.03.2011 / 09:08
3

Parece que você está tendo apenas o problema padrão NAT hairpin .

Uma solução comum para o problema é fornecer ao seu host na DMZ um IP privado, em uma sub-rede diferente e configurar o DNS dividido. Você servidor o endereço privado para os hosts internos e os hosts externos irão obter o endereço público. Você então tem regras de firewall para permitir clientes internos à sub-rede privada da DMZ, e você tem um NAT e uma regra para encaminhar do endereço / porta para o servidor da web na sua DMZ.

    
por 04.03.2011 / 19:47
2

Como exemplo de um problema que pode ser causado por topologia - se suas redes internas DMZ e LAN estiverem usando sub-redes sobrepostas, isso pode causar o problema que você está vendo porque a máquina LAN não envia pacotes destinados à máquina DMZ para o firewall / rota padrão (uma vez que pensaria que a máquina DMZ é local).

Dito isto, você disse que navegar da sua LAN para 1.1.1.1:80 não está funcionando. Isso faz sentido porque sua regra DNAT é restrita a pacotes que vêm em eth0 (o -i eth0), portanto, os pacotes DNAT não vêm da eth2 e vão para 1.1.1.1:80. Não vejo uma boa razão para restringir essa regra do PREROUTING a uma interface Ethernet específica.

A ativação do 2.2.2.2:80 ocorre no host da LAN?

    
por 04.03.2011 / 20:02