Mon objectif est de créer un VPN afin
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 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 quand j'essaie de charger la configuration de serveur wg setconf wg0 /etc/wireguard/wg0.conf
Je reçois cette erreur:
Line unrecognized: `Address=10.0.0.1/24'
Configuration parsing error
Ainsi j'ai commenté cette ligne. Mais il fait probablement que WG choisit des adresses IP aléatoires pour le serveur et les clients.
Pour faire du travail métallurgique, j'ai également couru 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
commandes 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
Du client (qui est MacOS avec interface graphique métallique), je suis capable de se connecter, mais:
10.0.0.1
.Alors, comment puis-je atteindre mes objectifs? Et qu'est-ce qui ne va pas avec mes configs ??
Ps. Ni iptables
_ ni pare-feu sont installés sur le serveur, il ne peut donc pas être un problème. En outre, j'ai spécifié net.ipv4.ip_forward=1
& net.ipv6.conf.all.forwarding=1
dans le /etc/sysctl.conf
.
Versions logicielles. Os est Ubuntu 18.04.4 LTS
, Noyau: 4.15.0-20-generic
, WG: wireguard-tools v1.0.20200206
.
J'ai supprimé Address
de la configuration du serveur et définissez AllowedIPs = 10.0.0.2/24
Dans le client, je me suis enfin connecté au Nginx du serveur du client par IP privée et en mesure d'atteindre Internet (le trafic CoZ va en dehors de VPN).
Mais si je mets AllowedIPs = 0.0.0.0/0
Sur le client, je n'ai pas d'accès à Internet, mais peut toujours atteindre le serveur par adresse IP de VPN 10.0.0.1. J'ai essayé de résoudre avec ifconfig wg0 broadcast/multicast
, mais n'avait aucun 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 d'un autre, je pense que c'est le même problème. Comment puis-je corriger des configurations métalliques ou des paramètres réseau de serveur pour résoudre le problème?
Eh bien, dans plusieurs jours, nuits et serveurs tués, j'ai résolu tous les problèmes moi-même :)
Premièrement, je voudrais mentionner que wg
et wg-quick
Utilitaires traite les fichiers de configuration différemment. Donc, mon wg setconf wg0 /etc/wireguard/wg0.conf
n'a pas fonctionné de manière attendue, et je suppose qu'il utilise un ancien format de configuration. Maintenant j'utilise wg-quick
via systemctl
.
Deuxièmement, mon ajout de net.ipv4.ip_forward=1
au 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 via VPN.
Il est bon de mentionner que pour tous les notes Address
Il est préférable d'utiliser un masque de sous-réseau de 32 bits, ce qui signifie une adresse IP exacte, pas une gamme.
De plus, j'ai configuré DNS personnalisé avec BIND9 pour créer votre propre domaine dans le réseau. Et NGinx avec l'adresse IP de l'expéditeur vérifiant uniquement l'accès aux clients de VPN uniquement.
Pour l'instant, mes configs sont les suivants.
serveur
[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
Client
[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