Questions sur le chroot (32 bits dans un 64 bits)

Bonsoir,
Ce sujet fait suite aux deux sujets ci-dessous :
viewtopic.php?f=3&t=22741
viewtopic.php?f=3&t=23313
Après plusieurs jours de galère, je me suis rendu compte que Chilispot et Freeradius n’arrivaient pas à communiquer en 64 bits…
Il s’agit d’un bug (plus ou moins connu…).Il a été reporté sous Gentoo et sous Ubuntu (bugs.launchpad.net/ubuntu/+sour … bug/427918)
Bref, Chillispot fonctionne bien, Freeradius avec sa base Mysql aussi. Mais les deux refusent de se parler… Enfin ils ne chiffrent pas de la même manière le “shared secret”…

J’ai quelques options :

  • Réinstaller mon serveur en i386 (je suis pas très chaud je viens de faire une installation toute propre - Apache, Shorewall, Mysql, Postfix avec Utilisateurs virtuels, squid transparent, squidguard… la totale !);

  • Tenter ma chance avec le paquet de chillispot de Sid… Je suis sous Lenny, et je suis farouchement opposé à métisser mon sources.list (d’autant que rien ne me dit que le paquet de Sid fonctionnera mieux…);

  • Installer Freeradius dans une machine virtuelle en 32 bits;

  • Faire tourner Freeradius dans un environnement 32 bits chrooté.

J’avoue être tenté par le chroot en 32 bits, mais je suis super novice en la matière. Je ne me suis servi de chroot que pour réparer des installations à partir d’un live CD… :blush:

Chillispot parviendra-t-il à “parler” à freeradius, comment réaliser ça ? Comment communiquer à partir du système hôte avec des programmes dans un chroot ?

J’aimerais avoir votre avis sur ce nouveau dilemme qui se pose à moi…
Et allez-y franchement, je n’y connait rien… Et je ne sais pas si c’est possible, ni comment ça marche !!! :confused:

À quoi ça sert qu’on se décarcasse?
http://forum.debian-fr.org/viewtopic.php?f=8&t=14673

Salut,

[quote=“fran.b”]À quoi ça sert qu’on se décarcasse?
http://forum.debian-fr.org/viewtopic.php?f=8&t=14673[/quote]
Et merci…
:wink: J’ai l’esprit tellement occupé par mon problème que je n’ai même pas pensé à chercher…

Alors voici ce que je vais tenter :

  • Installer une Etch (i386) et “chrooter” depuis ma Lenny 64
  • Installer Chillispot + Freeradius dans l’environnement “chrooté”

J’ai tout de même quelques interrogations… Et c’est pourquoi j’ai fait un nouveau post en fait, c’est un peu “compliqué” (j’arrive à peine à schématiser…)

Chillispot crée une nouvelle interface virtuelle (tun0) dont il se sert comme tunnel.
Comment est-ce que cela va s’insérer dans mon environnement normal ?
Les demandes arrivent sur eth1, sont détournées vers tun0 par Shorewall, envoyées à Chillispot qui vérifie l’identification avec Freeradius (sur lo), autorise l’accès qui est alors redirigé vers ppp0…
De plus Chillispot sert de serveur DHCP… Va-t-il répondre sur eth1 de la machine hôte ?
ça va fonctionner tout ça ?

De plus j’aimerais que Freeradius utilise la base de donnée Mysql de l’environnement hôte, c’est possible ? De plus Chillispot à besoin de apache2, je vais être obligé de l’installer dans le chroot ? Ces deux programmes se reposent sur un serveur LAMP qui existe déjà…

Ou alors c’est complètement transparent et il n’y a aucun problème… Ce serait plutôt une bonne nouvelle…

Les boules ce bug à la c… ça simplifie pas mes affaires :laughing:
Des nouvelles dans la matinée…

Usuellement ça ne pose pas de problèmes, l’environnement chrooté et l’environnement racine partagent /var/run, /tmp/dev, /proc, /sys (et /home) donc les douilles unix, les périphériques (y compris ceux créés) apparaissent dans les deux systèmes). Il faut juste se méfier des utilisateurs (il faut avoir les mêmes UUID/GUID.

Merci des précisions.

J’ai presque terminé l’installation…

J’ai fait ma première bourde ce matin… J’ai essayé avec une etch. J’ai monté en “bind” mon home.
Mes essais n’étaient pas concluant, j’ai donc effacé le dossier avec le chroot. Jusqu’a ce qu’arrive un message d’erreur (genre ne peut effacer /mnt/etch/home dossier non vide…). Et ça n’a pas manqué, j’ai réellement effacé mon home…
Pas très grave, je n’ai rien dedans, c’est sur le serveur je ne travaille en général pas directement dessus… Emmerdant pour le navigateur avec tous mes marques-pages et tutos pour Chillispot… Bonne leçon :mrgreen:

A ce propos, comment stopper un chroot, il ne suffit pas de “quitter”, si ?

Bon ça fonctionne à peu près, mais la partie réseau, je ne comprends pas comment ça s’articule…
Un test sur Freeradius à partir de la machine hôte est bien reçue par la machine invitée… C’est déjà ça. “lo” fonctionne sur les deux machines, et c’est transparent.
Mais à partir des machines du réseau, je n’arrive pas à joindre le dhcp (celui de Chillispot) du chroot…
C’est franchement pas clair pour moi la façon dont le réseau fonctionne entre hôte/invité…

Encore moi…

La parti réseau ne fonctionne pas bien.
Chillispot est censé créer un interface virtuelle (tun0). Cela ne fonctionne pas dans l’environnement chrooté. Je ne comprends pas pourquoi.
J’ai oublié quelque chose, mais quoi…

Je pense qu’il y a un problème, car Wireshark dans la machine hôte plante lamentablement quand je tente une capture sur n’importe quelle interface…

Merci d’avance, de votre aide, si vous êtes inspirés…

Il n’y a pas de hote et d’invité, ça n’est pas une machine sur une autre machine, c’est la même machine avec des processus qui tournent. Simplement certains torunent dans un environnement différents (ici un 32 bits), cela dit, c’est le même noyau (qui est un 64 bits, heureusement compatible avec le 32 bits). Si tu fais une erreur sur le 32 bits, tu la payes (tu es courant en fait). Pour tuer un programme 32 bits, un kill suffit, tu fais un «ps ax» et tu regardes le PID du processus, tu peux le faire dans le chroot 32 bits (avec les otuils 32 bits) ou dans l’environnement 64 bits. Tu peux dans le chroot 32 bits tuer un processus 64 bits. Encore une fois les processus sont sur le même plan.

Tu peux faire tourner un serveur DHCP dans le 32 bits ou dans le 64 bits mais tu ne peux en faire tourner qu’un sur la machine (autant le faire au niveau 64 bits).

Je ne comprends pas pourquoi tu parles de machine hote…

Tu parles de plantage mais quels sont les messages?

La deuxième bonne leçon à retenir, c’est de toujours faire des sauvegardes !

  • Stopper les services/programmes du chroot (/etc/init.d/service stop ou kill pid_du_programme).
  • Quitter (exit)
  • Démonter les partitions (umount /chroot/tmp /chroot/home /chroot/dev /chroot/proc)

[quote=“fran.b”]Il n’y a pas de hote et d’invité, ça n’est pas une machine sur une autre machine, c’est la même machine avec des processus qui tournent. Simplement certains torunent dans un environnement différents (ici un 32 bits), cela dit, c’est le même noyau (qui est un 64 bits, heureusement compatible avec le 32 bits). Si tu fais une erreur sur le 32 bits, tu la payes (tu es courant en fait). Pour tuer un programme 32 bits, un kill suffit, tu fais un «ps ax» et tu regardes le PID du processus, tu peux le faire dans le chroot 32 bits (avec les otuils 32 bits) ou dans l’environnement 64 bits. Tu peux dans le chroot 32 bits tuer un processus 64 bits. Encore une fois les processus sont sur le même plan.

Tu peux faire tourner un serveur DHCP dans le 32 bits ou dans le 64 bits mais tu ne peux en faire tourner qu’un sur la machine (autant le faire au niveau 64 bits).

Je ne comprends pas pourquoi tu parles de machine hote…

Tu parles de plantage mais quels sont les messages?[/quote]

Merci…
Je mélange tout, je confond machine virtuelle avec chroot. Je commence à peine à comprendre…
Je vais parler de 64b et 32b alors.
Donc je n’ai aucun DHCP qui tourne dans la partie 64bits (j’ai stoppé dhcp-server et chillispot).
Mais quand j’exécute dans la 32b “/etc/init.d/chillispot start” rien ne se passe et l’interface tun0 n’est pas créée.
Et je n’ai rien dans les logs…

Après quand je parle de planter, c’est pour wireshark (sniffeur de réseau) qui fige dés que je commence à lui faire faire une capture - lancé dans la 64b (quelque soit l’interface, alors qu’il fonctionnait très bien hier)

Voici ce que ça fait dans 64b :

[code]spider:~# /etc/init.d/chillispot start
spider:~# ifconfig
eth1 Link encap:Ethernet HWaddr 00:0e:2e:f2:46:6e
inet adr:192.168.0.1 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6: fe80::20e:2eff:fef2:466e/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15356 errors:0 dropped:0 overruns:0 frame:0
TX packets:753 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:1482336 (1.4 MiB) TX bytes:192896 (188.3 KiB)
Interruption:20 Adresse de base:0xe000

lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:13695 errors:0 dropped:0 overruns:0 frame:0
TX packets:13695 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:5516516 (5.2 MiB) TX bytes:5516516 (5.2 MiB)

ppp0 Link encap:Protocole Point-à-Point
inet adr:10.128.0.202 P-t-P:10.6.6.6 Masque:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:3676 errors:1 dropped:0 overruns:0 frame:0
TX packets:3747 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:3
RX bytes:2179442 (2.0 MiB) TX bytes:420644 (410.7 KiB)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet adr:192.168.182.1 P-t-P:192.168.182.1 Masque:255.255.255.0
UP POINTOPOINT RUNNING MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)[/code]

Et voici dans 32b :

[code]Restarting Chillispot captive portal: chillispot.
spider:/# ifconfig
eth1 Link encap:Ethernet HWaddr 00:0e:2e:f2:46:6e
inet adr:192.168.0.1 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6: fe80::20e:2eff:fef2:466e/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15260 errors:0 dropped:0 overruns:0 frame:0
TX packets:752 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:1474376 (1.4 MiB) TX bytes:192836 (188.3 KiB)
Interruption:20 Adresse de base:0xe000

lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:13683 errors:0 dropped:0 overruns:0 frame:0
TX packets:13683 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:5515877 (5.2 MiB) TX bytes:5515877 (5.2 MiB)

ppp0 Link encap:Protocole Point-à-Point
inet adr:10.128.0.202 P-t-P:10.6.6.6 Masque:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:3642 errors:1 dropped:0 overruns:0 frame:0
TX packets:3713 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:3
RX bytes:2174921 (2.0 MiB) TX bytes:418212 (408.4 KiB)[/code]

Pas d’interface tun0.

Si je tiens TANT à faire tourner Chillispot dans la 32b, c’est parceque dans la 64b il n’est pas capable de “parler” avec Freeradius (Bug déclaré).
J’ai tenté de lancer Chillispot en 64 et Freeradius en 32. J’ai toujours le même problème d’incompréhension entre les deux programmes…

Merci de ta patience :blush:

PS merci kna !

J’ai trouvé…

Une faute dans mon script… /dev n’était pas monté… Je suis un âne :blush: :blush: :blush:

Ré-So-Lu… :smiley: :smiley: :smiley:

Merci, François pour ton aide ! Je suis là-dessus depuis 15 jours… :mrgreen:
Enfin le bug m’a fait perdre une dizaine de jours quand même…

[attachment=0]capture d’écran35.jpeg[/attachment]

PS faut-il que je fasse un rapport de Bug pour le problème entre Chillispot et Freeradius en amd 64 ? Comment fait-on ça ?

Oui, ça les intéresserait mais il faut vérifier qu’il n’existe pas. Ils doivent avoir un Bugzilla ou qque chose du genre.

PS: Rageant la faut du script du mount…

J’ai vérifié, pas de rapport à ce sujet. J’ai envoyé un message pour le signaler (pour un fois que je peux faire quelque chose pour la communauté…)

[quote=“fran.b”]PS: Rageant la faut du script du mount…[/quote] :smt101 Je commençais à devenir zinzin avec tous ces problèmes…

Bonjour à tous (et toutes)…

Encore moi… J’ai un “problème” que j’ai du mal à régler (je ne comprend pas très bien comment faire…)

J’ai donc une Lenny amd64 et une SID i386 en chroot.
J’ai besoin que des services dans le chroot soient lancés au démarrage avant d’autres services de la Lenny amd64…
Est-ce possible ?

La raison : Chillispot qui est sur le chroot crée une interface réseau virtuelle sur laquelle s’appuient des services de la Lenny amd64 (Shorewall, Apache2, Squid…) Si cette interface n’est pas créée au démarrage, ces services ne sont pas lancés, et c’est toute ma machine qui est en vrac… Il faut que je lance tout à la main, service après service… pas très pratique.

J’ai bien pensé à un script, mais je ne sais pas comment faire…

Est-ce qu’il suffirait de faire quelque chose du genre

#!/bin/sh
chroot /var/chroot/sid-ia32
/etc/init.d/chillispot start
/etc/init.d/freeradius start

Et de placer ça dans le /etc/rc avant les autres services ?

Ou faut-il que je fasse ça avec schroot ? ça revient au même non ?

#!/bin/sh
schroot -c sid32 -p chillispot
schroot -c sid32 -p freeradius

Et de la placer aussi dans le /etc/rc de manière approprié ?

Merci d’avance !