14 votes

Impossible de configurer WireGuard VPN

Mon but est de créer un VPN afin

  1. Les clients ont des adresses IP statiques.
  2. Les clients peuvent communiquer entre eux et avec le serveur,
  3. Les clients peuvent accéder à l'Internet mondial par le biais du VPN.
  4. J'aimerais également configurer le DNS et les noms de domaine privés (en travaillant avec NginX).

Voici la configuration du serveur :

[Interface]
Address = 10.0.0.1/24
ListenPort = 5555
PrivateKey = xxxxx

[Peer]
PublicKey = xxxxx
AllowedIPs = 0.0.0.0/0

Et la configuration du client :

[Interface]
PrivateKey = xxxxx
ListenPort = 5555
Address = 10.0.0.2/32
DNS = 8.8.8.8

[Peer]
PublicKey = xxxxx
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = <server ip>:5555

Mais lorsque j'essaie de charger la configuration du serveur wg setconf wg0 /etc/wireguard/wg0.conf Je reçois cette erreur :

Line unrecognized: `Address=10.0.0.1/24'
Configuration parsing error

J'ai donc commenté cette ligne. Mais cela incite probablement WG à choisir des adresses IP aléatoires pour le serveur et les clients.

Pour faire fonctionner WireGuard, j'ai aussi lancé ces commandes :

ip link add dev wg0 type wireguard
ip address add dev wg0 10.0.0.1/24
ip link set up dev wg0

Après tout, wg fournit la sortie suivante :

interface: wg0
  public key: xxxxx
  private key: (hidden)
  listening port: 5555

peer: xxxxx
  endpoint: <my IP address>:6228
  allowed ips: 0.0.0.0/0
  latest handshake: 2 minutes, 11 seconds ago
  transfer: 26.02 KiB received, 248 B sent

Depuis le client (qui est MacOS avec WireGuard GUI), je suis capable de me connecter, mais.. :

  • Je n'obtiens aucune connexion Internet. Je ne peux même pas faire un ping du serveur avec l'adresse IP globale, alors que je peux le faire avec l'adresse privée, 10.0.0.1 .
  • Je suis capable de me connecter au VPN même si je change le port dans la configuration du client. Je pense que cela signifie qu'il ne se connecte pas vraiment.

Alors, comment puis-je atteindre mes objectifs ? Et qu'est-ce qui ne va pas dans mes configurations ?

PS. Ni l'un ni l'autre <code>iptables</code> ni les pare-feu ne sont installés sur le serveur, donc cela ne peut pas être un problème. De plus, j'ai spécifié <code>net.ipv4.ip_forward=1</code> & <code>net.ipv6.conf.all.forwarding=1</code> en el <code>/etc/sysctl.conf</code> .<br>Versions du logiciel. Le système d'exploitation est <code>Ubuntu 18.04.4 LTS</code> Kernel : <code>4.15.0-20-generic</code> , WG : <code>wireguard-tools v1.0.20200206</code> .


Mise à jour

J'ai retiré Address de la configuration du serveur, et définir AllowedIPs = 10.0.0.2/24 dans celui du client, j'ai finalement réussi à me connecter au NginX du serveur depuis le client par son IP privée, et à atteindre l'Internet (car le trafic passe par le VPN).

Mais si je mets AllowedIPs = 0.0.0.0/0 sur le client, je n'ai pas d'accès à l'Internet, mais je peux quand même atteindre le serveur par l'adresse IP du VPN 10.0.0.1. J'ai essayé de résoudre le problème avec ifconfig wg0 broadcast/multicast mais sans succès. Maintenant, la commande ip address show wg0 fournit la sortie suivante :

4: wg0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.10.10.1/24 scope global wg0
       valid_lft forever preferred_lft forever
    inet 10.10.10.1 peer 10.10.10.2/32 scope global wg0
       valid_lft forever preferred_lft forever

De plus, je ne peux pas accéder à un client à partir d'un autre, je pense que c'est le même problème. Comment puis-je corriger les configurations de WireGuard ou les paramètres réseau du serveur pour résoudre le problème ?

10voto

Kamil J Points 1512

使用方法 wg-quick 代わりに wg avec le fichier de configuration et ça marcherait ;-). Vous avez écrit que vous utilisez directement wg qui utilise un format de fichier de configuration différent, ce qui entraîne l'erreur suivante :

Line unrecognized: `Address=10.0.0.1/24,fd86:ea04:1115::1/64'
Configuration parsing error

Ce que vous pouvez également vérifier :

Split le site Adresse pour avoir une configuration correcte sur le serveur :

[Interface]
Address = 10.0.0.1/24
Address = fd86:ea04:1115::1/64
ListenPort = 5555
PrivateKey = xxxxx

[Peer]
PublicKey = xxxxx
AllowedIPs = 0.0.0.0/0

du côté client, il devrait également y avoir Point d'accès pour savoir où se connecter et aussi le masque de réseau devrait correspondre (être le même) avec le côté serveur donc dans ce cas /24 :

[Interface]
PrivateKey = xxxxx
ListenPort = 5555
Address = 10.0.0.2/24
DNS = 8.8.8.8

[Peer]
PublicKey = xxxxx
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = <remote>:<ip>

Vous pouvez essayer avec les deux adresses sur une même ligne, mais il est certain que le masque /24 doit être le même des deux côtés.

6voto

AivanF. Points 213

Eh bien, en plusieurs jours, nuits, et serveurs tués, j'ai résolu tous les problèmes moi-même. :)

  • Tout d'abord, je voudrais mentionner que wg et wg-quick Les utilitaires traitent les fichiers de configuration différemment. Ainsi, mon wg setconf wg0 /etc/wireguard/wg0.conf n'a pas fonctionné de la manière attendue, et je suppose qu'il utilise l'ancien format de configuration. Maintenant, j'utilise wg-quick par le biais de systemctl .

  • Deuxièmement, mon ajout de net.ipv4.ip_forward=1 vers le fichier /etc/sysctl.conf n'a pas fonctionné même si j'ai appelé systemctl daemon-reload ; systemctl restart systemd-networkd . J'ai dû lier la configuration avec le noyau en utilisant sysctl -p /etc/sysctl.conf commande. Cela permet aux pairs de communiquer entre eux et d'atteindre Internet par le biais d'un VPN.

  • Il est bon de mentionner que, pour tous les Address note qu'il est préférable d'utiliser un masque de sous-réseau de 32 bits, ce qui signifie une IP exacte, et non une plage.

  • En outre, j'ai mis en place un DNS personnalisé avec BIND9 pour créer un domaine propre au réseau. Et NginX avec vérification de l'adresse IP de l'expéditeur pour limiter l'accès aux seuls clients du VPN.

Pour l'instant, mes configurations sont les suivantes.

サーバー

[Interface]
Address = 10.0.0.1/32
ListenPort = 5555
PrivateKey = ___some_private_key___

# The following is needed only if you have `ufw` installed
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = ___some_public_key___
AllowedIPs = 10.0.0.1/32

クライアント

[Interface]
PrivateKey = ___some_private_key___
ListenPort = 5555
Address = 10.0.0.1/32

[Peer]
PublicKey = ___some_public_key___
AllowedIPs = 10.0.0.0/24
Endpoint = ___some_ip_address__:5555

3voto

Pieter Points 618

Ok, j'ai résolu le problème du fil de garde "Line unrecognized Address=" avec wg show wg0 Je n'utilise pas wg-quick.

J'ai supprimé/commenté la ligne dans la configuration Address = x.x.x.x dans /etc/wireguard/wg0.conf

Ma configuration sur Debian/ubuntu.

  1. l'interface wg0 est configurée dans /etc/network/interfaces

    auto wg0 iface wg0 inet static address 192.168.1.1/24 pre-up ip link add wg0 type wireguard pre-up wg setconf wg0 /etc/wireguard/wg0.conf post-down ip link del wg0

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X