7.3 KiB
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
- 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