Este é um problema comum causado pela incapacidade de fazer um NAT Hairpin. A maioria dos roteadores domésticos baratos lidam com isso simplesmente ativando o encaminhamento de porta. No entanto, os roteadores mais avançados precisam de regras separadas para resolver o problema.
Suas regras normais de NAT só funcionam fora da sua rede. Se você tentar se conectar de dentro da sua rede, há um problema de NAT.
Considere isso ...
- Você tem
Server A
em sua rede local com IP10.10.10.10
. - Você tem
Computer A
em sua rede local com IP10.10.10.20
. - Você tem
Router A
com umLAN
IP de10.10.10.1
eWAN
IP de11.11.11.11
. - Você tem
Computer B
fora de sua rede com IP12.12.12.12
. - Você tem
port 22
encaminhado do seu IP da WAN paraServer A
.
De fora da sua rede, o tráfego fica assim:
O computador B tenta se conectar ao servidor A:
Source IP: 12.12.12.12 Src Port: 12345
Destination IP: 11.11.11.11 Dest Port: 22
Roteador A NATs o pacote e envia-o para o servidor A:
Source IP: 12.12.12.12 Src Port: 12345
Destination IP: 10.10.10.10 Dest Port: 22
O servidor A responde ao computador B:
Source IP: 10.10.10.10 Src Port: 22
Destination IP: 12.12.12.12 Dest Port: 12345
Roteador A NATs o pacote e envia para o computador B:
Source IP: 11.11.11.11 Src Port: 22
Destination IP: 12.12.12.12 Dest Port: 12345
Tudo funciona como pretendido. Agora, considere o mesmo cenário, mas de dentro da sua rede:
O computador A tenta se conectar ao servidor A:
Source IP: 10.10.10.20 Src Port: 12345
Destination IP: 11.11.11.11 Dest Port: 22
Roteador A NATs o pacote e envia-o para o servidor A:
Source IP: 10.10.10.20 Src Port: 12345
Destination IP: 10.10.10.10 Dest Port: 22
O servidor A responde ao computador A:
Source IP: 10.10.10.10 Src Port: 22
Destination IP: 10.10.10.20 Dest Port: 12345
O IP de origem está na mesma sub-rede que o IP de destino. Server A
não envia o pacote de volta ao roteador, ele o envia diretamente para Computer A
. Computer A
descarta o pacote, porque veio de 10.10.10.10
e enviou o pacote original para 11.11.11.11
. Espera que o pacote retorne de 11.11.11.11
.
Para resolver o problema, você deve criar uma segunda regra de NAT mais específica para corresponder ao tráfego originado de dentro de sua rede. Ele virá depois da sua regra original de NAT. Você precisará fazer um NAT de origem que seja assim:
srcnat src-address=10.10.10.0/24 dst-address=10.10.10.10 dst-port=22 out-interface=LAN action=masquerade
Agora, vamos analisar isso de novo:
O computador A tenta se conectar ao servidor A:
Source IP: 10.10.10.20 Src Port: 12345
Destination IP: 11.11.11.11 Dest Port: 22
Roteador A NATs o pacote e envia-o para o servidor A:
Source IP: 10.10.10.1 Src Port: 12345
Destination IP: 10.10.10.10 Dest Port: 22
O servidor A responde ao computador A:
Source IP: 10.10.10.10 Src Port: 22
Destination IP: 10.10.10.1 Dest Port: 12345
Roteador A NATs o pacote e envia para o computador A:
Source IP: 11.11.11.11 Src Port: 22
Destination IP: 10.10.10.20 Dest Port: 12345
Tudo funciona conforme o esperado.
A maneira como você implementa essa segunda regra NAT depende do hardware e software do roteador. Sua milhagem pode variar.