Aller au contenu

Wireguard sur routeur ER-X


Mic13710

Messages recommandés

Je viens tout juste d'installer Wireguard sur mon routeur ER-X. Et je dois avouer que c'est bien plus rapide qu'OpenVPN et le temps de connexion est également incomparablement plus rapide. 3 à 5 sec tout au plus. Petit bémol, il n'y a pas d'identifiant à fournir pour initier la connexion et je trouve ça un peu limite en terme de sécurité.

Je n'ai pas encore assez de recul mais c'est très prometteur. Petit problème à résoudre : faire du sélectif sur le trafic sortant sous windows. Pour le moment mon serveur DNS est celui du NAS et tout le trafic transite par le tunnel et le ER-X. Je voudrais le limiter aux seuls ndds de mon serveur (et bien entendu aux IPs de mon réseau privé). Le reste devant passer par les DNS du réseau local du PC. J'ai bien trouvé ce lien : https://superuser.com/questions/1752669/how-to-do-split-dns-with-wireguard-on-windows mais ma première tentative n'a pas fonctionné.

Si quelqu'un a une autre astuce, je suis preneur.

Lien vers le commentaire
Partager sur d’autres sites

il y a 21 minutes, Mic13710 a dit :

Si quelqu'un a une autre astuce, je suis preneur.

A ma connaissance, on ne peut pas vraiment faire de split tunneling au niveau du client Windows. Ou alors il faut plusieurs cartes réseaux.
Donc dans le cas d'un client Windows avec une seule carte, il faudra faire passer tout le trafic par le tunnel Wireguard.
En revanche, si tu utilises DNS Server avec une vue pour le sous-réseau utilisé par Wireguard, tu dois pouvoir spécifier les redirections locales dans ta zone associée et avoir des redirecteurs publiques pour le reste.
Ce dont il faut t'assurer :

  • que dans la configuration client, tu spécifies l'IP locale de ton NAS pour "DNS =", par exemple 192.168.10.50
  • que sur l'implémentation de Wireguard sur le ER-X, tu aies une option permettant de spécifier que les clients Wireguard avec une IP appartenant au réseau 10.11.12.x/24 (par exemple) puissent accéder aux IP de type 192.168.10.x (le réseau où se trouve ton NAS). C'est l'équivalent de la case Permettre l'accès aux périphériques du réseau local dans la section OpenVPN de VPN Server.
  • que le NAS puisse accepter des requêtes du réseau Wireguard sur son port 53
Modifié par .Shad.
Lien vers le commentaire
Partager sur d’autres sites

@.Shad. Merci pour ton retour. Pas de problème avec le serveur DNS du NAS qui a toutes les redirections requises. Le tunnel fonctionne parfaitement, les requêtes sont toutes résolues par le serveur, de la même manière que lorsque je suis chez moi.

Je voudrais simplement éviter de tout passer dans le tunnel et je pense que le lien que j'ai donné est un début de piste. Je vais tenter d'approfondir si je trouve le temps de le faire. Sinon, ça restera en l'état.

Lien vers le commentaire
Partager sur d’autres sites

@Mic13710 Bon courage alors, j'avais cherché un temps puis j'avais laissé tomber.

Les développeurs bottent en touche sur la question de la sécurité, ils estiment (en partie à raison) que la protection doit se passer à une couche supérieure :

- Fingerprint, PIN, Face unlock sur des périphériques mobiles
- PIN, password pour les stations de travail type Windows ou Linux

Moi je trouve ça un peu facile de leur part, mais bon, ça n'a pas l'air de bouger de ce côté-là.
Certaines implémentations de Wireguard, comme Tailscale, ont dû eux-mêmes ajouter une couche de sécurité (2FA).

Tu peux éventuellement te tourner vers des applications tierce partie sur Windows qui permettent de verrouiller le lancement d'application avec un mot de passe.

Lien vers le commentaire
Partager sur d’autres sites

Oui possible, j'utilise en effet des scripts pre-up et pre-down sur mon VPS pour l'accessibilité aux réseaux secondaires.

Malin le fait de définir la métrique de priorité la plus faible. C'est un workaround certes, mais ça devrait faire le job dans les faits.

Après, voir peut-être ce que donne Proxifier, 30 jours d'essai gratuit.

Modifié par .Shad.
Lien vers le commentaire
Partager sur d’autres sites

Petit retour sur le split tunneling.

J'ai abandonné l'histoire des pre-up, pre-down que je n'ai pas réussi à faire fonctionner. J'ai essayé yogaDNS qui fonctionne très bien. Simple et efficace.

Mais finalement, le plus simple étant le moins compliqué, il suffisait de réduire la plage d'adresse autorisée à celle de mon réseau privé et ça fonctionne au poil.

[Interface]
PrivateKey = Générée par Wireguard pour windows
Address = IP wireguard du PC/30
DNS = 192.168.x.2, 192.168.x.4 (les serveurs DNS de mes NAS)

[Peer]
PublicKey = clé publique Wireguard du routeur ER-X
AllowedIPs = 192.168.x.0/24 (ma plage d'IP privée)
Endpoint = Mon IP publique:51820

Ainsi, mes ndd sont résolus par les serveurs DNS des NAS et passent directement par le VPN, les autres URL sont résolues via les DNS fournis par le DHCP et passent par l'internet local.

Lien vers le commentaire
Partager sur d’autres sites

@Mic13710 Je suis assez étonné que ça fonctionne avec un PC, car sur ton PC tu n'as qu'une IP privée locale. Comment peut-il faire un tri sur ce qui doit transiter ou pas via le VPN sur ce seul critère ?
Sur Android tu as la possibilité de choisir quelles appli transitent ou pas par Wireguard.
Sur Linux, si tu as plusieurs interfaces tu peux plus facilement dire quelles interfaces voient leur données transiter par la connexion VPN (via précisément la directive AllowedIPs)

Je vais mener quelques tests de mon côté.

Lien vers le commentaire
Partager sur d’autres sites

@.Shad. Je ne saurais te dire exactement comment ça fonctionne. En l’occurrence, mes deux serveurs DNS sont dans la plage des IP autorisées à utiliser Wireguard. Ce dernier doit donc interroger en priorité les serveurs définis dans l'interface. Si l'URL est résolue par une IP dans la plage, il laisse passer le trafic. Sinon, ce sont probablement les redirections qui sont interrogées et comme elles sont hors plage, elles sont traitées par le DNS local.

Plutôt que de longs discours, quelques captures. Je suis actuellement en connexion 4G hors de chez moi.

Vers un de mes domaines (résolu par les serveurs DNS locaux hébergés par mes NAS) :

C:\Users\Michel>tracert mon ndd

Détermination de l’itinéraire vers mon ndd [192.168.54.2]
avec un maximum de 30 sauts :

  1     *        *        *     Délai d’attente de la demande dépassé.
  2    64 ms    57 ms    80 ms  Mon NAS [192.168.54.2]

La requête est bien envoyée directement vers mon réseau local distant (192.168.54.2 est l'IP de mon NAS et celle d'un des serveurs DNS). Toutes mes adresses qui ne peuvent être résolues que localement le sont. Par exemple l'accès à DSM (nas.ndd) fonctionne. Et bien entendu, toutes les autres accessibles publiquement (par exemple video.ndd) passent par le VPN.

Vers un site externe non résolu par mes serveurs DNS, par exemple nas-forum.com :

C:\Users\Michel>tracert nas-forum.com

Détermination de l’itinéraire vers nas-forum.com [94.23.33.37]
avec un maximum de 30 sauts :

  1     2 ms     2 ms     1 ms  homerouter.cpe [192.168.43.1]
  2     *        *        *     Délai d’attente de la demande dépassé.
  3    40 ms    43 ms    49 ms  192.168.4.30
  4    71 ms    43 ms    44 ms  192.168.255.18
  5     *        *       35 ms  194.149.185.144
  6    29 ms    55 ms    42 ms  194.149.173.32
  7    43 ms    66 ms    50 ms  194.149.166.22
  8    57 ms    50 ms    37 ms  194.149.166.62
  9    66 ms    69 ms    57 ms  be104-202.par-gsw-pb1-nc5.fr.eu [37.187.36.22]
 10     *        *        *     Délai d’attente de la demande dépassé.
 11     *        *        *     Délai d’attente de la demande dépassé.
 12     *        *        *     Délai d’attente de la demande dépassé.
 13    51 ms    38 ms    74 ms  be102.rbx-g1-nc5.fr.eu [94.23.122.146]
 14     *        *        *     Délai d’attente de la demande dépassé.
 15     *        *        *     Délai d’attente de la demande dépassé.
 16     *        *        *     Délai d’attente de la demande dépassé.
 17    61 ms    37 ms    54 ms  ns1.nas-forum.be [94.23.33.37]

192.168.43.1 c'est l'IP de mon routeur local. Pas de passage par Wireguard. L'adresse est bien résolue par le serveur DNS attribué par mon routeur 4G local.

Lien vers le commentaire
Partager sur d’autres sites

Et pour compléter, un tracert sur nas-forum.com en modifiant le Peer avec AllowedIPs = 0.0.0.0, ::/0 :

C:\Users\Michel>tracert nas-forum.com

Détermination de l’itinéraire vers nas-forum.com [94.23.33.37]
avec un maximum de 30 sauts :

  1    52 ms    55 ms    56 ms  10.2.1.1
  2    95 ms    80 ms    94 ms  192.168.1.254
  3    81 ms    82 ms    74 ms  crefac107.crefac.com [194.149.169.105]
  4    84 ms    85 ms    74 ms  194.149.166.58
  5     *       60 ms    72 ms  be104-202.par-gsw-pb1-nc5.fr.eu [37.187.36.22]
  6     *        *        *     Délai d’attente de la demande dépassé.
  7     *        *        *     Délai d’attente de la demande dépassé.
  8     *        *        *     Délai d’attente de la demande dépassé.
  9    82 ms    82 ms    73 ms  be102.rbx-g1-nc5.fr.eu [94.23.122.146]
 10     *        *        *     Délai d’attente de la demande dépassé.
 11     *        *        *     Délai d’attente de la demande dépassé.
 12     *        *        *     Délai d’attente de la demande dépassé.
 13    65 ms    83 ms   100 ms  ns1.nas-forum.be [94.23.33.37]

Là, la requête passe bien par le VPN (10.2.1.1) sur mon ER-X, puis ma Freebox (192.168.1.254) etc...

Lien vers le commentaire
Partager sur d’autres sites

Ok, j'ai mis le doigt dessus, c'est la résolution DNS qui me pose problème.
Quand tu joins un nom de domaine qui existe dans la zone DNS locale, tout va bien, mais quand il n'existe pas, comment est traitée l'information ?

Est-ce que le serveur DNS local transfère la demande à ses redirecteurs, et si pas, comment est retournée l'info que le client VPN doit utiliser ses DNS pour atteindre sa cible ? Parce que mine de rien, de l'info transite dans le tunnel dans ce genre d'échange. Alors je sais que la résolution DNS se fait a priori le transfert de données (le paquet ne part pas sans savoir où il doit aller). Mais je suis curieux de connaître la façon dont Wireguard gère ça.

Lien vers le commentaire
Partager sur d’autres sites

N.B. ; Notre discussion n'ayant finalement pas grand chose à voir avec le sujet initial et très peu avec nos NAS (serveur DNS uniquement), j'ai déplacé vers un nouveau fil dans le bar

@.Shad. De ce que je comprends, wireguard incorpore un mécanisme de sécurité (c'est un peu normal) qui rejette tout ce qui n'est pas dans les clous et le renvoie vers le/les serveur(s) DNS donné(s) par le dhcp local. A mon avis, il travaille avec différents serveurs DNS, celui/ceux donné(s) dans l'interface en tant que primaire(s) et ceux du réseau local du PC en qualité de serveurs secondaires.

Il faut partir du principe que si on peut limiter la plage d'IPs autorisées à passer le tunnel, il y a forcément un mécanisme interne à wireguard qui permet de traiter les demandes hors plage. Sinon, ce serait ingérable.

Ce qui fait la différence dans mon cas, c'est que les serveurs DNS paramétrés dans l'interface gèrent une zone locale et non publique. Ils sont donc en mesure de renvoyer des IP locales d'où la capacité à laisser passer dans le tunnel tout ce qui se rapporte à mes ndd.

Ainsi, il doit interroger en priorité mes serveurs DNS. Si l'URL est résolue et qu'elle renvoie vers une IP de la plage, wireguard autorise le passage par le tunnel. S'il doit interroger les serveurs DNS des redirections (IPs hors plage donc), wireguard bloque et bascule la requête vers les serveurs DNS locaux qui constituent en quelque sorte le niveau secondaire de priorité. Il y a probablement une tentative de flux dans le tunnel pour les requêtes hors plage mais elle doit se résumer à une simple redirection.

Il faudrait décortiquer plus en détail les 4000 lignes du script wireguard pour peut-être trouver des réponses. Mais bon, je ne vais pas me pencher là dessus. L'essentiel pour moi c'est que ça fonctionne comme je le souhaite, de manière finalement très simple et reproductible. Mais encore une fois parce que les zones des serveurs DNS interrogés sont locales.

Edit du 16/05 :

Après analyse, il s'avère que lorsque wireguard est actif, les seuls serveurs interrogés sont ceux inscrits dans l'interface de wireguard. En effet, j'avais omis de vérifier ce point, mais lorsque je fais un nslookup sur n'importe quel ndd, la demande est dirigée vers mes serveurs locaux (192.168.54.2 et 4) qui renvoient l'IP (privée ou publique) correspondant à la demande. Il y a donc bien interrogation des redirections lorsque le ndd ne peut pas être résolu par les serveurs locaux. Et par voie de conséquence, il y a bien un échange dans le tunnel dès lors qu'il y a une demande par URL.

Ensuite, si l'IP est dans la plage, la connexion se fera via le tunnel, hors de la plage, elle se fera par le routeur local du PC.

 

Lien vers le commentaire
Partager sur d’autres sites

@Mic13710 Tu as mis des mots sur mes maux ! Merci pour la recontextualisation. Dans les faits j'ai deux réseaux wireguard : un utilisé comme le tien en split tunneling pour me connecter chez moi (mais ça serait juste l'affaire de changer les AllowedIPs pour passer en full tunneling) et accéder à certaines applications de gestion du réseau, et un autre avec le "serveur" (un pair dans les faits, mais ce sont toujours les autres qui se connectent à lui) en full tunneling, pour bénéficier d'une IP française et débloquer certains replays sur FranceTV principalement.

Lien vers le commentaire
Partager sur d’autres sites

il y a 9 minutes, .Shad. a dit :

un utilisé comme le tien en split tunneling pour me connecter chez moi

Si tu as aussi un serveur DNS local comme moi qui pointe vers des machines locales dont les IP sont dans la plage, il serait intéressant de vérifier que ça fonctionne avec les ndd couverts par ton serveur.

Pour ton deuxième réseaux, je suppose que le serveur est en France, sinon comment pourrais-tu avoir une IP Française à partir de la Belgique ?

Lien vers le commentaire
Partager sur d’autres sites

il y a 1 minute, Mic13710 a dit :

Si tu as aussi un serveur DNS local comme moi qui pointe vers des machines locales dont les IP sont dans la plage, il serait intéressant de vérifier que ça fonctionne avec les ndd couverts par ton serveur.

Oui j'ai pareil, je vais tester ça du week-end.

il y a 1 minute, Mic13710 a dit :

Pour ton deuxième réseaux, je suppose que le serveur est en France, sinon comment pourrais-tu avoir une IP Française à partir de la Belgique ?

Oui, VPS OVH à Gravelines, qui me sert à d'autre chose aussi.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.