Como encaminhar portas para DMZ usando o iptables e o modem separado

1

Eu tenho uma rede que se parece com isso:

 ADSL          VLAN 2              VLAN 3
------[Modem]----------[firewall]----------[intranet PC]
                            |
                            |      VLAN 4
                             \-------------[DMZ server]

Eu quero configurar o encaminhamento de porta para expor um servidor da Web na DMZ à Internet. Os IPs são:

  • Modem: 192.168.0.1
  • Firewall eth0.2: 192.168.0.126
  • Firewall eth0.3: 192.168.1.1
  • Firewall eth0.4: 192.168.2.1
  • PC: 192.168.1.2
  • Servidor: 192.168.2.2

Eu abri as portas 80 e 443 no modem e enviei-as para o firewall (192.168.0.126). E eu tenho essas regras no iptables no firewall:

NAT:

-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -d 192.168.0.126/32 -p tcp -m multiport --dports 80,443 \
    -j DNAT --to-destination 192.168.2.2
-A PREROUTING -d 192.168.1.1/32 -p tcp -m multiport --dports 80,443 \
    -j DNAT --to-destination 192.168.2.2
-A POSTROUTING -o eth0.2 -j MASQUERADE

Encaminhamento:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

# Disallow new connections from DMZ to modem and intranet
-A FORWARD -d 192.168.0.0/16 -i eth0.4 -m state --state NEW -j DROP

# Allow intranet to access Internet
-A FORWARD -i eth0.3 -o eth0.2 -j ACCEPT
-A FORWARD -i eth0.2 -o eth0.3 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Allow DMZ to access Internet
-A FORWARD -i eth0.4 -o eth0.2 -j ACCEPT
-A FORWARD -i eth0.2 -o eth0.4 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Allow web ports to DMZ
-A FORWARD -i eth0.2 -o eth0.4 -p tcp -m multiport --dports 80,443 -j ACCEPT

# Allow intranet to access DMZ
-A FORWARD -i eth0.3 -o eth0.4 -j ACCEPT
-A FORWARD -i eth0.4 -o eth0.3 -m state --state RELATED,ESTABLISHED -j ACCEPT

Tudo parece funcionar bem, exceto pelo encaminhamento de porta. Se eu abrir 192.168.1.1 em um navegador de um PC de intranet, vejo o servidor DMZ. E é assim que parece no telnet:

$ telnet 192.168.1.1 80
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'

Mas se eu tentar abri-lo da Internet usando o IP externo do modem, recebo o seguinte:

$ telnet <EXT_IP> 80
Trying <EXT_IP>...
telnet: Unable to connect to remote host: No route to host

Eu tentei configurar um NAT hairpin conforme descrito em a resposta a essa pergunta semelhante , mas não houve alteração. Talvez eu não tenha usado os endereços certos.

Então, duas perguntas:)

  1. Por que as conexões de entrada não podem ver o servidor DMZ?
  2. A configuração do iptables está gerneralmente OK? Ou deveria estar descartando pacotes por padrão em algum lugar?

O firewall está executando o Debian Jessie, Linux 3.16.

    
por z0r 13.01.2015 / 06:17

1 resposta

0

Bem, eu me sinto envergonhado. As regras de firewall funcionam bem, mas a porta 80 estava sendo bloqueada no ISP.

    
por 14.01.2015 / 02:12