Outils pour utilisateurs

Outils du site


reseau:wireguard

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
reseau:wireguard [2024/08/17 00:04] – [Configuration côté client] alarigreseau:wireguard [2024/08/17 13:58] (Version actuelle) alarig
Ligne 24: Ligne 24:
 PublicKey = YtTa180Wgh3HiV4iVxoFL8vb3E+NueGpv4BLGuN3Zgs= PublicKey = YtTa180Wgh3HiV4iVxoFL8vb3E+NueGpv4BLGuN3Zgs=
 AllowedIPs = 89.234.186.78/32, 2a00:5884:8316::/48 AllowedIPs = 89.234.186.78/32, 2a00:5884:8316::/48
-PersistentKeepalive = 25 
 </file> </file>
  
Ligne 60: Ligne 59:
 rc-service ip6tables save rc-service ip6tables save
 ``` ```
 +===== Debug =====
 +
 +Wireguard étant un module kernel, il faut jouer avec le debug du kernel :
 +```
 +echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control # activation
 +echo module wireguard -p > /sys/kernel/debug/dynamic_debug/control # desactivation
 +```
 +
 +Ensuite ça se consulte avec `dmesg -Tw`. À noter que le temps dans dmesg n’est pas hyper fiable, et que ça nécessite l’option kernel `DYNAMIC_DEBUG`.
 +
  
 ===== Configuration côté client ===== ===== Configuration côté client =====
Ligne 87: Ligne 96:
  
 De toutes façons on fournira un fichier de conf client d’exemple comme on le faisait pour OpenVPN. De toutes façons on fournira un fichier de conf client d’exemple comme on le faisait pour OpenVPN.
 +
 +
 +===== Script de génération =====
 +
 +Voici la v1 du script de génération de VPN wg. C’est une adaptation bête de celui d’OpenVPN.
 +<file bash /usr/local/sbin/add-wg>
 +#!/bin/sh
 +
 +usage() {
 +    printf "Usage:\n"
 +    printf "\t-h, --help    Affiche ce message d’aide\n"
 +    printf "\t-u, --user    Identifiant de connexion au VPN\n"
 +    printf "\t-i, --id  Numéro servant à la génération des IPs\n"
 +    printf "\t-m, --email   Adresse mail à qui envoyer les informations de
 +connexion\n"
 +}
 +
 +OPTS=$(getopt -o u:,m:,h -l user:,email:,help -- "$@")
 +
 +if [ $? != 0 ]; then
 +    exit 1
 +fi
 +
 +if [ $1 ]; then
 +    if [ $1 = '-h' ] || [ $1 = '--help' ]; then
 +        usage
 +        exit 0
 +    elif [ $# -lt 4 ]; then
 +        echo "Paramètre manquant"
 +        usage
 +        exit 1
 +    fi
 +else
 +    echo "Paramètre manquant"
 +    usage
 +    exit 1
 +fi
 +
 +eval set -- "$OPTS"
 +
 +while :; do
 +    case "$1" in
 +        -h | --help)    usage;
 +                exit 0;;
 +        -u | --user)    user="$2";
 +                shift 2;;
 +        -m | --email)   EMAIL="$2";
 +                shift 2;;
 +        --)     shift; break;;
 +    esac
 +done
 +
 +mailregex=$(echo $EMAIL | egrep '[^.]+@[^.]+\.[^.]+')
 +if [ ${#mailregex} != ${#EMAIL} ]; then
 +    echo "Adresse mail invalide"
 +    exit 1
 +fi
 +
 +echo "1 - Récupération last IPv4"
 +LAST_VPN_V4=$(add-ovpn.netbox.py -a ipv4 -u "${user}")
 +V4_RETURN=$?
 +echo ${LAST_VPN_V4}
 +if [ ${V4_RETURN} = 1 ]; then
 + exit 1
 +fi
 +
 +echo "2 - Récupération last IPv6"
 +LAST_VPN_V6=$(add-ovpn.netbox.py -a ipv6 -u "${user}")
 +echo ${LAST_VPN_V6}
 +
 +WG_PORT=$(printf '%d' "0x$(echo ${LAST_VPN_V6} | cut -d ':' -f 3)")
 +
 +echo "3 - Génération de la clé wg" >&2
 +wg genkey | tee "/etc/wireguard/wg${WG_PORT}-srv.key" | wg pubkey > "/etc/wireguard/wg${WG_PORT}-srv.pub"
 +wg genkey | tee "/etc/wireguard/wg${WG_PORT}-clt.key" | wg pubkey > "/etc/wireguard/wg${WG_PORT}-clt.pub"
 +
 +echo "4.1 - Génération de la configuration wg" >&2
 +echo "[Interface]
 +ListenPort = ${WG_PORT}
 +PrivateKey = $(cat /etc/wireguard/wg${WG_PORT}-srv.key)
 +
 +[Peer]
 +PublicKey = $(cat /etc/wireguard/wg${WG_PORT}-clt.pub)
 +AllowedIPs = ${LAST_VPN_V4}/32, ${LAST_VPN_V6}" > "/etc/wireguard/wg${WG_PORT}.conf"
 +
 +echo "4.2 - Génération de la configuration ip" >&2
 +echo "wireguard_wg${WG_PORT}=\"/etc/wireguard/wg${WG_PORT}.conf\"
 +config_wg${WG_PORT}=\"null\"
 +routes_wg${WG_PORT}=\"
 +${LAST_VPN_V4}/32
 +${LAST_VPN_V6}
 +\"
 +
 +postup () {
 + ip link set wg${WG_PORT} alias \"Cust: ${user}\"
 +}" > "/etc/conf.d/net.wg${WG_PORT}"
 +
 +echo "4.3 - Activation du VPN" >&2
 +ln -s /etc/init.d/net.lo /etc/init.d/net.wg${WG_PORT}
 +rc-update add net.wg${WG_PORT}
 +rc-service net.wg${WG_PORT} start
 +
 +echo "5 - Envoi du mail" >&2
 +SUBJECT=$(perl -wse "use utf8; use Encode qw(encode); print encode(\"MIME-Q\",\
 +\"Votre VPN wireguard vient d’être créé\");")
 +
 +echo "Date: $(date --rfc-2822)
 +Content-Type: text/plain; charset=UTF-8
 +MIME-Version: 1.0
 +Content-Transfer-Encoding: 8bit
 +From: Adminsys grifon <adminsys@grifon.fr>
 +To: <$EMAIL>
 +Subject: $SUBJECT
 +Organization: Grifon
 +Message-ID: <$(date | md5sum | cut -d ' ' -f 1)@wg.grifon.fr>
 +
 +Bonjour,
 +Votre VPN vient d’être créé.
 +
 +Vous avez l’IPv4 $LAST_VPN_V4 et le subnet IPv6 $LAST_VPN_V6.
 +Votre configuration se trouve à la fin de ce mail.
 +Si vous souhaitez regénérer votre clé, n’hésitez pas à nous envoyer votre
 +nouvelle clé publique.
 +
 +Si vous voulez un reverse DNS sur votre VPN, merci d’envoyer un mail à
 +adminsys@grifon.fr contenant votre choix, ou les serveurs à qui déléguer les
 +zones.
 +
 +##### DÉBUT DU FICHIER DE CONFIGURATION #####
 +
 +[Interface]
 +PrivateKey = $(cat /etc/wireguard/wg${WG_PORT}-clt.key)
 +DNS = 89.234.186.4, 89.234.186.5, 2a00:5884::7, 2a00:5884::9
 +
 +[Peer]
 +Endpoint = wg.grifon.fr:${WG_PORT}
 +PublicKey = $(cat /etc/wireguard/wg${WG_PORT}-srv.pub)
 +AllowedIPs = 0.0.0.0/0, ::/0
 +
 +##### FIN DU FICHIER DE CONFIGURATION #####
 +
 +Cordialement,
 +--
 +Les adminsys de grifon" | /usr/sbin/sendmail -f adminsys@grifon.fr -t
 +
 +
 +SUBJECT=$(perl -wse "use utf8; use Encode qw(encode); print encode(\"MIME-Q\",\
 +\"Création du VPN wg de $user\");")
 +
 +echo "From: Adminsys grifon <adminsys@grifon.fr>
 +To: adminsys@grifon.fr
 +Content-Type: text/plain; charset=UTF-8
 +Subject: ${SUBJECT}
 +
 +IPv4 : ${LAST_VPN_V4}
 +IPv6 : ${LAST_VPN_V6}
 +
 +" | /usr/sbin/sendmail -f adminsys@grifon.fr -t
 +</file>
reseau/wireguard.1723853040.txt.gz · Dernière modification : 2024/08/17 00:04 de alarig