Esse é um problema comum causado pela incapacidade de executar um NAT com gancho de cabelo. A maioria dos roteadores domésticos baratos lida com isso simplesmente ativando o encaminhamento de porta. No entanto, os roteadores mais avançados realmente precisam de regras separadas para resolver o problema.
Suas regras NAT normais funcionam apenas fora da sua rede. Se você tentar se conectar de dentro da sua rede, há um problema de NAT.
Considere isto...
- Você tem
Server A
na sua rede local com IP 10.10.10.10
.
- Você tem
Computer A
na sua rede local com IP 10.10.10.20
.
- Você tem
Router A
um LAN
IP de 10.10.10.1
e um WAN
IP de 11.11.11.11
.
- Você tem
Computer B
fora da sua rede com IP 12.12.12.12
.
- Você
port 22
enviou do seu IP da WAN para Server A
.
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
O NAT do roteador A envia o pacote 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
O roteador A envia NAT ao pacote e o envia ao 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
O NAT do roteador A envia o pacote 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 ele veio 10.10.10.10
e enviou o pacote original para 11.11.11.11
. Ele espera que o pacote retorne 11.11.11.11
.
Para resolver o problema, você deve criar uma segunda regra NAT mais específica para corresponder ao tráfego originado dentro da sua rede. Ele virá após a regra NAT original. Você precisará fazer um NAT de origem parecido com este:
srcnat src-address=10.10.10.0/24 dst-address=10.10.10.10 dst-port=22 out-interface=LAN action=masquerade
Agora, vejamos isso novamente:
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
O NAT do roteador A envia o pacote 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
O NAT do roteador A envia o pacote para o computador A:
Source IP: 11.11.11.11 Src Port: 22
Destination IP: 10.10.10.20 Dest Port: 12345
Tudo funciona como pretendido.
Como você implementa essa segunda regra NAT depende do hardware e do software do roteador. Sua milhagem pode variar.