NCSI ou « connectivité limitée » sous Windows

Depuis Windows Vista et Seven lorsque vous connectez un ordinateur à un réseau filaire ou wifi l’icône vous indique l’état de la connexion: non connecté, connectivité limitée ou accès internet.

Cette information est obtenue avec NCSI ( Network Connectivity Status Indicator ). Cette fonctionnalité fonctionne de la manière suivante:

  1. NCSI effectue une requête DNS sur www.msftncsi.com, puis demande la page http://www.msftncsi.com/ncsi.txt. C’est un fichier texte contenant Microsoft NCSI.
  2. NCSI effectue une requête DNS sur dns.msftncsi.com. Cela résout normalement en 131.107.255.255. Si cette vérification échoue on a un problème de connectivité voire un DNS menteur. Mais cette vérification est le plus souvent utilisée lors d’une authentification requise par une page web (type FreeWifi, NeufWifi ou tout autre hotspot).

La fonction part d’une bonne intention mais on envoie quand même une requête à Microsoft avec son IP … et les logs sont gardés:

IIS logs are stored on the server at www.msftncsi.com. These logs contain the time of each access and the IP address recorded for that access. These IP addresses are not used to identify users, and in many cases, they are the address of a network address translation (NAT) computer or proxy server, not a specific client behind that NAT computer or proxy server.

Source

Si on souhaite désactiver cette fonction on peut le faire dans la base de registre:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet
Under the Internet key, double-click EnableActiveProbing, and then in Value data, type: 0. The default for this value is 1. Setting the value to 0 prevents NCSI from connecting to a site on the Internet during checks for connectivity.

On peut également créer son propre serveur pour utiliser cette fonction en modifiant les entrées du registre correspondantes.

Après recherche on tombe sur des articles plus détaillées comme Super User.

Citation

« Anti-intellectualism has been a constant thread winding its way through our political and cultural life, nurtured by the false notion that democracy means that ‘my ignorance is just as good as your knowledge.’ »
L’anti-intellectualisme a été un fil conducteur faisant son chemin notre vie politique et culturelle, nourrie par la fausse idée que la démocratie signifie que « mon ignorance vaut autant que vos connaissances».

Isaac Asimov

UDP over SSH port forwarding

Il est courant d’utliser les tunnels SSH pour faire transiter divers flux TCP. Cependant on ne peut utiliser le port forwarding directement avec du TCP (exemple du DNS ou SNMP). Ce billet vous montre les étapes à effectuer pour atteindre ce but.

Etapes par étapes

Ouvrir un tunnel SSH avec TCP forward port

Depuis votre machine, se connecter au serveur SSH distant avec l’option -L pour utiliser le port forwarding :

1
local# ssh -L PORT_TCP_LOCAL:localhost:PORT_TCP_DISTANT IP_SERVEUR_SSH

La commande précédente transfère depuis le port_tcp_local de localhost vers le port_tcp_distant de server.

Mise en place de TCP to UDP sur le serveur

Sur le serveur SSH on ouvre un listener sur le port PORT_TCP_DISTANT qui transfèrera les données vers le port UDP du serveur voulu (par exemple dans le cas d’un DNS forwarding l’IP du resolveur DNS).
Avant tout il faut créer un FIFO qui fait office de transfert en local. Une fifo est une communication bidirectionnel entre deux processus. La fifo est à distinguer du pipe qui est unidirectionnel (gauche output vers droit input).

1
server# mkfifo /tmp/fifo
1
server# nc -l -p PORT_TCP_DISTANT < /tmp/fifo | nc -u IP_SERVEUR_UDP PORT_UDP_DISTANT > /tmp/fifo

Cela permet au trafic TCP du serveur SSH d’être transmis vers le le port du serveur distant portant le service UDP nous intéressant et de transmettre également le retour.

Mise en place du UDP sur TCP sur votre machine

Maintenant nous devons effectuer la manoeuvre opposée sur notre machine.

1
local# mkfifo /tmp/fifo
1
local# sudo nc -l -u -p PORT_UDP_LOCAL < /tmp/fifo | nc localhost PORT_TCP_LOCAL > /tmp/fifo

Cela permet au trafic UDP provenant du PORT_UDP_LOCAL d’être transféré dans le tunnel SSH écoutant sur le PORT_TCP_LOCAL

Illusions d’optique

Toute ces images sont fixes (jpg ou png). Et pourtant elles bougent ! N’hésitez pas à les ouvrir en grand dans un onglet pour mieux apprécier l’illusion.

Mac OS X et wget

Wget est un utilitaire bien pratique pour télécharger des fichiers en ligne de commande. Malheureusement OSX ne le propose par défaut. On peut bien sur l’installer via les ports mais sur un autre Mac que le sien on peut avoir besoin d’une solution plus rapide et moins intrusive.
OSX propose heureusement curl qui peut remplir le même rôle avec l’option :

1
-O/--remote-name   Write output to a file named as the remote file

Mais les habitudes ont la vie dure et donc pour simuler wget il est plus simple de rajouter un alias:

1
echo 'alias wget="curl -O"' >> ~/.bash_profile

Curl propose plein d’autres options. Pour les consulter:

1
curl --help

ou

1
man curl

Si vous rencontrez l’erreur:

1
2
3
$ curl -O http://www.jmanteau.fr/
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information

Il faut alors utiliser curl de la façon suivante:

1
2
3
4
curl  http://www.jmanteau.fr/ > sortie.html
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100 34039    0 34039    0     0  25476      0 --:--:--  0:00:01 --:--:-- 26865