De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

"ssh" (cliente) e múltiplas interfaces/adaptadores de rede

Colaboração: Jamenson Ferreira Espindula de Almeida Melo

Data de Publicação: 6 de junho de 2024

Certo dia eu decidi usar o IPv6 para acessar as máquinas na rede "interna" (endereços iniciados com "fe80"). Ocorre que o protocolo IPv6 funciona um pouco diferente do IPv4: no IPv6 é obrigatório informar a interface por meio da qual a conexão será estabelecida.

O problema: a interface é a do computador cliente (solicitante da conexão); o endereço fe80 é o do computador servidor (o destinatário da solicitação de conexão). Essa combinação traz um transtorno imenso quando se deseja acessar o servidor a partir de máquinas diferentes (possivelmente com interfaces de rede de intercomunicação com nomes diferentes) ou até mesmo a partir de uma máquina equipada com mais de uma interface de rede de intercomunicação! No arquivo "config" do software "ssh", é possível configurar essa situação e até gerar uma espécie de descobridor automático. Com a ajuda do então chat generativo "Bard" do Google, atualmente "Gemini, eu cheguei nos seguintes comandos:

Etapa um: Este comando retornará o nome da interface de rede atualmente associada à rota padrão.

if ip route | grep -e "default"; then
    interface=$(ip route | grep default | awk '{print $5}')
fi

Etapa dois: Este comando atribui o valor armazenado na variável exportada "interface" à porção da interface para uso no arquivo de configuração.

if [ "$interface" = "enp3s0" ]; then
    var_interface="enp3s0"
else
    var_interface="wlan0"
fi

Etapa três: incluir estas linhas no arquivo ${HOME}/.ssh/config (adaptar com o endereço do dispositivo remoto destinatário da solicitação de conexão).

Host comp03
    Address 2001:db8::96de:80ff:fef4:720f%%${var_interface}

Com isso, o endereço IPv6 link-local do dispositivo remoto será sempre associado à interface de rede do dispositivo local (solicitante da conexão) que está atualmente em uso.

Jamenson Ferreira Espindula de Almeida Melo
Jaboatão dos Guararapes, Pernambuco, Brasil
Usuário GNU/Linux nº 166197; LFS ID 24492
Key fingerprint: 234D 1914 4224 7C53 BD13 6855 2AE0 25C0 08A8 6180



Veja a relação completa dos artigos de Jamenson Ferreira Espindula de Almeida Melo