Comment accéder à un site web directement depuis son adresse IP ?

Ce billet est dans la lignée de mes billets taggués DNS, à savoir :
-DNS - Vulgarisation
-Résolution DNS et hébergement mutualisé
-DNS et vie privée
-DNS, DNSSEC et DNSCrypt

Rappel : Habituellement, un nom de domaine est associé à une adresse IP qui est celle du serveur et c'est le DNS qui permet de connaitre l'adresse IP du serveur, quand on tape une adresse URL dans la barre d'adresse (cf mes billets précédents sur le DNS).

Comment peut-on faire pour accéder à un site directement depuis son adresse IP, c'est à dire sans passer par le DNS ? Ce billet explorera différentes pistes et apportera différentes explications. Vous êtes invité à commenter et apporter des précisions, des explications, et/ou à corriger via les commentaires. Merci.

Prérequis

Pour accéder à un site web directement via l'adresse IP du serveur et non via le nom de domaine (en passant par une demande au DNS (ou au cache), il faut que le site web ne soit pas hébergé sur un serveur mutualisé (domaine virtuel)
(Voir Résolution DNS et hébergement mutualisé).

Cas d'un hébergement non mutualisé/serveur ayant sa propre IP

Dès lors où on connait l'adresse IP du serveur, la saisie d'une adresse du type http://A.B.C.D/ (où A.B.C.D. est l'adresse IP du serveur) dans la barre d'adresse du navigateur fera afficher directement le site web par défaut disponible à la racine du serveur web.

Cas d'un accès via la combinaison IP/nom d'utilisateur

Certains serveurs ont différents utilisateurs et mettent à disposition de chacun d'eux un espace personnel pour un site web (généralement sous la forme /var/www/login ou /home/login/wwww).

Pour accéder à votre site sans utiliser de nom de domaine, on aura alors besoins de 2 choses : l'adresse IP du serveur et le nom d'utilisateur. L'accès se fait alors via une URL du type http://A.B.C.D/ login/ » où A.B.C.D est une adresse IP et username le "nom du site"/le login/le nom d'utilisateur.

La notion de port

Pour simplifier, on peut considérer les ports comme des portes donnant accès à un serveur. Un port est identifié par un numéro et traditionnellement, un numéro de port est associé à un "service" / un type de "fonctionnalité". Le port 80 est pour la consultation d'un serveur HTTP par le biais d'un navigateur web et 443, pour les connexions HTTP utilisant une surcouche de sécurité de type SSL : HTTPS. Ce sont ces fameuses "portes" que l'on ouvre/bloque quand on utilise un logiciel ou un matériel parefeu/firewall. On peut comparer ça à des tuyaux ou des numéros de voie que l'on ouvre/ferme à la circulation.

Par défaut, si l'on saisit l'adresse http://A.B.C.D/ dans un navigateur, on arrive via le port 80. Si le serveur fait une redirection automatique par la version sécurisée, l'adresse sera transformée en httpS ://A.B.C.D/ et on sera connecté au serveur via le port 443 (et non plus 80).

Si je saisis https://A.B.C.D:443/ je me connecte donc au serveur web (et donc je consulte le site web associé), en mode sécurisé.

Cette notion de port explique que l'on a parfois des adresses du type http://A.B.C.D:8080 quand on teste un site web qui correspond à une application métier par exemple.

Le fichier /hosts

Sous Windows il se trouve sous le chemin %SystemRoot%\\system32\\drivers\\etc\\hosts Sous "Linux" il se trouve sous le chemin /etc/hosts. Ce fichier permet d'ajout des correspondance adresse IP - nom. Ainsi au lieu de taper une adresse du type

http://127.0.0.1/ ou http://localhost/, on pourra taper l'adresse http://www.monsite.com pour tester son site web qui se trouve sur un serveur sur son réseau (ici sur sa propre machine).

Censure au niveau du DNS On peut détourner cet usage pour ajouter des adresses IP de serveur de sites webs. Par exemple, pour contourner la censure de l'adresse de thepiratebay.se (qui se fait au niveau des DNS : quand on demande au DNS l'adresse du site, il ne renvoie pas l'adresse IP et on ne peut donc pas aller sur le site).

Il suffit d'ajouter dans le fichier host une ligne indiquant : 192.168.0.1 thepiratebay.se

L'ordre de résolution du nom (d'abord le fichier host, et ensuite une demande au DNS) se fait via ce fichier de configuration, ligne order hosts,bind. Quand on tape thepiratebay.se dans la barre de son navigateur, le fichier host donne l'adresse du site ThePirateBay et on peut accéder au site, bien que celui-ci soit censuré.

Je vous invite à lire, sur ce sujet le billet Filtrage administratif actif, comment le contourner ? sur le blog de Matlink

A approfondir

Reste à approfondir pour compléter ce billet :
- Cas où on est derrière un proxy, pour forcer l'usage du fichier /hosts (car c'est le proxy qui fait la résolution DNS)
- Le protection DDoS de Cloudflare empêcherait la connexion directe via l'IP. A vérifier/voir comment faire dans ce cas.

Vus : 1781
Publié par genma : 387