SSH através do Roteador Doméstico com Port Forwarding [closed]

2

Eu posso SSH para minha caixa de linux de dentro de minha rede doméstica usando seu endereço IP interno como 192.168.10.2. Ou do lado de fora, eu posso conectar através do meu endereço IP externo como 74.23.43.98 através do encaminhamento de porta no meu roteador que eu configurei para encaminhar conexões de entrada na porta 22 para o endereço interno 192.168.10.2. No entanto, não consigo me conectar pelo endereço IP externo se estiver em casa. Isso só funciona de fora da minha rede. Isso é universalmente verdadeiro ou uma peculiaridade do meu roteador Motorola?

Obrigado

    
por benmccann 11.06.2009 / 03:15

3 respostas

9

É um problema geral relacionado ao NAT e às redes locais. Basicamente, quando o roteador reescreve 74.23.43.98 a 192.168.10.2, o endereço de origem não é reescrito, então a máquina de destino envia os pacotes diretamente de volta para a fonte ao invés de passar pelo roteador. Como a máquina de origem não esperava os pacotes de volta de 192.168.10.2 (em vez disso, quer vê-los vindo de 74.23.43.98), descarta esses pacotes e nada de útil é feito.

Se o seu roteador é bom, ele deve ser configurável para fazer a coisa certa (reescrever o endereço de origem para o tráfego NAT interno-para-interno), mas se ele não está fazendo isso por padrão, provavelmente não conta como "qualquer bom". Alternativamente, se é cheio de funcionalidades, você deve ser capaz de configurar uma segunda rede interna para o seu servidor, o que fará com que todo o tráfego passe pelo roteador.

    
por 11.06.2009 / 03:22
1

Deve ser possível (eu fiz isso no meu roteador Linksys), embora eu não saiba exatamente por que você quer fazer isso.

Primeiro, vale a pena esclarecer o que "não é possível conectar" significa. Você pode fazer ping no seu endereço externo e receber uma resposta? O sshd está registrando uma tentativa de conexão? Você pode fazer telnet através da porta encaminhada (para provar que a porta está pelo menos aberta)?

    
por 11.06.2009 / 03:24
0

Tenho várias máquinas que gerencio por trás de firewalls que restringem quais hosts podem usar o SSH na rede. Na maioria das vezes, isso não é um problema, já que normalmente tenho um IP estático quando estou em casa ou no escritório, mas não me causa problemas quando estou em uma rede remota em outro lugar. Minha solução foi simplificar o encaminhamento por meio de um dos meus hosts com um IP estático permitido por meio do firewall usando o ProxyCommand em minha configuração de cliente SSH. Isso funciona para mim usando o OpenSSH e deve funcionar com outros clientes SSH que suportam o ProxyCommand , portanto, verifique a documentação do seu cliente em caso de dúvida. Também requer a instalação de netcat do canivete suíço TCP / IP.

Dentro do meu arquivo ~ / .ssh / config eu tenho a seguinte configuração:

Host InternalHost
    ProxyCommand ssh StaticHost nc %h 22
    HostName InternatHost-FQDN

Eu uso o nome do host abreviado para fazer referência à configuração, permitindo-me usar o nome de domínio totalmente qualificado para alcançá-lo sem usar o encaminhamento. O que essa configuração faz é conectar-se ao StaticHost e executar o netcat para encaminhar para InternalHost-FQDN na porta 22. A menos que você tenha sua configuração de chave de identidade SSH para entrar no StaticHost & InternalHost sem solicitar a senha, você receberá dois prompts para sua entrada de senha. No meu caso, eu tenho minha chave de identidade SSH instalada em ambos e carrego a chave SSH no agente SSH e me encontro logado sem nenhum pedido de senha.

Esta configuração também funcionará para permitir que você transfira arquivos com o InternalHost usando o comando scp da mesma maneira que acessa o shell.

    
por 11.06.2009 / 03:53