Resolve o wildcard.hostname na rede local?

5

Para desenvolvimento web no meu servidor local ( nginx ) Eu gosto de criar vhosts de subdomínio para alguns projetos, principalmente por conveniência e flexibilidade. Por exemplo

server {
    listen       80;
    server_name  project.myHostname;

    root         /that/projects/html/root;
    ....
}

Embora tecnicamente questionável (?) funcione bem ao fazer uma solicitação para http://project.myHostname na mesma máquina . Mas eu gostaria de terminar com uma configuração onde eu poderia acessar http://project.myHostname de qualquer dispositivo conectado na rede local (e somente lá). Assim como funciona quando eu acesso myHostname (porque, eu acho que meu DNS de roteadores resolve isso para o ip local). Mas para outra coisa eu recebo todos os tipos de erros gritando que não existe tal coisa como subdomain.hostname .

A única solução que encontrei até agora é editar manualmente o arquivo hosts para cada dispositivo que possa solicitar esse "endereço". Existe uma solução mais conveniente?

Acho que uma questão importante aqui pode ser a minha má compreensão dos conceitos e relações entre hostname, domain name e tal. Eu tenho lutado com isso por um tempo, mas tenho dificuldade em entender isso.

    
por Arsylum 14.12.2015 / 01:52

2 respostas

4

Você deseja recursos de DNS, portanto, você deve usar o DNS.

  1. Configure um servidor DNS como Bind9 ou Unbound - você deve usar um que seja capaz de atuar como recursivo e autoritativo ao mesmo tempo;
  2. Configure seu computador para usar esse servidor para DNS, em vez do seu roteador;
  3. Para o desempenho, defina seu servidor DNS para usar seus endereços de servidor DNS habituais como "encaminhadores" (para fazer uso de seu cache).

Essa é a parte "preparação".

Agora crie uma nova zona chamada "myHostname". É basicamente o mesmo que hospedar seu próprio domínio, como example.com , para que você possa seguir vários tutoriais existentes.

(Uma zona corresponde a uma área de autoridade - geralmente um TLD ou um domínio de primeiro nível "regular", mas em alguns casos um subdomínio também pode ser sua própria zona.)

Muitas pessoas usam o dnsmasq para esse propósito, mas eu não sei se ele suporta curingas. Além disso, sua configuração é realmente obscura, então vou ignorá-lo.

No Unbound (principalmente um recursor com recursos de hospedagem autoritativa muito limitados), é assim:

server:
    (other settings...)
    local-zone: "myHostname." static
    local-data: "myHostname. A 192.168.1.234"
    local-data: "*.myHostname. A 192.168.1.234"
    (other settings...)

forward-zone:
    name: "."
    forward-addr: 8.8.8.8
    forward-addr: 8.8.4.4

Isso aponta tanto myHostname como <anything>.myHostname para o endereço IP fornecido.

No Bind9 (que é um servidor de autoridade completo), é um pouco mais complexo - você precisa criar um "arquivo de zona" separado:

; /etc/named.conf

options {
    (other settings...)
    forwarders { 8.8.8.8; 8.8.4.4; };
};

zone "myHostname" {
    type master;
    file "/var/named/myHostname.zone";
};

; /var/named/myHostname.zone (example in short form, with $ORIGIN)

$ORIGIN myHostname.
$TTL 1h
@  SOA  localhost. whatever. ( 1 4h 1h 7d 1h )
@  A    192.168.1.234
*  A    192.168.1.234

; /var/named/myHostname.zone (same example but in full form)

$TTL 1h
myHostname.    SOA  localhost. whatever. ( 1 4h 1h 7d 1h )
myHostname.    A    192.168.1.234
*.myHostname.  A    192.168.1.234

( $ORIGIN é automaticamente acrescentado a todos os nomes, se eles não terminarem com um ponto).

    
por 14.12.2015 / 09:08
1

Existem dois problemas aqui.

1) Resolvendo um nome para um IP.

A resposta de Grawity sobre isso está morta. Para isso, você pode editar manualmente o arquivo host em todos os computadores (possível para um dos dois sistemas, mas não para grandes números de sistema).

ou você usa um sistema projetado para isso. Este sistema é o DNS.

O DNS não é totalmente trivial, mas existem muitos guias sobre como configurá-lo para trabalhos limitados. Depois de ter feito isso, você escolhe para qual IP um nome de host será resolvido editando um único arquivo.

1B)

I think a major issue here might be my poor grasping of the concepts and relations between hostname, domain name and such. I've been struggling with this for a while but have a hard time getting my head around it.

Este pode ser um bom ponto para começar então. Sem uma boa base você está construindo em areia movediça. Uma resposta completa sobre isso provavelmente não caberia em um único post. Então procure outro lugar para uma resposta completa.


2) HTTP.

HTTP é um protocolo estranho. Quase todos os protocolos na Internet funcionam sobre TCP / IP. Os datagramas são enviados por TCP ou UDP para um IP.

O HTTP, por outro lado, também inclui o nome do host em suas solicitações. Isso é o que permite que você execute várias páginas da Web a partir de uma combinação IP: porta. Geralmente isso é muito conveniente, mas requer que você envie (e resolva) o host certo. O que significa que você primeiro quer pesquisar no Google e ler uma cartilha sobre DNS.

    
por 14.12.2015 / 09:20