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

Splashcreen - Routeur - DNS

22 réponses
Avatar
Francois Goudal
Bonjour,
Mon probleme est quelque-peu particulier : je suis actuellement en train
de developper une solution de routeur pour de l'internet par satellite
dans des avions.
Sur le routeur tourne un linux.
Ce linux gere les canaux a internet (2 canaux de 64k avec possibilite
d'aggregation pour disposer de 128k).
Sur ce routeur, j'ai fait une interface web permettant notamment
d'activer ou de desactiver l'acces a internet (car a 10$ la minute par
canal ouvert, on veut pouvoir facilement controler l'etat de la connexion).
Mon but maintenant est de faire en sorte que, si l'acces a internet est
desactive, alors toute requete web sortante aboutira sur la page de
gestion des canaux.
En gros, pour faire simple, je suis en train de developper un HotSpot
tel qu'on en trouve deja tout faits tel que ChilliSpot ou NoCat.
Le seul probleme c'est que ces logiciels sont plutot concus pour
fonctionner sur une connexion haut debit type ADSL, et donc permanente,
ce qui ne peut pas etre mon cas.
J'ai donc bien pu faire en sorte de redirriger toutes les requetes
sortant sur le port 80 vers mon serveur web interne, donc toute requete
vers une adresse IP externe aboutit systematiquement sur la page de
gestion des canaux.
Mon probleme se situe au niveau des DNS. En effet, lorsque sur un PC qui
accede a la connexion, on met une adresse DNS alors que la connexion est
desactivee, ce PC va tout d'abord tenter de resoudre le nom. Cette
requete va echouer et donc on aura une jolie erreur.

Je cherche donc un moyen de faire en sorte que quand on bloque l'acces a
internet via la page, on puisse du meme coup mettre en place un systeme
qui fasse systematiquement tout resoudre sur l'IP du routeur. J'ai bien
trouve quelques petits trucs, notamment dnshijacker qui permet de faire
cela mais cela pose de gros problemes de cache apres et ca ne me
convient pas vraiment.
Si vous voyez une solution pour faire un hotspot sachant faire cela
correctement, je suis tres interesse par votre idee ;-)

N.B. : Le routeur dispose d'un Bind configure en serveur DNS cache.

Merci d'avance !

Cordialement,

--
Francois Goudal
Epita promo 2008 - Ing2 - President Evolutek
francois@goudal.net

10 réponses

1 2 3
Avatar
Eric Belhomme
Francois Goudal wrote in
news:44f6d374$0$26013$:

Si vous voyez une solution pour faire un hotspot sachant faire cela
correctement, je suis tres interesse par votre idee ;-)

le gros problème qui se pose, ca va être la TTL des enregistrements DNS...

A mon avis tu ne prends pas le problème dans le bon sens : plutot que
vousloir jouer sur le resolver (ce qui me semble _tres_ compliqué, pour pas
dire impossible, a cause des problèmes de cache et de TTL) tu devrais
plutot intercaler un proxy qui redirige tout le traffic vers ton serveur
ouèbe quand tes cannaux sont fermés ?

A creuser...

PS: tu bosserais pas à la Sagem des fois ? genre sur un projet dédié au
A380 ???

--
Rico

Avatar
Francois Goudal
Eric Belhomme wrote:
Francois Goudal wrote in
news:44f6d374$0$26013$:

Si vous voyez une solution pour faire un hotspot sachant faire cela
correctement, je suis tres interesse par votre idee ;-)

le gros problème qui se pose, ca va être la TTL des enregistrements DNS...



He oui, c'est tout a fait cela :-/

A mon avis tu ne prends pas le problème dans le bon sens : plutot que
vousloir jouer sur le resolver (ce qui me semble _tres_ compliqué, pour pas
dire impossible, a cause des problèmes de cache et de TTL) tu devrais
plutot intercaler un proxy qui redirige tout le traffic vers ton serveur
ouèbe quand tes cannaux sont fermés ?



Oui, j'ai deja developpe une solution comme cela, cependant ca n'est pas
satisfaisant car il faut que le pc ait le proxy configure, or, on veut
que le splashscreen apparaisse sur nimporte quel PC sans imposer que le
PC ait une quelconque config specifique.
La solution de rendre le proxy transparent ne fonctionne pas non plus
etant donne que dans ce cas, le navigateur considere qu'il n'y a pas de
proxy et la resolution va se faire directement avec le resolveur de la
machine au lieu que cela soit le proxy qui la fasse.
Je pense deja avoir tourne la solution avec un proxy dans tous les sens,
je ne trouve pas de solution qui me convienne...

A creuser...



Oui lol, ca fait un moment que je creuse un peu dans tous les sens mais
la je ne sais plus par ou chercher. C'est pourquoi je viens voir si
quelqu'un ici aurait plus d'immagination que moi ^^

PS: tu bosserais pas à la Sagem des fois ? genre sur un projet dédié au
A380 ???



Ah non lol, c'est un routeur destine a des avions d'affaires, pas des
avions de ligne. Et je ne suis pas chez Sagem non plus ;-)

Merci tout de meme,

Cordialement,

--
Francois Goudal
Epita promo 2008 - Ing2 - President Evolutek



Avatar
Fabien LE LEZ
On Thu, 31 Aug 2006 14:17:52 +0200, Francois Goudal
:

Mon probleme est quelque-peu particulier : je suis actuellement en train
de developper une solution de routeur pour de l'internet par satellite
dans des avions.


Une fibre optique de quelques milliers de kilomètres, c'est pas
envisageable ?
En plus, on pourrait suspendre des publicités sur le câble, ça
rentabiliserait l'opération.

Plus sérieusement, je suis d'accord avec Eric : la solution classique
est un proxy transparent. Reste à savoir si tu veux te contenter du
web, ou s'il te faut aussi SMTP, POP et NNTP.
J'imagine que faire passer Emule ou Bittorrent n'est pas la priorité ?
:-p

Au fait, combien de temps faut-il pour établir la connexion ?
Si ce temps est assez faible, on pourrait envisager de couper
automatiquement la connexion au bout de quelques dizaines de secondes,
puis la rétablir automatiquement dès qu'un paquet doit partir.

Avatar
Fabien LE LEZ
Note : fr.comp.reseaux.ip pourra peut-être t'apporter des
solutions -- quitte à revenir ici pour savoir comment les
implémenter.
Avatar
Francois Goudal
Fabien LE LEZ wrote:
On Thu, 31 Aug 2006 14:17:52 +0200, Francois Goudal
:

Mon probleme est quelque-peu particulier : je suis actuellement en train
de developper une solution de routeur pour de l'internet par satellite
dans des avions.


Une fibre optique de quelques milliers de kilomètres, c'est pas
envisageable ?


Malheureusement non :D ^^

En plus, on pourrait suspendre des publicités sur le câble, ça
rentabiliserait l'opération.



Les gens qui utilisent ce genre de service n'ont a priori pas
franchement besoin d'une si "petite" source de revenus ;-)

Plus sérieusement, je suis d'accord avec Eric : la solution classique
est un proxy transparent. Reste à savoir si tu veux te contenter du


Non, un proxy fonctionne, mais un proxy transparent ne fonctionne *pas*
car la resolution est alors faite directement par l'hote, avant meme de
contacter le proxy...
A moins que j'ai rate quelque chose par contre, dans ce cas, je veux
bien savoir comment vous faites ;-)

web, ou s'il te faut aussi SMTP, POP et NNTP.


Pour le splashscreen, il s'agit juste de Web. Pour ce qui est du reste,
on les route simplement, lorsque la connexion existe, sinon c'est tout
betement un No route to host qui se produit et on n'en parle plus.

J'imagine que faire passer Emule ou Bittorrent n'est pas la priorité ?
:-p


Au prix que cela coute, et vu le debit, non, effectivement, ca n'est pas
franchement la priorite ^^


Au fait, combien de temps faut-il pour établir la connexion ?


C'est plutot rapide, contrairement a ce que l'on pourrait croire. Une
connexion s'etablit en moyenne en a peu pres 2 a 3 secondes. Par la
suite, la latence est d'environ 500ms.

Si ce temps est assez faible, on pourrait envisager de couper
automatiquement la connexion au bout de quelques dizaines de secondes,
puis la rétablir automatiquement dès qu'un paquet doit partir.



Non, je detaille :
Les canaux sont deja ouverts et fermes automatiquement selon le besoin.
En gros, Si c'est deconnecte et que je fais partir un paquet, ca va
ouvrir un canal. Si en plus, les 64k de ce canal sont atteints, on ouvre
le 2eme, puis on les referme au bout de 30 secondes d'inactivite.

Mais il y a en plus de cela, une possiblite de bloquer completement la
connexion. Les PC clients sont souvent sous windows, et peuvent
eventuellement avoir des logiciels qui pourraient tenter regulierement
des connexions (windows le fait lui meme deja, pour se mettre a jour...)
et on ne peut pas se permettre d'imposer des restrictions de ce cote la,
donc le seul moyen est bien de permettre un blocage definitif dans le
routeur.
Donc en gros, quand c'est bloque, y'a rien qui doit partir, meme pas une
petite requete DNS par ci par la ^^.

Cordialement,

--
Francois Goudal
Epita promo 2008 - Ing2 - President Evolutek



Avatar
Sébastien Monbrun aka TiChou
Dans le message <news:44f6d374$0$26013$,
*Francois Goudal* tapota sur f.c.o.l.configuration :

Bonjour,

Je cherche donc un moyen de faire en sorte que quand on bloque l'acces a
internet via la page, on puisse du meme coup mettre en place un systeme
qui fasse systematiquement tout resoudre sur l'IP du routeur.


Une idée comme ça : au niveau IP rediriger toutes les requetes DNS vers une
autre adresse IP locale et sur laquelle BIND écouterait aussi.
Ensuite, utiliser les « views » de BIND et l'option match-destinations. Sur
la view par défaut, une zone hint normale. Sur la view secondaire, une zone
hint avec un wildcard qui résoudra tout sur l'adresse IP de votre
Splashscreen, comme par exemple :

$TTL 1D
. IN SOA . root (
1
12H
2H
4W
3H
)

. IN NS .
. IN A 192.168.0.1
* IN A 192.168.0.1


--
Sébastien Monbrun aka TiChou

Avatar
Fabien LE LEZ
On Thu, 31 Aug 2006 14:59:29 +0200, Francois Goudal
:

Non, un proxy fonctionne, mais un proxy transparent ne fonctionne *pas*
car la resolution est alors faite directement par l'hote, avant meme de
contacter le proxy...


J'avoue n'avoir jamais mis ça en place, mais techniquement, ça doit
être possible.


Si on se contente du web, c'est relativement simple, puisque tous les
navigateurs sont capables d'envoyer une requête en HTTP/1.1.
Interrogé par un client, le DNS renvoie une adresse IP bidon.
Quand le client ouvre une connexion HTTP, la passerelle l'intercepte,
et lit le header "Host:", et effectue une vraie requête DNS pour
transmettre la requête HTTP au vrai serveur.


Pour que tous les services fonctionnent, il faut faire encore plus
sioux. Je ne sais pas si Bind saura faire ça tout seul.
La solution que je vois est une sorte de NAT à l'envers.
Supposons qu'il client veuille se connecter à machin.example.com (qui
est un serveur quelconque -- web, mail, peu importe).
Il commence par une requête DNS ; le serveur lui donne une adresse qui
n'a pas encore été utilisée, comme 10.42.54.1. Bien sûr, le serveur
doit enregistrer que 10.42.54.1 correspond à machin.example.com.
Ensuite, le client veut ouvrir une connexion vers 10.42.54.1.
Trois solutions :
1- On est connecté, le serveur effectue une requête DNS, voit
que l'adresse IP réelle de machin.example.com est 14.16.17.258, et
NATe la connexion vers ce serveur.
2- On n'est pas connecté, et il s'agit d'une connexion sur le
port 80 ou 443. Le serveur route alors la connexion sur le serveur web
interne, qui affiche ton "splashscreen".
3- On n'est pas connecté, et il s'agit d'un autre type de
connexion. On répond "Host unreachable".

Avatar
Fabien LE LEZ
On Thu, 31 Aug 2006 14:48:25 +0200, Francois Goudal
:

Oui lol, [...]
Ah non lol, [...]


Attention, tu es atteint de lolisme. C'est une maladie assez grave,
dont l'origine n'est pas bien connue. Elle disparaît généralement
quelques années après la puberté ; si tu as plus de 17 ans et que tu
ponctues encore tes phrases par "lol", il faut vraiment que tu te
poses des questions.

Avatar
Fabien LE LEZ
Je viens d'écrire :

Il commence par une requête DNS ; le serveur lui donne une adresse qui
n'a pas encore été utilisée, comme 10.42.54.1


Bien entendu, la durée de vie est calculée pour que l'adresse expire à
l'atterrissage.

Avatar
Fabien LE LEZ
On Thu, 31 Aug 2006 14:59:29 +0200, Francois Goudal
:

Les PC clients sont souvent sous windows, et peuvent
eventuellement avoir des logiciels qui pourraient tenter regulierement
des connexions (windows le fait lui meme deja, pour se mettre a jour...)


Déjà, "null-router" (i.e. adresse IP = 127.0.0.1) tous les serveurs de
Windows update, de mise à jour de logiciels (anti-virus par exemple),
etc., devrait éviter des connexions inutiles, tout en réduisant la
charge sur le serveur.

1 2 3