Tenho dois computadores na minha rede doméstica: um Raspberry Pi 4 e um laptop Windows. Meu Raspberry Pi está executando o Raspbian padrão que o acompanha. Estou tentando definir um nome de host para meu Raspberry Pi para que ele possa ser acessado na rede com esse nome de host.
O Raspberry Pi está em 192.168.0.40
, e o laptop Windows está em 192.168.0.140
.
Alterei o /etc/hostname
arquivo de raspberrypi
para phobos
, que é o nome do host que desejo usar.
/etc/resolv.conf
se parece com isso:
1 # Generated by resolvconf
2 domain cable.rcn.com
3 nameserver 192.168.0.1
/etc/dhcp/dhclient.conf
se parece com isso:
1 # Configuration file for /sbin/dhclient.
2 #
3 # This is a sample configuration file for dhclient. See dhclient.conf's
4 # man page for more information about the syntax of this file
5 # and a more comprehensive list of the parameters understood by
6 # dhclient.
7 #
8 # Normally, if the DHCP server provides reasonable information and does
9 # not leave anything out (like the domain name, for example), then
10 # few changes must be made to this file, if any.
11 #
12
13 option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
14
15 send host-name = gethostname();
16 request subnet-mask, broadcast-address, time-offset, routers,
17 domain-name, domain-name-servers, domain-search, host-name,
18 dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
19 netbios-name-servers, netbios-scope, interface-mtu,
20 rfc3442-classless-static-routes, ntp-servers;
O hostname
comando retorna phobos
.
Quando tento fazer ping no Raspberry Pi do meu laptop Windows, recebo:
PS C:\Users\Leo> ping phobos
Ping request could not find host phobos. Please check the name and try again.
No entanto, quando faço ping para raspberrypi
, que foi o nome do host original que encontrei no /etc/hostname
arquivo, recebo:
PS C:\Users\Leo> ping raspberrypi
Pinging raspberrypi.cable.rcn.com [192.168.0.40] with 32 bytes of data:
Reply from 192.168.0.40: bytes=32 time=6ms TTL=64
Reply from 192.168.0.40: bytes=32 time=5ms TTL=64
Reply from 192.168.0.40: bytes=32 time=6ms TTL=64
Reply from 192.168.0.40: bytes=32 time=4ms TTL=64
Ping statistics for 192.168.0.40:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 4ms, Maximum = 6ms, Average = 5ms
Isso me faz pensar que meu roteador (um Arris DG3450A) não está atualizando o nome do host do Raspberry Pi nas configurações de DHCP, mas não sei como notificá-lo para fazer isso. Qualquer sugestão seria apreciada. Informe-me se houver alguma outra informação que eu possa fornecer.
A resolução de nomes de host em redes IP sempre foi um tópico mais complicado e menos intuitivo do que qualquer pessoa novata poderia esperar.
Definir o nome do seu próprio host localmente para esse host não significa nada para mais ninguém na rede. Você não pode esperar que essa mudança de nome seja anunciada automaticamente na rede ou registrada automaticamente em qualquer servidor de nomes por meio de qualquer um dos inúmeros protocolos de descoberta de serviços e resolução de nomes que foram usados ao longo do tempo. Portanto, você deve decidir por si mesmo de que maneira deseja que o nome do seu host seja descoberto e resolvido por outros dispositivos na rede e encontrar maneiras de fazer isso acontecer.
Se o seu Raspberry Pi estiver executando uma implementação de DNS multicast (mDNS), como Avahi, então se o daemon Avahi souber procurar seu nome de host
/etc/hostname
por meio dohostname(1)
comando, seu dispositivo deverá aparecer em sua rede como hostname.local (por exemplo, phobos .local).Se você não estiver usando mDNS em sua rede, pode ser necessário atualizar manualmente seu servidor DNS local para ter uma entrada para phobos.example.com (não use .local; deixe .local para ZeroConf/mDNS).
DHCP trata de clientes que solicitam definições de configuração de servidores, não de clientes que enviam informações como nomes de host para o servidor. E nunca é usado para resolução de nome de host para endereço IP. O protocolo DHCP fornece uma maneira para os clientes DHCP informarem ao servidor DHCP o que o cliente considera ser seu próprio nome de host, mas é principalmente informativo, e a maioria dos servidores DHCP não contém um mecanismo para enviar esse nome de host definido pelo cliente para qualquer servidores DNS próximos ou anunciá-lo por meio de qualquer outro protocolo de descoberta de serviço ou resolução de nomes. Mas é possível que o seu dispositivo de gateway doméstico (seu Arris DG3450A) tenha algum tipo de integração entre o servidor DHCP incorporado e o serviço DNS incorporado.
Quando se trata de dispositivos clientes registrando seus próprios nomes de host autodefinidos em servidores DNS, existem soluções baseadas em protocolos de rastreamento de padrões adequados, como DNS UPDATE (RFC 2136), e também soluções de mercado de fato menos padronizadas, mas talvez mais difundidas, como DNS dinâmico (DDNS).
Não acho que você tenha dito o que está usando como servidor DNS, mas talvez queira ver se ele suporta DNS UPDATE ou DDNS e ver se o seu ambiente Raspbian tem um cliente para algum desses protocolos.
Existe uma maneira operada manualmente de substituir IPs locais por nomes de host ...
Em cada máquina local, edite seu
/etc/hosts
-file(alt.
C:\Windows\System32\etc\hosts
se bem me lembro) .Adicione uma linha informando, por exemplo
129.168.0.40 pi4 raspberry4 rp4 hobby play
e você poderá usar qualquer um desses nomes no lugar do IP.
Advertência notável; se você alterar o IP, precisará alterá-lo manualmente em cada instância ativa do arquivo. ou seja, mantê-lo em um único "servidor" (com um sshd em execução) e
scp
em outras máquinas?(Existem meios para executar um script na inicialização do [Shell], fora do escopo aqui)
Dica Linux: sudo para apenas um comando na pasta perdida + encontrada, não mais
Idéia: Crie um script que seja executado em todos os computadores locais e
scp
's /etc/hostname para o servidor sshd, que poderá anexar todos eles juntos e fornecer como arquivo de hosts locais.Para acessar dispositivos por
hostname
, o roteador e os dispositivos clientes devem estar todos configurados corretamente para isso, caso contrário, o roteador não tem ideia de como rotear o tráfego.Ao acessar dispositivos por nome de host, eles são acessados no final do roteador via
<hostname>.<LocalDomain>
, que não é configurado via DHCP, portanto deve-se fazer o seguinte:hostname
:.local
ou.lan
, mas pode ser personalizado para qualquer coisaDomínio Local é o nome do Grupo de Trabalho e é definido por meio de:
+ R→ Abrir:
SystemPropertiesAdvanced
→ OK<LocalDomain>
→ OK → OK+ R→ Abrir:
powershell
→ Ctrl+ Shift+OKAdd-Computer
ouwmic
pode ser usado:Defina
hostname
a entrada do cliente em%WinDir%\System32\etc\hosts
:Reinício
definido como domínio local do roteador (varia de acordo com a distribuição) → Reinicializar