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

321 lines
7.3 KiB
Markdown

---
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*