Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Port ouvert ou pas ?

4 réponses
Avatar
benoitlst
Bonjour à tou·t·e·s,

La commande :
$ php -S localhost:8000

Lance un serveur local de test en tant que simple utilisateur dans la
home.
Cf.
https://www.php.net/manual/fr/features.commandline.webserver.php

Je ne me sens pas assez compétant pour m’assurer que mon ordi n’expose
pas le port 8000 et donc que les pages et le contenu du répertoire soit
visible avec son ip publique ou son ip locale quand je suis le réseau
wifi d’un lieu publique par exemple.

Le fait de remplacer localhost par l'ip locale ou publique ne sert pas
la page, ce qui semble rassurant, mais j'aimerais en savoir plus sur ce
point.

Merci d’avance.

Benoit

4 réponses

Avatar
Alexandre Goethals
Bonjour,
la commande ss (qui est incluse dans Debian à la place de netstat de puis
Stretch) permet de visualiser les ports d'écoute de la machine.
ss -ltn => afficher les sockets TCP (-t) à l'état LISTEN (-l) avec le
numéro de port associé (-n). Il faut regarder alors quelle est l'adresse
(Local Address) associée au port 8000. Si c'est 127.0.0.1, le socket est
en écoute uniquement sur l'interface locale (loopback).
Le 09/10/2019 à 12:30, a écrit :
Bonjour à tou·t·e·s,
La commande :
$ php -S localhost:8000
Lance un serveur local de test en tant que simple utilisateur dans la
home.
Cf.
https://www.php.net/manual/fr/features.commandline.webserver.php
Je ne me sens pas assez compétant pour m’assurer que mon o rdi n’expose
pas le port 8000 et donc que les pages et le contenu du répertoire
soit visible avec son ip publique ou son ip locale quand je suis le
réseau wifi d’un lieu publique par exemple.
Le fait de remplacer localhost par l'ip locale ou publique ne sert pas
la page, ce qui semble rassurant, mais j'aimerais en savoir plus sur
ce point.
Merci d’avance.

Benoit
Avatar
benoitlst
Le 2019-10-09 13:26, Eric Degenetais a écrit :
Le mer. 9 oct. 2019 12:31, a écrit :

Bonsoir,
localhost est une carte réseau virtuelle qui n'est visible que de
l'ordinateur lui-même. Il n'y a donc pas de soucis : le serveur
n'écoute pas le port 8000 sur les adresses visibles de l'extérieur
(carte WiFi, carte ethernet).

Merci pour l’info, me voilà rassuré sur ce point !
Qu'appelez vous l'ip publique ?

Ce que j’ai appelé ip publique, c’est celle qui m’est attribuée par un
fournisseur d’accès à internet, qu’on peut connaître avec par ex :
whatsmyip.org.
Celle que j’aurais dû appeler ip locale est celle attribuée par le
routeur ou la box, affichée par ifconfig.
En ipv4, la configuration la plus
courante est que votre machine reçoit une adresse ip locale
délivrée par un routeur et contrôleur de domaine local (rôle tenu
par la box en filaire ou en WiFi dans les configurations grand public)
qui joue le rôle d'intermédiaire avec l'adresse ip publique,
laquelle est généralement partagée. En ipv6 il y a plus d'adresses
possibles, l'ordinateur peut recevoir de son contrôleur de domaine
directement son ip publique.
Dans les deux cas c'est distinct de localhost, et les serveurs qui
écoutent sur localhost ne sont pas visibles de l'ip locale, encore
moins de la publique.

Parfait ! ;)
Encore merci, bonne soirée.
--
Benoit
Avatar
Pascal Hambourg
Le 09/10/2019 à 13:22, Alexandre Goethals a écrit :
la commande ss (qui est incluse dans Debian à la place de netstat depuis
Stretch) permet de visualiser les ports d'écoute de la machine.

ss ne remplace pas netstat, c'est une alternative à netstat (pas au sens
de dpkg). netstat est toujours disponible dans le paquet net-tools. La
différence est qu'il n'est plus forcément installé par défaut (ça dépend
de l'environnement de bureau).
Il faut regarder alors quelle est l'adresse
(Local Address) associée au port 8000. Si c'est 127.0.0.1, le socket est
en écoute uniquement sur l'interface locale (loopback).

C'est inexact. La socket écoute sur une adresse, pas une interface. Le
"weak host model" appliqué par le noyau Linux ne restreint pas l'usage
d'une adresse locale à l'interface à laquelle elle est affectée.
Il est néanmoins vrai que la plage 127.0.0.0/8 est traitée de façon
particulière pour se conformer au standard d'internet qui impose que ces
adresses ne devraient jamais être vues sur un réseau en dehors d'un
hôte. Mais d'une part cette restriction est appliquée par le noyau au
niveau du routage des paquets (en empêchant l'envoi ou la réception de
paquets ayant une adresse source ou destination dans cette plage sur une
interface non loopback) et non des sockets, et d'autre part le noyau a
un paramètre net.ipv4.conf.<interface>.route_localnet qui permet de la
désactiver sur une interface donnée.
Avatar
Pascal Hambourg
Le 09/10/2019 à 13:26, Eric Degenetais a écrit :
localhost est une carte réseau virtuelle qui n'est visible que de
l'ordinateur lui-même.

Non, "localhost" n'est pas une interface mais une adresse IP : 127.0.0.1
en IPv4 et ::1 en IPv6. Cf. /etc/hosts.
Il n'y a donc pas de soucis : le serveur n'écoute
pas le port 8000 sur les adresses visibles de l'extérieur (carte WiFi,
carte ethernet).

L'explication est fausse, mais la conclusion est juste dans le cas par
défaut. Cf. mon autre réponse dans ce fil.
Qu'appelez vous l'ip publique ? En ipv4, la configuration la plus courante
est que votre machine reçoit une adresse ip locale délivrée par un routeur
et contrôleur de domaine local (rôle tenu par la box en filaire ou en WiFi

Depuis quand les box internet jouent-elles le rôle de contrôleur de
domaine ? Tu ne confondrais pas avec serveur DHCP ?
En ipv6 il y a
plus d'adresses possibles, l'ordinateur peut recevoir de son contrôleur de
domaine directement son ip publique.

En IPv6 généralement les hôtes en configuration automatique ne reçoivent
pas une adresse mais un préfixe /64 diffusé par le routeur, et se
choisissent une ou plusieurs adresses à l'intérieur de ce préfixe.