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
)