Aqui estão os detalhes da máquina que eu quero acessar usando o nome do host:
$ hostname
hostname
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 hostname.company.local hostname
É uma instalação padrão do Debian 6 (Squeeze), então eu não brinquei com nada ainda.
Isto é o que eu recebo de uma máquina (executando o Debian Unstable) tentando acessar a máquina acima:
$ ping hostname
ping: unknown host hostname
$ ping hostname.company.local
ping: unknown host hostname.company.local
$ cat /etc/resolv.conf
nameserver 192.168.2.21
nameserver 192.168.2.51
search company.local
networking
tshepang
fonte
fonte
ping
) ou em uma máquina que o cliente consulta. O que é o sistema operacional no cliente? Qual é a sua configuração de DNS?ping
e/etc/hosts
mas não sobre DNS de qualquer maneira?Respostas:
Na Internet, incluindo redes locais, as máquinas se chamam por endereços IP . Para acessar a máquina B a partir da máquina A, usando o nome da máquina B, a máquina A precisa ter uma maneira de mapear o nome de B para seu endereço IP. Existem três maneiras de declarar nomes de máquinas em A:
unix.stackexchange.com
.Existem muitas maneiras pelas quais elas podem funcionar na prática; é impossível cobrir todos eles. Nesta resposta, descreverei algumas situações comuns.
Arquivo Hosts
O método do arquivo hosts tem a vantagem de não exigir nenhum método especial. Pode ser complicado se você tiver várias máquinas, porque é necessário atualizar todas as máquinas quando o nome de uma máquina mudar. Não é adequado se o endereço IP de B for atribuído dinamicamente (para que você obtenha um diferente sempre que se conectar à rede).
Um arquivo hosts é uma lista simples de linhas que mapeiam nomes para endereços IP. Se parece com isso:
Em sistemas unix, o arquivo hosts é
/etc/hosts
. No Windows, éc:\windows\system32\drivers\etc\hosts
. Quase todos os sistemas operacionais que você pode conectar à Internet têm um arquivo semelhante; A Wikipedia tem uma lista .Para adicionar uma entrada para B no arquivo de hosts de A:
Determine o endereço IP de B. Em B, execute o comando
ifconfig
(se o comando não for encontrado, tente/sbin/ifconfig
). A saída conterá linhas como esta:Neste exemplo, o endereço IP de B é 10.3.1.42. Se houver várias
inet addr:
linhas, escolha aquela que corresponda à sua placa de rede, nunca alo
entrada ou um túnel ou entrada virtual./etc/hosts
como superusuário; consulte Como executo um comando como administrador do sistema (raiz) .DHCP + DNS em redes domésticas ou de pequenos escritórios
Este método é de longe o mais simples se você tiver o equipamento necessário. Você só precisa configurar um dispositivo e todos os seus computadores saberão os nomes um do outro. Esse método pressupõe que seus computadores obtenham seus endereços IP por DHCP , que é um método para os computadores recuperarem automaticamente um endereço IP quando se conectam à rede. Se você não sabe o que é o DHCP, eles provavelmente sabem.
Se sua rede possui um roteador doméstico , é o melhor lugar para configurar nomes para máquinas conectadas a esse roteador. Primeiro, você precisa descobrir o endereço MAC de B. Cada dispositivo de rede possui um endereço MAC exclusivo. Em B, execute o comando
ifconfig -a
(se o comando não for encontrado, tente/sbin/ifconfig -a
). A saída conterá linhas como esta:Neste exemplo, o endereço MAC é
01:23:45:67:89:ab
. Você deve escolher a linha HWaddr que corresponde à porta de rede conectada ao roteador através de um cabo (ou a placa wifi, se você estiver conectado via wifi). Se você possui várias entradas e não sabe qual é qual, conecte o cabo e veja qual dispositivo de rede recebe um endereço IP (inet addr
linha logo abaixo).Agora, na interface da web do seu roteador, procure uma configuração como “DHCP”. O nome e o local da configuração dependem completamente do modelo do roteador, mas a maioria possui um conjunto semelhante de configurações básicas. Aqui está o que parece em um firmware Tomato :
Digite o endereço MAC, um endereço IP e o nome desejado. Você pode escolher qualquer endereço IP no intervalo de endereços da sua rede local. A maioria dos roteadores domésticos é pré-configurada para um intervalo de endereços do formato 192.168. x . y ou 10. x . y . z . Por exemplo, no roteador Tomato mostrado acima, na guia "Rede", há uma configuração de "endereço IP do roteador" com o valor 10.3.0.1 e uma configuração de "máscara de sub-rede" com o valor 255.255.255.0, o que significa que os computadores em a rede local deve ter um endereço no formato 10.3.0. z . Há também um intervalo de endereços para endereços DHCP atribuídos automaticamente (10.3.0.129-10.3.0.254); para o seu endereço DHCP atribuído manualmente, escolha um que não esteja nesse intervalo.
Agora conecte B à rede, e ele deverá obter o endereço IP especificado e poderá ser acessado pelo nome especificado em qualquer máquina da rede.
Crie seu próprio servidor DNS com o Dnsmasq
Se você não tiver um roteador doméstico capaz, poderá configurar a mesma funcionalidade em qualquer máquina Linux. Vou explicar como usar o Dnsmasq para configurar o DNS . Existem muitos outros programas similares; Eu escolhi o Dnsmasq porque é fácil de configurar e leve (é o que o roteador Tomato ilustrado acima usa, por exemplo). O Dnsmasq está disponível na maioria das distribuições Linux e BSD para PCs, servidores e equipamentos de rede.
Escolha um computador que esteja sempre ligado, que tenha um endereço IP estático e que esteja executando algum tipo de Linux ou BSD; vamos chamá-lo de S (para servidor). Em S, instale o
dnsmasq
pacote (se ainda não estiver lá). Abaixo, assumirei que o arquivo de configuração é/etc/dnsmasq.conf
; a localização pode variar em algumas distribuições. Agora você precisa fazer várias coisas./etc/hosts
(consulte a seção “Arquivo Hosts” acima) e verifique se/etc/dnsmasq.conf
ano-hosts
diretiva não tem comentários. (As linhas que começam com a#
são comentadas.) Você pode colocar os nomes em um arquivo diferente; Se fizer isso, coloque uma linhaaddn-hosts=/path/to/hosts/file
em/etc/dnsmasq.conf
.Diga ao Dnsmasq como obter endereços IP para nomes de máquinas na Internet.
resolvconf
pacote. Nos casos mais comuns, tudo funcionará imediatamente.Se o administrador da rede ou o provedor de serviços de Internet forneceu os endereços dos servidores DNS, insira-os
/etc/dnsmasq.conf
, por exemplo:Se você não souber quais são suas configurações atuais de DNS, consulte o arquivo
/etc/resolv.conf
. Se você vê uma linha comonameserver 8.8.8.8
, colocar uma linhaserver=8.8.8.8
no/etc/dnsmasq.conf
. Depois de alterar/etc/dnsmasq.conf
, reinicie o Dnsmasq. O comando para fazer isso depende da distribuição; possibilidades típicas incluemrestart dnsmasq
ou/etc/init.d/dnsmasq restart
./etc/resolv.conf
(como root), remova todas asnameserver
linhas e coloque-asnameserver 127.0.0.1
./etc/resolv.conf
pode ser abaixo do ideal se você instalou oresolvconf
pacote com a rede em funcionamento. Certifique-se de que os arquivosbase
,head
etail
no/etc/resolvconf/resolv.conf.d/
diretório não contêm quaisquernameserver
entradas, em seguida, executarresolvconf -u
(como root)./etc/resolv.conf
e substitua todas asnameserver
linhas por uma únicanameserver 10.3.0.2
onde 10.3.0.2 seja o endereço IP de S (veja acima para saber como descobrir o endereço IP de S).Você também pode usar o Dnsmasq como um servidor DHCP , para que as máquinas possam obter o endereço correspondente ao seu nome automaticamente. Isso está além do escopo desta resposta; consulte a documentação do Dnsmasq (não é difícil). Observe que só pode haver um único servidor DHCP em uma determinada rede local (a definição exata de rede local está além do escopo desta resposta).
Nomes na Internet global
Até agora, assumi uma rede local. E se você quiser dar um nome a uma máquina que está em um canto diferente do mundo? Você ainda pode usar qualquer uma das técnicas acima, exceto que as partes que envolvem o DHCP são aplicáveis apenas em uma rede local. Como alternativa, se suas máquinas tiverem endereços IP públicos, você poderá registrar seu próprio nome público. (Você também pode atribuir um endereço IP privado a um nome público; é menos comum e menos útil, mas não há dificuldade técnica.)
Obtendo seu próprio nome de domínio
Você pode obter seu próprio nome de domínio e atribuir endereços IP a nomes de host dentro desse domínio. Você precisa registrar o nome de domínio com um provedor de nomes de domínio; isso normalmente custa de US $ 10 a US $ 15 / ano (para os domínios mais baratos). Use a interface da web do provedor de nomes de domínio para atribuir endereços a nomes de host.
DNS dinâmico
Se suas máquinas tiverem um endereço IP dinâmico, você poderá usar o protocolo DNS dinâmico para atualizar o endereço IP associado ao nome da máquina quando o endereço for alterado. Nem todos os provedores de nomes de domínio oferecem suporte ao DNS dinâmico; portanto, compre antes de comprar. Para uso pessoal, o No-IP fornece um serviço DNS dinâmico gratuito, se você usar seus próprios domínios (por exemplo
example.ddns.net
).fonte
Use DNS Multicast (mDNS). Este é um protocolo de configuração zero que funciona em sub-redes da LAN. Não é necessário servidor. Usa o
.local
TLD (que é o que você já usa).Porque você está perguntando, tudo o resto parece exagero. Se não fosse, então você provavelmente não estaria perguntando.
fonte
avahi
pacote (s). Você pode consultar sua rede via,avahi-browse -alr
por exemplo.e
fonte
service restart dhcpd
). A segunda parte seria feita no cliente, e na maioria das distros agora deve ser executada comoservice networking restart
.Os computadores não sabem magicamente quais nomes de host pertencem a quais endereços IP. Mesmo no host local, há algum tipo de pesquisa envolvida.
Você precisará configurar seus outros sistemas para usar algum tipo de serviço de pesquisa de nome. Isso pode estar
/etc/hosts
no servidor DNS, ldap, nsswitch ou DNS normal. Usobind
e insiro todas as máquinas locais em um domínio local e, em seguida, ele serve o DNS para esse site.fonte