Aller au contenu principal

DirectAccess avec des VM Linux

· 4 minutes de lecture
Stéphane ROBERT
Consultant DevOps

Depuis le début du confinement se pose le problème d'accès aux ressources de l'entreprise depuis son domicile. Et pour ceux qui utilisent la solution de VPN DirectAccess de Microsoft, la configuration de VM Linux pose pas mal de problème aux développeurs. En effet, mal configurée il est impossible d'accéder aux machines de l'entreprise.

En fait sur la machine Windows les noms des machines de l'entreprise sont résolus en IPV6. ET pour rappel je ne suis pas ingé réseau :(

DirectAccess

Pour rappel, DirectAccess est une solution de connexion réseau à distance fournit par Microsoft. Elle diffère des solutions de VPN classique puisqu'elle requiert aucune action de la part de l'utilisateur distant. C'est le système d'exploitation qui se charge de tout.

Le client DirectAccess initialise des tunnels IPsec IPv6 vers la passerelle DirectAccess. Dans un monde encore majoritairement basé sur l'IPv4 le trafic IPv6 y est encapsulé dans différentes technologies de transition (6to4, Teredo, IP-HTTPS) vers IPv6. Ce mécanisme permet d’établir un canal de communication réseau entre le client et le système d’information. Une fois ce canal initialisé, le client DirectAccess accède aux ressources internes de la même manière que lorsqu’il est connecté au réseau LAN. Le seul changement concerne le mécanisme de résolution de noms DNS. Lorsque le client DirectAccess demande la résolution d’un nom DNS dépendant du réseau de l’entreprise, la résolution de nom est prise en charge par la NRPT (Name Resolution Policy Table) qui fournit une réponse IPv6 à la demande de résolution. Lorsque le client tente de joindre la ressource avec cette adresse IPv6 NAT64 assure la transition d’IPv6 vers IPv4. (source wikipedia)

WSL : Windows Subsystem for Linux

En réinstallant WSL j'ai remarqué que la première version de WSL permettait d'y accéder mais pas la seconde.

En regardant la configuration sous WSL1 j'ai vu que la configuration réseau intégrait 3 cartes réseaux et certaines possédaient des adresses IPV6.

  IPv4 address for eth2:  192.168.56.1
  IPv6 address for eth3:  fd2a:bd1a:eb4a:1000:be24:bec2:8e9d:7f3
  IPv6 address for eth3:  fd2a:bd1a:eb4a:1000:5123:bac7:993d:294c
  IPv6 address for eth3:  fd2a:bd1a:eb4a:1000:844d:1c7e:8d2e:8b46
  IPv4 address for wifi0: 192.168.0.197
  IPv6 address for wifi0: 2a01:e0a:848:8890:5aa0:23ff:fe56:7d36
  IPv6 address for wifi0: 2a01:e0a:848:8890:24fd:4bcc:b769:8b66
  IPv6 address for wifi0: 2a01:e0a:848:8890:d890:1a6c:3351:91b8

J'ai donc cherché à configurer ma VM sous hyper-v de la même manière et ce sans succès. Et je suis tombé sur cet article. J'ai donc résinstaller VirtualBox !

DirectAccess et Virtualbox

Dans les paramètres de VirtualBox il est possible de nater un réseau en activant le support d'ipv6.

FIchier > Paramètres > Réseau

Ensuite il faut activer trois cartes réseau:

  • une NATed avec le mode promiscuité activé à ALLOW ALL
  • une Bridged sur la carte Wifi avec aussi mode promiscuité activé à ALLOW ALL
  • une Network NAT configuré sur le réseau créé précédement.

Dans la VM Linux il suffit simplement de les activer et de laisser DHCP faire le reste.

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:74:8f:2f brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 83512sec preferred_lft 83512sec
    inet6 fe80::4e23:ac78:4b5f:6ba5/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:4a:bc:c8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.167/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s8
       valid_lft 40312sec preferred_lft 40312sec
    inet6 2a01:e0a:848:8890:cbdb:24be:9fcb:b452/64 scope global dynamic noprefixroute
       valid_lft 86058sec preferred_lft 86058sec
    inet6 fe80::fd0a:a104:ac93:32b2/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:c9:33:da brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.4/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s9
       valid_lft 339sec preferred_lft 339sec
    inet6 fd17:625c:f037:2:90cf:d4e5:a0db:cc06/64 scope global noprefixroute
       valid_lft forever preferred_lft forever
    inet6 fe80::c509:7471:9045:1a2/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Si vous avez des soucis avec la résolutions de noms. Il est possible de dire à NetworkManager de ne pas gérer le fichier resolv.conf. Il faut modifier le fichier /etc/NetworkManager/NetworkManager.conf en ajoutant dns=none à la section [main].

[main]
#plugins=ifcfg-rh
dns=none

Ensuite ajouter dans le fichier resolv.conf le serveur DNS ipv6 fournit par votre administateur système.

search votre_domain
nameserver fd2a:bd1a:eb4a:3333::1
nameserver 8.8.8.8
nameserver 192.168.0.254
options timeout:10

Je suis persuadé qu'il existe des moyens de l'améliorer, en changeant les metrics des gateways par exemple si vous avez des pb sur les accès sur internet.

nmcli connection modify enp0s8 ipv4.route-metric 99
```