Eu tenho uma máquina Windows com WSL e servidor nginx no WSL rodando nela. O servidor funciona perfeitamente na rede local, e outros dispositivos podem ver o site usando o endereço IP da interface de rede da máquina Windows. Outros dispositivos são principalmente smartphones Android. Minha pergunta é: isso é possível e, em caso afirmativo, como exatamente configurar um servidor DNS local simples rodando em WSL? Eu não gostaria de editar o arquivo hosts em dispositivos clientes (isso é complicado e posso não ter acesso a todos esses dispositivos e o endereço pode mudar) e não quero configurar firmware personalizado no roteador doméstico (esta opção pode ser tão arriscado quanto impossível). Eu poderia configurar o dual boot, mas realmente não gosto dessa ideia. Tenho pouca esperança nessa ideia, porque meu servidor http está funcionando de alguma forma. Ouvi falar do bind9, mas no que me diz respeito, a configuração é ainda mais complicada aqui. Então, basicamente, as perguntas são:
É possível executar essa configuração? Se não, por que exatamente? E quais são as alternativas? Se sim, então como exatamente? Tentei configurar o dnsmasq no WSL, mas funciona apenas na máquina host. Tentei fazer isso com o modo de rede NAT padrão do WSL com interface de proxy de porta escutando nas portas 80 e 53, e também com modo de rede espelhado. As portas 80 TCP e 53 TCP/UDP são abertas no Firewall do Windows. Quero usar o servidor DNS local no WSL. Quero poder usar algum endereço (por exemplo, local.site) para o meu site, não apenas na minha máquina host, mas também em outros dispositivos da minha rede local. Todos os outros endereços devem ser redirecionados para algum serviço DNS (por exemplo, 8.8.8.8) ou para meu roteador doméstico, que por sua vez redireciona essa solicitação para meu ISP, para que a rede possa funcionar normalmente, exceto meu endereço específico (e alguns outros, possivelmente). Meu arquivo /etc/hosts contém o endereço IP da interface de rede da minha máquina host com geração automática desabilitada em /etc/wsl.conf. O arquivo /etc/resolv.conf é gerado automaticamente. Se minha ideia for viável, gostaria de saber detalhes de configuração com detalhes sobre endereços IP, sua localização e detalhes adicionais de configuração, como modo de rede WSL e configuração de firewall. Caso contrário, gostaria de saber o motivo e possíveis alternativas.
Sim, desde que você consiga que os pacotes da porta 53 (TCP e UDP) sejam entregues ao serviço.
Existem muito poucas diferenças entre configurar um servidor HTTP e configurar um servidor DNS no que diz respeito aos requisitos de rede. Você precisa ter o UDP disponível (não apenas o TCP) e não pode escolher o número da porta (é sempre 53), mas fora isso, tudo é igual; um modo de rede VM específico não é necessário.
Não esqueça que seu roteador ainda precisa ser configurado para anunciar o endereço do novo servidor DNS através de DHCP (ou todos os clientes precisam ser configurados manualmente para usá-lo).
Para software, eu começaria com o BIND9 – ele não é mais complexo de configurar do que o Nginx e suporta atuar tanto como um servidor autoritativo (ou seja, hospedando seu domínio local) quanto como um resolvedor (ou seja, procurando consultas para domínios externos) . Ele pode fazer o último encaminhando para outro servidor DNS ou totalmente independente.
Outras opções populares são Unbound (principalmente um resolvedor, mas recentemente ganhou a capacidade de hospedar zonas completas), Dnsmasq (muito comum para pequenas LANs e realmente usado por vários modelos de roteadores domésticos) e Microsoft DNS Server (vem com todas as edições do Windows Server ).
(Tenha cuidado, pois alguns servidores DNS são apenas autoritativos e precisariam ser emparelhados com um resolvedor separado; por exemplo, se você usasse Knot ou PowerDNS para hospedar o domínio, ainda precisaria de BIND/Unbound/Dnsmasq como um "frontend" que 'encaminharia solicitações para Knot ou para 8.8.8.8. É tudo muito parecido com servidores web - alguns podem hospedar sites e ser um proxy reverso, alguns não podem fazer proxy, alguns são exclusivamente para proxy.)
Comecei a verificar as coisas. A porta 53 no UDP foi mencionada na resposta anterior. Claro, como mencionei na minha pergunta, esta porta está aberta no Firewall do Windows. Mas há um problema que descobri recentemente.
Para redirecionar as solicitações da minha máquina host para o WSL, utilizo a interface port proxy, técnica recomendada no Microsoft Post, que escuta as solicitações para a minha máquina host e as redireciona para o meu WSL.
Mas, como descobri agora, essa interface está disponível apenas em TCP. Assim, mesmo que as solicitações possam chegar ao meu host, e mesmo que possam passar pelo firewall, elas não são direcionadas ao meu WSL.
O Windows não tem ideia do que fazer com eles, então ficam sem resposta. Vou tentar usar o modo de rede espelhado, talvez isso ajude.