Files
wiki/Catalogue-Self-Hosted/apps/app-goaway.md
T
2026-06-09 18:40:21 +02:00

7.3 KiB


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

# 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 :

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

# 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

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

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 :

mkdir -p goaway/{config,logs}
cd goaway

Créer config/config.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

docker-compose up -d

Configuration système

Configurer GoAway comme DNS par défaut

Linux

# 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

# 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

# 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)

# /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
# 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

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


Dernière mise à jour : 2025-06-07