# DNS

Il Domain Name System (DNS) è la *guida telefonica* di Internet. 

Ogni dispositivo collegato a Internet è dotato di un indirizzo IP univoco, 
che altre macchine usano per trovarlo. I server DNS eliminano la necessità 
per gli esseri umani di memorizzare gli indirizzi IP, come 192.168.1.1 
(in IPv4), o i più recenti e complessi indirizzi IP alfanumerici, 
come `2400:cb00:2048:1::c629:d7a2` (in IPv6).

## Modificare i DNS su Debian

DNS alternativi possono essere impostati nel file `/etc/resolv.conf`, che però viene continuamente sovrascritto dal sistema.

Per ovviare a questo comportamento e rendere un file non modificale, sovrascrivibile o cancellabile da alcuno, incluso `root`, è
necessario modificare gli attributi di quest'ultimo col comando:

```bash
sudo chattr +i /path/to/file
```
Per rendere nuovamente il file modificabile:


```bash
sudo chattr -i /path/to/file
```

### resolv.conf

Semplicemente, basta aggiungere l'indirizzo IP (o gli indirizzi) del server DNS:

```bash
> cat /etc/resolv.conf

# Generated by NetworkManager
# nameserver 192.168.145.200
nameserver 5.2.75.75
nameserver 1.1.1.1
```
Fatto questo, bisogna rendere immodificabile il file e riavviare NetworkManager:

```bash
sudo chattrr +i /etc/resolv.conf

sudo systemctl restart NetworkManager.service
```

## resolvconf

Installare il seguente pacchetto e abilitarlo:

```bash
apt install resolvconf

systemctl enable --now resolvconf.service
systemctl status resolvconf.service
```

Modificare il file di configurazione, aggiungendo i dns:

```bash
nano /etc/resolvconf/resolv.conf.d/head

nameserver 5.2.75.75
nameserver 1.1.1.1
```

Infine, aggiornare il file `resolv.conf` coi comandi:

```bash
resolvconf --enable-updates
resolvconf -u
```

## Impostare NextDNS da browser

È possibile anche modificare i DNS direttamente dal browser, utilizzando **DNS over HTTPS** (**DoH**): l'obiettivo principale del protocollo è di aumentare la privacy dell'utente e la sicurezza prevenendo intercettazioni e manipolazioni dei dati del DNS attraverso attacchi *man in the middle*.

NextDNS permette di bloccare le pubblicità e i traccianti. È completamente personalizzabile, aggiungendo liste di blocco di host e molto altro. Maggiori informazioni qui: [NextDNS](https://nextdns.io/)

### Firefox

1. Opzioni.
2. Impostazioni di rete > Impostazioni.
3. Selezionare `Attiva DNS over HTTPS`.
4. Selezionare Personalizzato, inserire `https://dns.nextdns.io/ID_personale/Firefox%20identificazione` e cliccare su OK.
5. In `about:config` impostare `network.trr.mode` a 3.

### Brave

1. Impostazioni.
2. Nella sezione `Privacy e sicurezza` > Sicurezza.
3. Nella sezione Avanzate, abilitare `Usa DNS sicuri`.
4. Selezionare Personalizzato, quindi inserire `https://dns.nextdns.io/ID_personale/Brave%20identificazione`.

Per esempio: `https://dns.nextdns.io/12ff34/Firefox%20di%20Mario`

## Collegamenti

- [https://www.cloudflare.com/it-it/learning/dns/what-is-dns/](https://www.cloudflare.com/it-it/learning/dns/what-is-dns/)
- [https://it.wikipedia.org/wiki/Domain_Name_System](https://it.wikipedia.org/wiki/Domain_Name_System)
- [https://www.lealternative.net/2020/04/29/alternative-ai-dns-di-google/](https://www.lealternative.net/2020/04/29/alternative-ai-dns-di-google/)
- [https://www.lealternative.net/2022/07/13/quali-dns-privati-utilizzare/](https://www.lealternative.net/2022/07/13/quali-dns-privati-utilizzare/)
- [https://wiki.debian.org/resolv.conf](https://wiki.debian.org/resolv.conf)
- [https://www.lealternative.net/2022/11/02/nextdns/](https://www.lealternative.net/2022/11/02/nextdns/)
- [https://my.nextdns.io/](https://my.nextdns.io/)
- [https://it.linux-console.net/?p=520#gsc.tab=0](https://it.linux-console.net/?p=520#gsc.tab=0)
- [https://www.ionos.com/digitalguide/server/configuration/how-to-set-dns-on-debian/](https://www.ionos.com/digitalguide/server/configuration/how-to-set-dns-on-debian/)
