« WireGuard LXC Alpine Linux » : différence entre les versions
Aller à la navigation
Aller à la recherche
| (20 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
{{Barre de progression|100|largeur=400px|hauteur=10|couleur1 = green|texte=Testé et approuvé}} | {{Barre de progression|100|largeur=400px|hauteur=10|couleur1 = green|texte=Testé et approuvé}} | ||
= LXC Alpine 3.12 = | = LXC Alpine 3.12 = | ||
== WireGuard Server == | == Installation de WireGuard Server == | ||
Avec un téléphone android connecté !!! : | Avec un téléphone android connecté !!! : | ||
[[File:Capture_ressource_WG_AlpineLXC.PNG|Incroyablement économe !]] | [[File:Capture_ressource_WG_AlpineLXC.PNG|Incroyablement économe !]] | ||
On autorise le routage : | |||
On autorise | |||
lxcalpine:~# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf | lxcalpine:~# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf | ||
lxcalpine:~# sysctl -p | lxcalpine:~# sysctl -p | ||
| Ligne 49 : | Ligne 19 : | ||
lxcalpine:~# apk update && apk upgrade | lxcalpine:~# apk update && apk upgrade | ||
lxcalpine:~# apk add wireguard-tools | lxcalpine:~# apk add wireguard-tools | ||
== Configuration de WireGuard Server == | |||
On génère la configuration sur [https://www.wireguardconfig.com/ '''wireguardconfig'''] | On génère la configuration sur [https://www.wireguardconfig.com/ '''wireguardconfig'''] | ||
| Ligne 77 : | Ligne 47 : | ||
<code># vi /etc/wireguard/client1.conf</code> | <code># vi /etc/wireguard/client1.conf</code> | ||
[Interface] | [Interface] | ||
Address = 10.0.0.2/24 | Address = 10.0.0.2/24 | ||
| Ligne 91 : | Ligne 62 : | ||
| niveau = information | | niveau = information | ||
| icône = loupe | | icône = loupe | ||
| texte = <font color=blue>Allowed IP</font> modifié pour ne pas | | texte = Opération à répéter pour chaque client.. | ||
}} | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = <font color=blue>Allowed IP</font> modifié pour ne pas rediriger tout le traffic et perdre l'accès a son réseau local.. | |||
}} | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = <font color=blue>Allowed IP</font> peut aussi être modifié pour ne rediriger que les paquets a destination du réseau distant et conserver Internet localement sans passer par le serveur distant, exemple : "'''AllowedIPs = 192.168.2.0/24'''" | |||
}} | }} | ||
== Test == | == Test du service == | ||
<code>lxcalpine:~# wg-quick up wg0</code> | <code>lxcalpine:~# wg-quick up wg0</code> | ||
[#] ip link add wg0 type wireguard | [#] ip link add wg0 type wireguard | ||
| Ligne 127 : | Ligne 108 : | ||
[#] iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE | [#] iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE | ||
== | == Création du script init.d pour lancer le service == | ||
[https://gist.github.com/r0v/48e18c9584d4b5ecb96f593dec9a938c '''source'''] | [https://gist.github.com/r0v/48e18c9584d4b5ecb96f593dec9a938c '''source'''] | ||
| Ligne 152 : | Ligne 133 : | ||
} | } | ||
On active le script immédiatement et au redémarrage : | |||
lxcalpine:~# chmod +x /etc/init.d/wireguard | lxcalpine:~# chmod +x /etc/init.d/wireguard | ||
lxcalpine:~# rc-update add wireguard default | lxcalpine:~# rc-update add wireguard default | ||
lxcalpine:~# service wireguard start | lxcalpine:~# service wireguard start | ||
On peut [[# | On peut [[#Test_du_service|tester]] avec "wg", rebooter pour vérifier etc... | ||
== (Optionnel) QR Code == | == (Optionnel) QR Code == | ||
| Ligne 168 : | Ligne 147 : | ||
voila! | voila! | ||
== Ajout d'un utilisateur == | |||
On crée les clefs de cryptage pour le nouvel utilisateur dans le repertoir "tmp" : | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = Remplacer <font color = blue>nom_utilisateur</font> par le nom souhaité. | |||
}} | |||
# cd /tmp/ | |||
# umask 077 | |||
# name="<font color = blue>nom_utilisateur</font>" | |||
# wg genkey | tee "${name}.key" | wg pubkey > "${name}.pub" | |||
# wg genpsk > "${name}.psk" | |||
On peuple le fichier de configuration de WireGuard avec le nouvel utilisateur : | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = Remplacer <font color = blue>10.0.0.5/32</font> par une adresse VPN libre. | |||
}} | |||
# echo "" >> /etc/wireguard/wg0.conf | |||
# echo "[Peer]" >> /etc/wireguard/wg0.conf | |||
# echo "PublicKey = $(cat "${name}.pub")" >> /etc/wireguard/wg0.conf | |||
# echo "PresharedKey = $(cat "${name}.psk")" >> /etc/wireguard/wg0.conf | |||
# echo "AllowedIPs = <font color = blue>10.0.0.5/32</font>" >> /etc/wireguard/wg0.conf | |||
Ensuite on peuple le fichier de configuration utilisateur, il faut d'abord récupérer la clef pubique du serveur (ici en bleu) : | |||
# wg | |||
<font color = green>interface</font>: <font color = darkgreen>wg0</font> | |||
public key: <font color = blue>MaClEfPubLiQUe=</font> | |||
private key: (hidden) | |||
<font color = grey>...</font> | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = <font color = blue>10.0.0.5/24</font> adresse VPN libre sélectionner dans le fichier utilisateur ci-dessus / <font color = blue>192.168.1.0/24</font> l'adresse du serveur cible à atteindre (différentes configuration possible [[#Configuration_de_WireGuard_Server|voir la configuration serveur)]] | |||
}} | |||
# echo "[Interface]" > "/etc/wireguard/${name}.conf" | |||
# echo "Address = <font color = blue>10.0.0.5/24</font>" >> "/etc/wireguard/${name}.conf" | |||
# echo "ListenPort = <font color = green>51820</font>" >> "/etc/wireguard/${name}.conf" | |||
# echo "PrivateKey = $(cat "${name}.key")" >> "/etc/wireguard/${name}.conf" | |||
# echo "" >> "/etc/wireguard/${name}.conf" | |||
# echo "[Peer]" >> "/etc/wireguard/${name}.conf" | |||
# echo "PublicKey = <font color = blue>MaClEfPubLiQUe=</font>" >> "/etc/wireguard/${name}.conf" | |||
# echo "PresharedKey = $(cat "${name}.psk")" >> "/etc/wireguard/${name}.conf" | |||
# echo "AllowedIPs = <font color = blue>192.168.1.0/24</font>" >> "/etc/wireguard/${name}.conf" | |||
# echo "Endpoint = <font color = blue>monserveurvpn.exemple.net</font>:<font color = green>51820</font>" >> "/etc/wireguard/${name}.conf" | |||
Enfin on redémarre le service pour appliquer les changement : | |||
# service wireguard restart | |||
Version actuelle datée du 23 février 2023 à 12:37
100 % Testé et approuvé
LXC Alpine 3.12
Installation de WireGuard Server
Avec un téléphone android connecté !!! :
On autorise le routage :
lxcalpine:~# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf lxcalpine:~# sysctl -p
net.ipv4.ip_forward = 1
lxcalpine:~# rc-update add sysctl default
Puis on install :
lxcalpine:~# apk update && apk upgrade lxcalpine:~# apk add wireguard-tools
Configuration de WireGuard Server
On génère la configuration sur wireguardconfig
# vi /etc/wireguard/wg0.conf
[Interface] Address = 10.0.0.1/24 ListenPort = 51820 PrivateKey = ***************************************** PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] PublicKey = ***************************************** PresharedKey = ***************************************** AllowedIPs = 10.0.0.2/32 [Peer] PublicKey = ***************************************** PresharedKey = ***************************************** AllowedIPs = 10.0.0.3/32 [Peer] PublicKey = ***************************************** PresharedKey = ***************************************** AllowedIPs = 10.0.0.4/32
# vi /etc/wireguard/client1.conf
[Interface] Address = 10.0.0.2/24 ListenPort = 51820 PrivateKey = ***************************************** [Peer] PublicKey = ***************************************** PresharedKey = ***************************************** AllowedIPs = 0.0.0.0/1, 128.0.0.0/1 Endpoint = myserver.dyndns.org:51820
Test du service
lxcalpine:~# wg-quick up wg0
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.1/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
lxcalpine:~# wg
interface: wg0 public key: ***************************************** private key: (hidden) listening port: 51820 peer: ***************************************** preshared key: (hidden) allowed ips: 10.0.0.2/32 peer: ***************************************** preshared key: (hidden) allowed ips: 10.0.0.3/32 peer: ***************************************** preshared key: (hidden) allowed ips: 10.0.0.4/32
Fin du test :
lxcalpine:~# wg-quick down wg0
[#] ip link delete dev wg0 [#] iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Création du script init.d pour lancer le service
lxcalpine:~# vi /etc/init.d/wireguard
#!/sbin/openrc-run
depend() {
need localmount
need net
}
start() {
ebegin "Starting wireguard"
/usr/bin/wg-quick up wg0
eend $?
}
stop() {
ebegin "Stopping wireguard"
/usr/bin/wg-quick down wg0
eend $?
}
On active le script immédiatement et au redémarrage :
lxcalpine:~# chmod +x /etc/init.d/wireguard lxcalpine:~# rc-update add wireguard default lxcalpine:~# service wireguard start
On peut tester avec "wg", rebooter pour vérifier etc...
(Optionnel) QR Code
lxcalpine:~# apk add libqrencode
Exemple :
lxcalpine:~# qrencode -t ansiutf8 < /etc/wireguard/client1.conf
voila!
Ajout d'un utilisateur
On crée les clefs de cryptage pour le nouvel utilisateur dans le repertoir "tmp" :
# cd /tmp/
# umask 077
# name="nom_utilisateur"
# wg genkey | tee "${name}.key" | wg pubkey > "${name}.pub"
# wg genpsk > "${name}.psk"
On peuple le fichier de configuration de WireGuard avec le nouvel utilisateur :
# echo "" >> /etc/wireguard/wg0.conf
# echo "[Peer]" >> /etc/wireguard/wg0.conf
# echo "PublicKey = $(cat "${name}.pub")" >> /etc/wireguard/wg0.conf
# echo "PresharedKey = $(cat "${name}.psk")" >> /etc/wireguard/wg0.conf
# echo "AllowedIPs = 10.0.0.5/32" >> /etc/wireguard/wg0.conf
Ensuite on peuple le fichier de configuration utilisateur, il faut d'abord récupérer la clef pubique du serveur (ici en bleu) :
# wg
interface: wg0 public key: MaClEfPubLiQUe= private key: (hidden) ...
# echo "[Interface]" > "/etc/wireguard/${name}.conf"
# echo "Address = 10.0.0.5/24" >> "/etc/wireguard/${name}.conf"
# echo "ListenPort = 51820" >> "/etc/wireguard/${name}.conf"
# echo "PrivateKey = $(cat "${name}.key")" >> "/etc/wireguard/${name}.conf"
# echo "" >> "/etc/wireguard/${name}.conf"
# echo "[Peer]" >> "/etc/wireguard/${name}.conf"
# echo "PublicKey = MaClEfPubLiQUe=" >> "/etc/wireguard/${name}.conf"
# echo "PresharedKey = $(cat "${name}.psk")" >> "/etc/wireguard/${name}.conf"
# echo "AllowedIPs = 192.168.1.0/24" >> "/etc/wireguard/${name}.conf"
# echo "Endpoint = monserveurvpn.exemple.net:51820" >> "/etc/wireguard/${name}.conf"
Enfin on redémarre le service pour appliquer les changement :
# service wireguard restart