Aller au contenu

DirectAccess avec des VM Linux

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.

Terminal window
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

Directaccess vm linux

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.

Terminal window
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].

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

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

Terminal window
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.

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