Je suis en train de développer un système web pour mon école (c'est en PHP, mais ce n'est pas important).
Le système doit avoir des comportements différents selon que l'utilisateur se trouve ou non sur le réseau de l'école (plus précisément, s'il est no sur le réseau de l'école, ils doivent se connecter).
J'ai donc besoin d'un moyen fiable, idéalement infaillible (c'est peut-être trop demander...) de vérifier si les clients sont sur le réseau local.
Il semble que la façon habituelle de procéder consiste à comparer le sous-réseau de l'utilisateur au sous-réseau du serveur. Cependant, notre école possède plusieurs sous-réseaux (y compris plusieurs campus ayant chacun plusieurs sous-réseaux ainsi qu'un VPN), dont un seul est le sous-réseau du serveur. Cette méthode ne fonctionnera donc pas.
Je lis RFC1918 qui réserve les espaces IP suivants aux réseaux privés :
10.*.*.*
172.16.*.* - 172.31.*.*
192.168.*.*
Je pourrais donc vérifier si l'IP du client se trouve dans l'un de ces sous-réseaux privés ? Est-il possible que des utilisateurs extérieurs au réseau aient une telle IP ? Ou que les utilisateurs connectés au réseau de l'école n'aient pas d'IP dans l'une de ces plages ?
2 votes
Pourquoi ne pas les obliger à se connecter, quel que soit le lieu où ils se trouvent ? Ne serait-ce pas la solution la plus simple ?
0 votes
Un utilisateur sur n'importe quel réseau privé pourrait avoir ces IP. Le wifi d'un café, derrière un routeur domestique...
2 votes
Mais est-ce que leur externe IP est en dehors de cette fourchette ? Par exemple, mon wifi domestique est 10.0.1.*, mais mon IP externe est celle que les serveurs voient.
0 votes
@baum : Yep. Tu es sur la bonne voie.