É importante entender que existem duas categorias de endereços IP definidas pelo IETF (Internet Engineering Task Force): os válidos e os inválidos. Esse termo se refere a ser válido na Internet, que trafega informações e consegue navegar entre os servidores espalhados pelo mundo todo. Endereços inválidos são utilizados para configurações de redes locais, dentro da sua casa ou empresa. Endereços que iniciam com 10, 169 ou 192, por exemplo, são inválidos. Estes endrereços não trafegam na Internet. Então, por exemplo, se o seu computador possui o endereço IP 192.168.0.15, ele não consegue atingir a Internet diretamente, precisa passar por algum processo de roteamento. Por isso, o equipamento que conecta a sua casa à Internet se chama roteador. Este roteador, sim possui um endereço dentro da faixa de IPs válidos. IPs inválidos são úteis para montar a sua rede local, sem as limitações e vulnerabilidadesde uma exposição direta à Internet.
Faixas de IP Inválido:
10.0.0.0 -> 10.255.255.255 Classe A
172.16.0.0 -> 172.131.255.255
192.168.0.0 -> 192.168.255.255 Classe B
Vamos partir do cenário que na sua rede tem um computador conectado à Internet, este computador possui duas (ou mais) conexões de rede, sendo que uma delas é a que está conectada à Internet (possui IP válido) e a outra conectada à sua rede local (possui IP inválido). Dessa forma as estações da rede local não conseguem chegar à Internet e, da mesma forma, pontos de fora da Internet não conseguem chegar às estações da rede local. Apenas o servidor consegue ter acesso a ambas as redes: local e Internet devido ao fato de possuir duas conexões.
Para fins do nosso exemplo, esse será o nosso cenário. Um servidor com duas placas de rede, sendo uma conectada diretamente à Internet e outra à rede local. Na vida real esse servidor pode ter qualquer quantidade de placas de rede e estar conectado a várias redes diferentes.
A técnica de Port Forwarding funciona da seguinte forma: Digamos que um dos computadores da sua rede local possua um serviço web server, ou seja, ele hospeda páginas web, outro computador da rede local tenha um serviço de banco de dados. A estações que estão de fora da sua rede só conseguem chegar até o servidor, as requisições vão terminar ali. Porém, com o serviço Port Forwarding ativo e devidamente configurado, o servidor pega aquela requisição e encaminha para um computador dentro da rede local para atendê-la. O computador dentro da rede local vai atender a requisição e vai entregar a resposta ao servidor da rede e este, por sua vez, dará a resposta para a estação que iniciou a requisição.
Exemplificando, temos este cenário:
Mundo Externo | Seu Servidor | Sua Rede Local |
Estação Externa 01 65.30.28.42 Estação Externa 02 220.150.130.210 … | Servidor Placa de Rede 1 200.30.25.40 Placa de Rede 2 192.168.0.20 | Estação Interna 1 192.168.0.30 Web server na porta 80 Estação Interna 2 192.168.0.31 Banco de dados na porta 1143 Estação Interna 3 192.168.0.32 Banco de dados na porta 3386 |
Estação Externa 02 tenta abrir uma página que está no servidor. A requisição chega na porta 80 da placa de rede 1 do servidor, pois está na Internet, com IP válido. O servidor sabe que chamadas para a porta 80 tem que ser encaminhadas para a estação interna 1, então o servidor utiliza a placa de rede 2 para encaminhar (forward) a requisição para o computador correto, que está no endereço 192.168.0.30. O computador processa a requisição e entrega o resultado para o servidor, na placa de rede 2. O servidor pega essa resposta e, através da placa de rede 1 entrega a resposta para a Estação Externa 02.
Estação Externa 01 tenta acessar um banco de dados que está no servidor. A requisição chega na porta 1143 da placa de rede 1 do servidor. O servidor encaminha a requisição para a Estação Interna 2 através da placa de rede 2. Da mesma forma, este processa a requisição, entrega a reposta para o servidor e ele repassa essa resposta para o computador requisitante.
É possível também direcionar para outras portas internamente. Por exemplo, o servidor pode estar configurado para encaminhar as chamadas à porta 1145 para a porta 3386 da Estação Interna 3, de onde poderíamos dar o seguinte exemplo:
Estação Externa 02 tenta acessar um banco de dados que, supostamente, está na porta 1145 do servidor. A requisição vai chegar nessa porta da placa de rede 1 do servidor. Como já está configurado para isso, ele vai encaminhar a requisição para a porta 3386 da Estação Interna 3 através da placa de rede 2. A estação vai processar o pedido e vai entregar a resposta para a placa de rede 2 na porta 3386, a qual o servidor irá encaminhar para a estação solicitante através da placa de rede 1 na porta 1145.