intranet

[Synology] Création d’un réseau intranet

Cet article a été rédigé il y a 5 années ! Il commence à dater, mais n'est pas forcément obsolète.. Lisez-le en gardant cela en tête !
Bonjour, Aujourd’hui je prends mon temps pour vous expliquer comment créer un intranet accessible depuis votre réseau local. Mais d’abord, pourquoi créer un tel réseau ? Et bien simplement pour avoir la possibilité d’accéder à des données que l’on ne veut pas rendre publiques, et ce sans avoir à taper de mot de passe ! Au programme, mise en place de la restriction, du serveur dns, et d’un serveur vpn pour l’accessibilité à distance en complément.

I) Restriction .htaccess

Nous allons commencer par créer un fichier .htaccess à la base du dossier que l’on veut restreindre (incluant les sous-dossiers)
Order deny,allow Deny from all Allow from 192.168
Décortiquons ces lignes .htaccess ensemble. Considérons que le par défaut le site est accessible. L’option "Order deny, allow" change les droits d’accès et commence par interdire l’accès, fonction des options à la ligne "Deny from". Puis vérifie qui a le droit d’accéder à la page avec la commande "Allow from". En résumé, ici on interdit pour tous l’accès à la page, puis on autorise les ip 192.168.X.Y. L’adresse 192.168 correspond au sous-réseau de mon réseau local, à changer si l’on se trouve sur un réseau plus .. original. (pour 123.321.34.9 par exemple, entrez 123.321)
  • À présent, testez que la page est accessible en tapant l’adresse ip locale du serveur (192.168.92.2, par exemple). Si tout ce passe bien, vous aurez accès à votre dossier.
  • Tapez l’adresse internet de votre serveur (http://lan.gauss-it.net, par exemple) et là : Oh surprise.. Erreur 404. Pourquoi ? Explication..
Accédons à votre serveur via l’adresse ip local, mettez-y à la racine un fichier phpinfo.php
<?php phpinfo(); ?>
Chargez le fichier php et regardez l’option REMOTE_ADDR.

Voyez que votre adresse ip correspond à votre adresse ip locale. Maintenant faites la même chose depuis votre nom de domaine.. Votre adresse ip a changé ! Il s’agit de l’adresse ip de votre connexion.

Et oui ! Tout s’explique, si vous n’avez pas accès à votre page depuis votre adresse internet, c’est car vous ne passez plus par votre réseau local. À priori la configuration .htaccess fait bien son travail finalement ! Mais pour moi c’est pas assez, qu’est-ce que vous en pensez de passer par votre ip local pour accéder à votre page lan ? Ça ne me plaît pas personnellement.. j’ai un nom de domaine, c’est pour m’en servir. Nous allons donc voir comment accéder à cette page depuis votre nom de domaine !

II) Créer un alias local sur votre nom de domaine

a. Choix de la méthode

Il y a ici, deux possibilités :
  1. Soit vous installez un serveur dnsmasq sur votre syno et vous changez vos sources dns
  2. Soit vous possédez un routeur avec un serveur dnsmasq déjà installé, pour créer un alias associé à l’adresse http://192.168.92.2. Auquel cas vous pourrez créez un alias de la forme http://example.org pour surplanter le domaine existant et ainsi vous aurez accès à votre serveur comme si vous tapiez http://192.168.92.2
Cette seconde méthode est beaucoup plus simple et fiable, car le routeur est fait pour ça, alors que mon syno non et que du coup il doit obligatoirement rester allumé !! Si l’on ne possède pas de routeur qui a cette fonctionnalité, il faut installer un firmware alternatif, à l’image de DD-WRT pour mon Netgear par exemple. C’est largement faisable, mais je n’ai pas le recul pour le faire sachant que ma connexion est assez sollicité à la maison.

b. Installation du serveur dnsmasq

Personnellement je suis dans le cas n°1, donc j’ai installé via mon syno un serveur dnsmasq à l’aide de Geasy (Cf. Prérequis) :
geasy install dnsmasq
Pensez bien à ouvrir le port 53/UDP et suivez les instructions du terminal !

c. Configuration des DNS

À présent nous allons configurer les DNS de votre connexion pour vous faire passer par votre syno. Le serveur DNS permet de traduire le nom de domaine en adresse ip, et donc maintenant que votre syno sait que gauss-it.net pointe sur 192.168.92.2, il va traduire tous les sous domaines xxx.example.org en 192.168.92.2 et le serveur Apache de votre syno vous permettra de créer des virtuals host (via l’interface du dsm) !
  • Nous allons donc aller dans votre routeur et référencer l’adresse ip locale de votre serveur dns dans le dns primaire. Le champ dns secondaire restera vide. Qu’est-ce que cela signifie ? Cela signifie que lorsque votre serveur sera éteint, seul es les adresses étant en mémoires pourront être résolues ! D’où le fait de songer à utiliser son routeur comme serveur dnsmasq car au moins pas de soucis ! Car s’il est éteint, vous êtes sur de ne pas avoir de connexion, dans tous les cas !!
  • L’autre solution pour la configuration des dns est de configurer seulement dans les paramètres de votre ordinateur le dns primaire. Mais là, uniquement vous possèderez l’accès au lan
Les DNS de notre routeur étant modifiés et effectives (redémarrez le routeur si nécessaire), vous pouvez vous connecter à votre intranet ! N’oubliez pas de configurer manuellement les dns de votre Synology pour qu’il puisse reconduire votre requête vers les dns de votre fai s’il ne trouve pas lui même la résolution. http://www.commentcamarche.net/faq/1496-serveurs-dns-des-principaux-fai (Personnellement je suis chez numericable ! Donc c’est 89.2.0.1 et 89.2.0.2 ^^)

Remarque : Cette nouvelle configuration associe votre ip locale à votre nom de domaine. Donc au passage l’accès à votre domaine est d’autant plus rapide que vous ne passez plus par le web ! C’est pratique si vous travaillez beaucoup sur votre domaine, serveur FTP, SSH, etc.. Un gain de temps considérable à l’accès de votre domaine la première fois ! ^^ Car l’adresse reste par la suite en cache un certain temps !
dig www.gauss-it.net

III) Configuration d’un serveur VPN (Complément) :

Imaginons que vous souhaitez accéder hors de chez vous à votre intranet hors de votre réseau local. La solution : la connexion VPN ! Il vous suffit de télécharger le package synology "VPN Server, de l’installer, de déverrouiller ports nécessaires et d’activer le service en indiquant l’adresse de votre serveur dans la configuration manuelle du dns de votre serveur vpn comme vous le montre l’image ci-dessous : (J’ai choisi pptp, car natif sur Mac, et les autres OS d’ailleurs il me semble, mais il n’y a aucune différences avec OpenVPN du point de vu de la procédure)

Remarque : Vous aurez remarquez que j’utilise un adressage de réseau en 192.168.92, pourquoi ce choix ? Pour éviter tous conflits depuis une connexion extérieur qui utiliserait le même sous réseau.. La plupart des connexions réseaux sont en 192.168.1 192.168.0. Si j’utilise un sous-réseau classique, il va y avoir conflit entre l’adresse dns manuelle que j’indique sur mon syno et le réseau local sur lequel je me trouve qui a la priorité.

De plus, il faut donc modifier le .htaccess en conséquence et rajouter une permission sur le sous-réseau de votre vpn:

Order deny,allow

Deny from all

Allow from 192.168

Allow from 10.0

V) Interface intranet : Showcase UI

Dans le but de lister l’ensemble des services de mon serveur, j’ai concocté une interface qui permet de lister les services et les ports en une seule page. En effet, si j’avais j’ai un doute sur un service, un numéro de port, etc.. Je n’ai qu’à aller sur mon intranet pour y trouver l’organisation des services de mon réseau. Rendez vous sur la page suivante pour télécharger l’interface :

http://apps.gauss-it.net/showcaseui

N’oubliez pas d’ajouter l’.htaccess ! 🙂 Il serait bête de se croire sur l’intra alors que tout le monde y a accès !!

Une réponse à “[Synology] Création d’un réseau intranet

  1. On peut se passer de l’installation de dnsmasq, ce dernier étant déjà présent dans /usr/syno/sbin/dnsmasq.

    Pour les directives "Allow from", je préconiserais d’utiliser les masques propres à chaque plage privée :
    Allow from 192.168.0.0/16
    Allow from 172.16.0.0/12
    Allow from 10.0.0.0/8

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *