Ir para o conteúdo

Instalação

Há três formas de instalar DNSao:

Depois de terminar a instalação, você pode configurar seus dispositivos (ou, idealmente, seu roteador) para usar DNSao como seu servidor de DNS. Acesse a porta web definida no aplication.yml para ter acesso ao dashboard de métricas.

Instalação por script

A única dependência de DNSao é a presença de uma jdk versão 17 ou maior.

Se o seu servidor for debian based:

apt-get update -y
apt-get install -y openjdk-17-jre-headless

Se for red hat:

dnf install -y java-17-openjdk-headless

outras opções podem ser encontradas no próprio site da openjdk. Após a instalação da jdk, a máquina estará preparada para rodar DNSao.

Antes de instalar, visite o script de instalação para revisar e confirmar o que está sendo executado. Confirme também que não há nenhum processo escutando a porta 53.

sudo ss -tulpn | grep :53

Esse comando deve retornar vazio.

para executar o script de instalação, basta rodar o comando abaixo:

curl -sSL https://raw.githubusercontent.com/vitallan/dnsao/refs/tags/prod/scripts/install.sh | bash

No próprio servidor, se o comando dig estiver disponível, você pode validar a instalação com:

dig debian.org @127.0.0.1

O resultado deve ser algo parecido com:

; <<>> DiG 9.20.11-4-Debian <<>> debian.org @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4434
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;debian.org.                    IN      A

;; ANSWER SECTION:
debian.org.             279     IN      A       151.101.2.132
debian.org.             279     IN      A       151.101.130.132
debian.org.             279     IN      A       151.101.194.132
debian.org.             279     IN      A       151.101.66.132

;; Query time: 7 msec
;; SERVER: 192.168.150.150#53(192.168.150.150) (UDP)
;; WHEN: Wed Jan 05 17:38:05 -03 2020
;; MSG SIZE  rcvd: 103

Os logs da aplicação deverão estar disponíveis em

tail -f /var/log/dnsao/dnsao.log

Você pode então acessar http://IP.DO.SEU.SERVIDOR:8044 e analisar o painel de métricas de DNSao. Usando esse método fará DNSao executar como um serviço systemctl, então comandos systemctl deverão ser usados para a gestão do serviço:

sudo systemctl stop dnsao
sudo systemctl enable dnsao
sudo systemctl start dnsao

Para desinstalar, voce pode usar o script de desinstalação.

Instalação via Docker

Você pode usar docker para rodar DNSao também. Confirme que não há nada rodando na porta 53:

sudo ss -tulpn | grep :53

Esse comando não deve retornar nada. Então você pode usar docker compose:

version: "3.8"

services:
  dnsao:
    image: ghcr.io/vitallan/dnsao:latest
    container_name: dnsao
    restart: unless-stopped

    ports:
      - "53:8053/tcp"
      - "53:8053/udp"
      - "8044:8044"

    volumes:
      - /your/local/volume:/etc/dnsao

E executar docker compose up -d.

Se /your/local/volume estiver vazio, DNSao irá fazer o download dos arquivos application.yml e logback.xml padrão para docker no volume montado e os usará.

Instalação manual

Você também pode baixar o último jar disponibilizado e realizar as configurações manualmente. Lembrando que o DNSao precisa de uma configuração de aplicação e um arquivo de configuração para os logs. Um exemplo de execução padrão seria o abaixo:

java -Dconfig=/etc/dnsao/application.yml -Dlogback.configurationFile=/etc/dnsao/logback.xml -jar dnsao.jar

Lembrando que, em linux, portas abaixo de 1024 precisam de permissão de root para rodar sem ser por serviço. Considere isso quando for executar manualmente o servidor.

Outro detalhe importante: por ser uma aplicação java, é recomendado limitar os tamanhos de memória usados, para evitar consumo exagerado. Em seu script de instalação padrão, DNSao é executado com as seguintes flags:

  • -Xms128m -Xmx128m : limita o tamanho usado pela heap para 128 mb
  • -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m : limita o tamanho usado pelo metaspace
  • -Xss512k : limita o tamanho máximo da stack para cada thread

O comando final fica então:

java -Dconfig=/etc/dnsao/application.yml -Dlogback.configurationFile=/etc/dnsao/logback.xml -Xms128m -Xmx128m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Xss512k  -jar /etc/dnsao/dnsao.jar

Depois de instalar

Depois de configurar e iniciar o servidor com algum dos métodos acima, você precisará configurar seu roteador para servir para seus clientes DHCP para usarem DNSao como servidor de DNS, o que fará os demais dispositivos da sua rede o usarem automaticamente.

Tal configuração depende de que tipo de roteador é usado.

Outra forma de usar DNSao como servidor de DNS é configurar em cada dispositivo individualmente. Pode não ser o ideal para ambientes com muitos dispositivos, mas pode ser feito, e é especialmente útil para testar a instalação antes de apontar todos juntos.

Instruções para windows

Instruções para Linux