iptables encaminhamento de porta para convidados da estação de trabalho vmware em NAT vmnet [closed]

1

Por mais que eu tente, não consigo fazer isso funcionar por dois dias. Sua jogada, internet.

I want iptables to transparently forward (localhost) 192.168.1.40:2222 to 192.168.2.22:22 and I don't want 192.168.2.0/24 to have access to any of 192.168.1.0/24

Tenho uma conexão a cabo de classe executiva de banda larga que entra no meu escritório, o que pode gerar tráfego em praticamente qualquer porta. É bastante limitado nos seus conjuntos de funcionalidades, por isso, durante anos, fiz o dobro do NAT para um router wifi netgear mais agradável (não é possível ligá-lo ao modem a montante). A partir do primeiro cable modem eu encaminhar todas as portas para o roteador netgear e de lá encaminhar para todo o resto (servidor de mídia, servidor de e-mail, servidor vpn, etc)

Hoje eu coloquei uma VM em uma nova rede NAT vmware embora. Eu quero completamente isolado da rede principal, e eu quero passar de forma transparente de seu host na rede principal para sua rede NAT vmware. Topologia:

        192.168.0.0/24    
+-----+   +-------+   +--------------+   +----------------------+
| WAN |<->| Modem |<->| Netgear wifi |<->| Debian Linux 7       |
+-----+   +-------+   | Router       |   | Server Running       |
                      +--------------+   | VMWARE Workstation   |
                       192.168.1.0/24    +----------------------+
                                           eth0:    192.168.1.40
                                           vmnet99: 192.168.2.1
                                                \_+--------------+
                                                 \_| Guest        |
                                                   | Linux VM     |
                                                   | 192.168.2.22 |
                                                   +--------------+
    -Public IP-
 173.175.202.93:2222
         |
      -Modem-
  192.168.0.1:2222
         |
      -Router-
  192.168.1.1:2222           <=========== Flow of traffic
         |
-Host Server/iptables-
  192.168.1.40:2222
         |
  -Virtual Machine-
   192.168.2.22:22

Quando digito nc localhost 2222 no host principal, quero que o convidado responda com um prompt do ssh. Isso é o que eu preciso, para que se comporte assim:

+-----+   +-------------------+   +--------------------+
| WAN |<->| PUB IP, Port 2222 |<->| VM 192.168.2.22:22 |
+-----+   +-------------------+   +--------------------+

Eu tentei fazer isso usando as regras de firewall abaixo no host VMware e muitas, muitas outras formas semelhantes de regras do iptables. Não importa o que eu tente, não funciona:

:PREROUTING ACCEPT [30:4605]
:INPUT ACCEPT [18:3693]
:OUTPUT ACCEPT [330:21304]
:POSTROUTING ACCEPT [342:22216]
-A PREROUTING -p tcp -m tcp --dport 2222 -j DNAT --to-destination 192.168.2.22:22
-A POSTROUTING -p tcp -m tcp -j MASQUERADE
COMMIT
# Completed on Tue Dec 17 12:33:29 2013
# Generated by iptables-save v1.4.14 on Tue Dec 17 12:33:29 2013
*filter
:INPUT ACCEPT [3188:201562]
:FORWARD ACCEPT [6:582]
:OUTPUT ACCEPT [4390:6225036]
-A FORWARD -d 192.168.2.22/32 -o vmnet99 -p tcp -m tcp --dport 22 -j ACCEPT
COMMIT
# Completed on Tue Dec 17 12:33:29 2013

O que eu preciso fazer para conseguir 192.168.1.40 avançar e voltar transparentemente para 192.168.2.22 ??

ATUALIZAÇÃO: Você pode fazer o download do arquivo de captura wireshark aqui: link (Enquanto a captura estava em execução, executei este comando: $ ping -c1 192.168.2.22 ; sleep 1 ; nc localhost 2222 )

    
por RaWkStAr 17.12.2013 / 20:17

1 resposta

0

Como @MadHatter apontou nos comentários, o redirecionamento do iptables e o NAT não podem ser testados internamente. Você precisa seguir o caminho que os pacotes seguiriam de um ponto de origem externo.

Em outras palavras, seu teste falhará se você tentar ativar o redirecionamento de porta diretamente do servidor cujas tabelas de IP implementam o encaminhamento. Você não pode fazer isso no localhost! SSH para um servidor fora da sua rede e tente entrar novamente na rede na porta que você está encaminhando.

Se as regras do iptables estiverem corretas como as que você vê aqui, você verá que o encaminhamento de porta funciona perfeitamente.

TIP : Se você estiver rodando em uma distribuição Linux baseada no Debian, instale o pacote iptables-persistent para manter seus ajustes do iptables persistentes entre as reinicializações.

    
por 17.12.2013 / 22:02