Aide-mémoire
Référence rapide pour les opérations courantes dans le système de gestion de réseaux WireGuard.
Configuration de l'environnement
export TOKEN="votre-admin-token"
export API_URL="https://votre-serveur/api/v1"
export NETWORK_ID="votre-network-id"
Groupes
Créer un groupe
curl -X POST "$API_URL/networks/$NETWORK_ID/groups" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "nom-du-groupe", "description": "Description"}'
Lister les groupes
curl -H "Authorization: Bearer $TOKEN" \
"$API_URL/networks/$NETWORK_ID/groups"
Ajouter un peer à un groupe
curl -X POST "$API_URL/networks/$NETWORK_ID/groups/$GROUP_ID/peers/$PEER_ID" \
-H "Authorization: Bearer $TOKEN"
Retirer un peer d'un groupe
curl -X DELETE "$API_URL/networks/$NETWORK_ID/groups/$GROUP_ID/peers/$PEER_ID" \
-H "Authorization: Bearer $TOKEN"
Supprimer un groupe
curl -X DELETE "$API_URL/networks/$NETWORK_ID/groups/$GROUP_ID" \
-H "Authorization: Bearer $TOKEN"
Politiques
Créer une politique
curl -X POST "$API_URL/networks/$NETWORK_ID/policies" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "nom-politique",
"description": "Description",
"rules": [
{
"direction": "output",
"action": "allow",
"target": "0.0.0.0/0",
"target_type": "cidr",
"description": "Autoriser tout sortant"
}
]
}'
Obtenir les templates de politiques
curl -H "Authorization: Bearer $TOKEN" \
"$API_URL/networks/$NETWORK_ID/policies/templates"
Attacher une politique à un groupe
curl -X POST "$API_URL/networks/$NETWORK_ID/groups/$GROUP_ID/policies/$POLICY_ID" \
-H "Authorization: Bearer $TOKEN"
Détacher une politique d'un groupe
curl -X DELETE "$API_URL/networks/$NETWORK_ID/groups/$GROUP_ID/policies/$POLICY_ID" \
-H "Authorization: Bearer $TOKEN"
Ajouter une règle à une politique
curl -X POST "$API_URL/networks/$NETWORK_ID/policies/$POLICY_ID/rules" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"direction": "input",
"action": "allow",
"target": "10.0.0.0/24",
"target_type": "cidr",
"description": "Autoriser depuis le réseau"
}'
Routes
Créer une route
curl -X POST "$API_URL/networks/$NETWORK_ID/routes" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "nom-route",
"description": "Description",
"destination_cidr": "172.31.0.0/16",
"jump_peer_id": "jump-peer-id",
"domain_suffix": "internal"
}'
Lister les routes
curl -H "Authorization: Bearer $TOKEN" \
"$API_URL/networks/$NETWORK_ID/routes"
Attacher une route à un groupe
curl -X POST "$API_URL/networks/$NETWORK_ID/groups/$GROUP_ID/routes/$ROUTE_ID" \
-H "Authorization: Bearer $TOKEN"
Détacher une route d'un groupe
curl -X DELETE "$API_URL/networks/$NETWORK_ID/groups/$GROUP_ID/routes/$ROUTE_ID" \
-H "Authorization: Bearer $TOKEN"
Correspondances DNS
Créer une correspondance DNS
curl -X POST "$API_URL/networks/$NETWORK_ID/routes/$ROUTE_ID/dns" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "nom-serveur",
"ip_address": "172.31.10.50"
}'
Lister les correspondances DNS d'une route
curl -H "Authorization: Bearer $TOKEN" \
"$API_URL/networks/$NETWORK_ID/routes/$ROUTE_ID/dns"
Obtenir tous les enregistrements DNS du réseau
curl -H "Authorization: Bearer $TOKEN" \
"$API_URL/networks/$NETWORK_ID/dns"
Groupes par défaut
Configurer les groupes par défaut
curl -X PUT "$API_URL/networks/$NETWORK_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"default_group_ids": ["group-id-1", "group-id-2"]
}'
Patterns courants
Politique d'encapsulation complète
{
"name": "fully-encapsulated",
"rules": [
{
"direction": "output",
"action": "allow",
"target": "0.0.0.0/0",
"target_type": "cidr"
},
{
"direction": "input",
"action": "deny",
"target": "0.0.0.0/0",
"target_type": "cidr"
}
]
}
Politique d'isolation
{
"name": "isolated",
"rules": [
{
"direction": "input",
"action": "deny",
"target": "0.0.0.0/0",
"target_type": "cidr"
},
{
"direction": "output",
"action": "deny",
"target": "0.0.0.0/0",
"target_type": "cidr"
}
]
}
Politique réseau uniquement
{
"name": "network-only",
"rules": [
{
"direction": "input",
"action": "allow",
"target": "10.0.0.0/24",
"target_type": "cidr"
},
{
"direction": "output",
"action": "allow",
"target": "10.0.0.0/24",
"target_type": "cidr"
}
]
}
Diagnostics
Vérifier les détails d'un groupe
curl -H "Authorization: Bearer $TOKEN" \
"$API_URL/networks/$NETWORK_ID/groups/$GROUP_ID" | jq
Vérifier les politiques d'un groupe
curl -H "Authorization: Bearer $TOKEN" \
"$API_URL/networks/$NETWORK_ID/groups/$GROUP_ID/policies" | jq
Vérifier les routes d'un groupe
curl -H "Authorization: Bearer $TOKEN" \
"$API_URL/networks/$NETWORK_ID/groups/$GROUP_ID/routes" | jq
Vérifier iptables sur le jump peer
ssh jump-peer "sudo iptables -L -n -v"
Vérifier la configuration WireGuard
ssh peer "sudo wg show"
Vérifier la résolution DNS
ssh peer "nslookup server.route.internal"
Vérifier l'état de l'agent
ssh jump-peer "sudo systemctl status wireguard-agent"
Vérifier les logs de l'agent
ssh jump-peer "sudo journalctl -u wireguard-agent -f"
Opérations en masse
Ajouter plusieurs peers à un groupe
for PEER_ID in peer-1 peer-2 peer-3; do
curl -X POST "$API_URL/networks/$NETWORK_ID/groups/$GROUP_ID/peers/$PEER_ID" \
-H "Authorization: Bearer $TOKEN"
done
Créer plusieurs correspondances DNS
declare -A servers=(
["web"]="172.31.10.10"
["app"]="172.31.10.20"
["db"]="172.31.10.30"
)
for name in "${!servers[@]}"; do
curl -X POST "$API_URL/networks/$NETWORK_ID/routes/$ROUTE_ID/dns" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"name\": \"$name\", \"ip_address\": \"${servers[$name]}\"}"
done
Codes d'erreur
200 OK- Succès201 Created- Ressource créée204 No Content- Succès (pas de corps de réponse)400 Bad Request- Requête invalide403 Forbidden- Non autorisé (admin requis)404 Not Found- Ressource introuvable409 Conflict- Nom en doublon ou violation de contrainte500 Internal Server Error- Erreur serveur
Champs des règles de politique
- direction:
inputououtput - action:
allowoudeny - target: IP/CIDR, ID de peer ou ID de groupe
- target_type:
cidr,peerougroup
Format FQDN DNS
nom.nom-route.suffixe-domaine
Exemple : database.aws-vpc.aws.internal