# 6.2 - DNS, routes et ports réseau

## Vérifier la résolution DNS

```bash
getent hosts example.com
resolvectl query example.com
dig example.com
dig +short example.com
dig @1.1.1.1 example.com
```

`getent` suit la configuration complète du système, y compris `/etc/hosts`, DNS et éventuellement un annuaire. `dig` interroge directement le DNS et fournit davantage de détails.

Afficher la configuration DNS gérée par systemd-resolved :

```bash
resolvectl status
```

Examiner aussi :

```bash
cat /etc/resolv.conf
grep '^hosts:' /etc/nsswitch.conf
```

Ne pas modifier `/etc/resolv.conf` avant de vérifier s'il est généré automatiquement.

## Afficher la table de routage et les voisins

```bash
ip route
ip neigh
```

`ip neigh` remplace les usages courants de l'ancienne commande `arp`.

## Voir les ports en écoute

```bash
ss -tuln
sudo ss -tulpn
ss -tan state established
```

Options : `t` TCP, `u` UDP, `l` écoute, `n` valeurs numériques, `p` processus.

Exemples ciblés :

```bash
sudo ss -ltnp 'sport = :22'
sudo lsof -iTCP:8080 -sTCP:LISTEN
```

## Tester un port distant

```bash
nc -vz serveur.example 22
nc -vz 192.168.1.10 443
```

Pour HTTPS, tester aussi le protocole réel :

```bash
curl -I --connect-timeout 5 https://serveur.example
openssl s_client -connect serveur.example:443 -servername serveur.example </dev/null
```

Un port ouvert ne garantit pas que l'application fonctionne correctement. À l'inverse, un délai peut venir du pare-feu, du routage ou d'un filtrage intermédiaire.

## Ordre de diagnostic conseillé

```text
Interface UP → adresse IP → route par défaut → passerelle → DNS → port → application
```

Commandes correspondantes :

```bash
ip -brief address
ip route
ping -c 2 adresse-passerelle
getent hosts serveur.example
nc -vz serveur.example 443
curl -I https://serveur.example
```

Cette progression permet de séparer un problème réseau d'un problème applicatif au lieu de modifier plusieurs couches en même temps.