--- title: GoAway created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, dns, proxy, security, golang, ad-block, auto-hebergement] confidence: high contested: false sources: [https://selfh.st/apps/?tag=DNS, https://github.com/leprosus/golang-dns-proxy] --- # GoAway GoAway est un proxy DNS simple et flexible écrit en Go, doté de capacités de blocage de publicités et de contenu indésirable. ## Informations Générales | Attribut | Valeur | |----------|--------| | **Nom** | GoAway | | **Slug** | goaway | | **Description** | Proxy DNS simple et flexible avec capacités de blocage de publicités | | **Stars** | 711 | | **Repository** | https://github.com/leprosus/golang-dns-proxy | | **Licence** | MIT | | **Tags** | DNS, Security | ## Présentation GoAway est un proxy DNS minimaliste développé en Go qui permet de filtrer les requêtes DNS en bloquant les domaines associés aux publicités, trackers et autres contenus indésirables. Sa simplicité d'installation et de configuration en fait une solution légère pour sécuriser votre réseau domestique ou professionnel. ### Fonctionnalités principales - **Proxy DNS performant** : Résolution DNS rapide avec cache intégré - **Blocage de publicités** : Filtrage basé sur des listes de blocage personnalisables - **Léger et rapide** : Développé en Go pour une empreinte mémoire minimale - **Configuration simple** : Fichier de configuration YAML intuitif - **Logs détaillés** : Monitoring des requêtes et blocages - **Support des listes noires/blanches** : Flexibilité dans la gestion des domaines ## Installation ### Méthode 1 : Installation binaire #### Prérequis - Go 1.16 ou supérieur (pour la compilation) - Accès root ou sudo (pour le port 53) #### Compilation depuis les sources ```bash # Cloner le repository git clone https://github.com/leprosus/golang-dns-proxy.git cd golang-dns-proxy # Compiler l'application go build -o goaway main.go # Rendre exécutable chmod +x goaway ``` #### Configuration Créer un fichier `config.yaml` : ```yaml server: host: "0.0.0.0" port: 53 upstream: - "8.8.8.8:53" - "8.8.4.4:53" blacklist: - "https://someonewhocares.org/hosts/zero/hosts" - "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts" whitelist: - "localhost" - "localhost.localdomain" log: level: "info" file: "/var/log/goaway.log" ``` #### Lancement ```bash # Lancer avec sudo pour le port 53 sudo ./goaway -config config.yaml # Ou utiliser un port non privilégié (ex: 5353) et rediriger ./goaway -config config.yaml ``` ### Méthode 2 : Docker #### Dockerfile simple ```dockerfile FROM golang:alpine AS builder RUN apk add --no-cache git WORKDIR /app RUN git clone https://github.com/leprosus/golang-dns-proxy.git . RUN go build -o goaway main.go FROM alpine:latest RUN apk add --no-cache ca-certificates WORKDIR /app COPY --from=builder /app/goaway /app/ EXPOSE 53/tcp 53/udp ENTRYPOINT ["./goaway"] CMD ["-config", "/app/config/config.yaml"] ``` #### Docker Compose ```yaml version: '3.8' services: goaway: build: context: . dockerfile: Dockerfile container_name: goaway restart: unless-stopped ports: - "53:53/tcp" - "53:53/udp" volumes: - ./config:/app/config:ro - ./logs:/var/log environment: - TZ=Europe/Paris networks: - goaway-network networks: goaway-network: driver: bridge ``` #### Configuration Docker Créer la structure de dossiers : ```bash mkdir -p goaway/{config,logs} cd goaway ``` Créer `config/config.yaml` : ```yaml server: host: "0.0.0.0" port: 53 upstream: - "1.1.1.1:53" - "1.0.0.1:53" blacklist: - "https://someonewhocares.org/hosts/zero/hosts" - "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts" whitelist: - "localhost" log: level: "info" file: "/var/log/goaway.log" ``` #### Lancement Docker Compose ```bash docker-compose up -d ``` ## Configuration système ### Configurer GoAway comme DNS par défaut #### Linux ```bash # Modifier /etc/resolv.conf sudo sed -i 's/nameserver .*/nameserver 127.0.0.1/' /etc/resolv.conf # Ou via systemd-resolved sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved ``` #### Windows ```powershell # Définir GoAway comme DNS via PowerShell (admin) Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses ("127.0.0.1") ``` #### Router Configurer votre routeur pour utiliser l'IP du serveur GoAway comme DNS primaire. ## Commandes utiles ### Vérifier le fonctionnement ```bash # Tester la résolution DNS dig @127.0.0.1 google.com # Vérifier qu'un domaine est bloqué dig @127.0.0.1 doubleclick.net ``` ### Gestion du service (systemd) ```ini # /etc/systemd/system/goaway.service [Unit] Description=GoAway DNS Proxy After=network.target [Service] Type=simple User=root WorkingDirectory=/opt/goaway ExecStart=/opt/goaway/goaway -config /opt/goaway/config.yaml Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target ``` ```bash # Activer et démarrer le service sudo systemctl enable goaway sudo systemctl start goaway sudo systemctl status goaway ``` ## Alternatives | Application | Description | Différence principale | |-------------|-------------|----------------------| | **Blocky** | Proxy DNS avec blocage d'annonces | Plus de fonctionnalités avancées, interface web | | **AdGuard Home** | Solution DNS complète | Interface web riche, statistiques détaillées | | **Pi-hole** | Bloqueur de publicités DNS | Écosystème mature, grande communauté | ### 🔗 Pages Liées - [[app-pihole]] — Le bloqueur DNS de référence - [[app-blocky]] — Proxy DNS léger en Go, similaire - [[app-adguard-home]] — Alternative avec UI web complète - [[cat-dns]] — Toutes les apps DNS du catalogue - [[cat-ad-block]] — Toutes les apps de blocage de pub ## Points forts et limites ### ✅ Points forts - Très léger et rapide (Go natif) - Configuration YAML simple - Support des listes de blocage distantes - Logs clairs et détaillés - Faible consommation de ressources ### ❌ Limites - Pas d'interface web intégrée - Configuration manuelle des listes - Moins de fonctionnalités que des solutions comme Pi-hole ou AdGuard - Documentation limitée ## Sécurité ### Bonnes pratiques - **Mises à jour régulières** : Recompiler périodiquement depuis le repo - **Listes de blocage** : Utiliser des sources fiables et maintenues - **Logs** : Surveiller les requêtes bloquées et les erreurs - **Firewall** : Restreindre l'accès au port 53 aux réseaux de confiance ## Dépannage ### Problèmes courants | Problème | Cause probable | Solution | |----------|---------------|----------| | "bind: permission denied" | Port 53 nécessite les privilèges root | Lancer avec `sudo` ou utiliser un port > 1024 | | Résolution DNS lente | Upstream lent ou indisponible | Changer les serveurs upstream dans la config | | Domaines légitimes bloqués | Faux positifs dans les listes | Ajouter à la whitelist | | Logs absents | Chemin incorrect | Vérifier les permissions du dossier `/var/log` | ## Ressources - **Repository GitHub** : https://github.com/leprosus/golang-dns-proxy - **Issues** : https://github.com/leprosus/golang-dns-proxy/issues - **Listes de blocage recommandées** : - StevenBlack/hosts : https://github.com/StevenBlack/hosts - someone who cares : https://someonewhocares.org/hosts/ --- *Dernière mise à jour : 2025-06-07*