Para contornar a alocação temporária de endereços IP, você deve examinar o DNS dinâmico. Encontre um registrador de domínios que ofereça suporte a DNS dinâmico, depois registre um nome de domínio e siga as instruções do registrador para configurar atualizações automáticas do seu endereço IP. Isso permitirá que você se conecte ao computador do seu amigo (ou vice-versa) sem ter que se preocupar com o término do endereço IP, pois o nome do domínio sempre apontará para o endereço atribuído no momento.
No lado da LAN, cada um de vocês precisará configurar seu PC para um endereço IP interno estático se você ainda não tiver feito isso. Os detalhes de como fazer dependem da distribuição que você está usando. Por exemplo, o endereço IP interno do meu roteador é 192.168.1.1 e ele atribui endereços no intervalo de 192.168.1.100 a 192.168.1.199 para clientes DHCP na minha rede doméstica. No meu PC Debian, que eu quero poder acessar de fora da LAN, eu configurei meu adaptador de ethernet primário em /etc/network/interfaces
com um endereço estático fora do intervalo de DHCP do roteador, da seguinte forma:
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
Em seguida, nas configurações do firewall do roteador, liguei o encaminhamento de porta para a porta TCP 22 (a porta SSH padrão) para o endereço interno 192.168.1.10 (o endereço estático do meu computador).
Antes de expor essa porta para o mundo, tome algumas providências para atenuar os ataques SSH:
- Não permitir login root no SSH. (
PermitRootLogin no
no seu arquivo de configuração do sshd.) - Permitir conexões apenas para um usuário específico (não raiz e sem privilégios). (
AllowUsers my_user_id your_user_id
em seu arquivo de configuração sshd.) Para isso, você pode especificar seu próprio ID de usuário e seu amigo ou criar uma conta de usuário separada especificamente para esse propósito. O importante é que você não permite conexões de IDs de usuários que normalmente são criados por pacotes principais (por exemplo, mysql, www-data) que podem ter senhas padrão. Esses são alvos fáceis para as crianças de script. - Use uma senha strong nas contas que estão na lista de permissões na etapa acima.
- Alternativamente, olhe para
ssh-keygen
para evitar a necessidade de usar uma senha depois que os dois sistemas forem autenticados entre si. - Instale algum software que bloqueie solicitações de conexão de um determinado host remoto após algumas falhas. Estou usando o fail2ban para essa finalidade e funciona bem.
Agora, você deve conseguir se conectar ao computador um do outro, o que apenas deixa você com o requisito de compartilhar um terminal. É aí que entra GNU Screen . Quem está hospedando a sessão só precisa iniciar um terminal, iniciar a tela e ativar o multiusuário para que o outra pessoa pode participar da sessão. (Consulte a página do manual da tela para obter detalhes sobre como ativar o multiusuário.) Depois disso, um deles ou ambos poderão se desconectar sem interromper a sessão de tela e reconectar-se a ela posteriormente. Mesmo que o ISP altere seu endereço IP (para qualquer um de vocês), matando sua conexão, você ainda pode reconectar-se após a entrada DNS ser atualizada e entrar na mesma sessão novamente.