Se você tiver um roteador com um único endereço IP público no lado da WAN e usar uma sub-rede de endereços IP privados no lado da LAN, é mais do que um roteador, é um NAT (tecnicamente NAPT: Network Address and Port Translation , mas a maioria das pessoas apenas diz NAT).
Quando um host tenta iniciar uma nova conexão, ele envia o pacote de um número de porta efêmero (acima de 49152). Como o gateway NAT processa esse pacote de saída, ele verifica se essa porta de origem está livre na interface WAN do gateway NAT (endereço IP público). Se estiver livre, permite que o cliente use esse número de porta; se estiver em uso, ele atribui um número de porta pública diferente a esse pacote e modifica o pacote para parecer que veio do outro número de porta. De qualquer maneira, ele faz uma entrada de tabela mapeando esse número de porta pública para esse endereço IP privado e porta, para que ele possa traduzir e encaminhar corretamente quaisquer pacotes adicionais nessa conexão, em qualquer direção.
Para novas tentativas de conexão de entrada em seu endereço IP público, o gateway NAT não pode saber automaticamente para quem encaminhar a tentativa de conexão. Portanto, o gateway NAT descartaria o pacote por padrão e possivelmente responderia com um pacote de redefinição de TCP ou uma mensagem "Destination Unreachable: Port Unreachable" do ICMP. É por isso que você precisa criar regras de encaminhamento de porta (também conhecidas como mapeamento de porta, servidor virtual etc.).
Mas uma única porta, como a conhecida porta 22 de ssh
, só pode ser encaminhada para um único host. Assim, para conexões iniciadas do lado de fora, somente um host pode ser alcançado na porta 22. Então, se você tiver mais de uma máquina por trás de um gateway NAT, e você quiser que todas estejam acessíveis via ssh
do lado de fora, você precisa escolher outros números de porta para mapear para esses hosts. Por exemplo, mapeie a porta pública 22 para a porta 22 no primeiro host, mapeie a porta pública 50022 para a porta 22 no segundo host, mapeie a porta pública 50122 para a porta 22 no terceiro host, etc.
Então, quando você precisar se conectar, digamos, ao segundo host, use ssh -p 50022 username@PublicIPAddrOfNATGateway
.
Na verdade, provavelmente é melhor se você não mapear a porta pública 22 para nada. A porta 22 ssh
é uma das portas mais atacadas. Usar outra porta não deixa você mais seguro, mas diminui a probabilidade de você ver tantos ataques.