NicoElro.Net

OpenBSD, informatique libre, humeurs et coups de coeur,...

Aller au contenu Aller au menu Aller à la recherche

Interviews de Marc Espie

En me promenant sur le web, je suis tombé sur ces deux interviews de Marc Espie, développeur français d'OpenBSD. Elles sont un peu vieilles (2003 quand même), mais toujours d'actualités. Quelques citations s'imposent...

A propos de son métier : Je suis développeur OpenBSD depuis pas mal d’années. J’enseigne également dans une école d’informatique, où j’essaie d’apprendre à mes étudiants à écrire du code correct et à se servir de leur cerveau. Ça se passe plutôt bien pour eux, et au moins, je leur fais des cours sur des sujets que je connais, comme le développement logiciel tel qu’il se pratique réellement.

Ou ce qu'il pense du nouveau noyau Linux : Rien du tout. Je ne l’ai même pas essayé. Ils ont réécrit quel bout de fond en comble, cette fois ?

Interview sur LinuxFrench
Interview sur Libroscope avec Miod Vallat

Bonnes lectures.

Pré-commandes d'OpenBSD 4.3

Les pré-commandes d'OpenBSD 4.3 sont maintenant acceptées. Rappelons que cette release est attendue -comme prévue- pour le 1er mai 2008. Les principales modifications apportées depuis la dernière 4.2 sont disponibles ici, et ici pour plus de détails. Notons que l'on trouvera la nouvelle implémentation du snmpd. Que du bon !

Les nouveaux tee-shirt et affiches sont également de la partie ! La boutique est ici.

Because security matter

Patch pour le driver re(4) sous OpenBSD

Bon, un problème récurrent sur OpenBSD concerne un certain freeze, ayant lieu assez rapidement après le boot si on utilise le driver re(4) (chipset Gigabit Realtek, soit un truc super courant sur les laptops et carte mères récentes...). D'ailleurs, ça en parle pas mal sur bugs@ et tech@.

Certains ont pu corriger le problème en forçant le transit des données en Base100TX, d'autres n'ont même pas ce problème. Enfin, pour ceux ayant ce chipset réseau sur du pcie, là, c'est le freeze systématique. brad@ a pas mal bossé sur le problème, mais ça stagne et il est assez difficile à résoudre. Le problème est apparement dû aux paquets multicasts. markus@ a trouvé un fix à l'arrache, qui est carrément de désactiver le multicast... Oui, c'est crade, mais c'est temporaire, et ça peut permettre d'utiliser cette carte pendant ce temps. Ca ne passera jamais dans le CVS par contre, faut pas déconner, OpenBSD c'est pas Linux :-) (c'est apparement la solution adoptée dans le kernel Linux pour ce chipset, oui, ça fait peur, mais comme d'hab, chut...).

Voici donc le fix pour ceux étant 4.2-current, ça se joue dans sys/dev/ic/re.c :

--- re.c	16 Jan 2008 09:52:34 -0000	1.75
+++ re.c	22 Jan 2008 21:44:56 -0000
 -570,6 +570,7  re_setmulti(struct rl_softc *sc)
   	case RL_HWREV_8101E:
   	case RL_HWREV_8168_SPIN1:
   	case RL_HWREV_8168_SPIN2:
+		hashes1 = hashes0 = 0xffffffff;
   		CSR_WRITE_4(sc, RL_MAR0, swap32(hashes1));
   		
CSR_WRITE_4(sc, RL_MAR4, swap32(hashes0));
    		break;

Enfin, voici le fix pour ceux tournant en 4.2-stable, toujours dans le même fichier :

--- re.c.old    Tue Jan 29 21:28:55 2008
+++ re.c        Sun Feb  3 17:57:11 2008
 -568,6 +568,7  re_setmulti(struct rl_softc *sc)
        if (hwrev == RL_HWREV_8100E_SPIN1 || hwrev == RL_HWREV_8100E_SPIN2 ||
            hwrev == RL_HWREV_8101E || hwrev == RL_HWREV_8168_SPIN1 ||
            hwrev == RL_HWREV_8168_SPIN2) {
+               hashes1 = hashes0 = 0xffffffff;
                CSR_WRITE_4(sc, RL_MAR0, swap32(hashes1));
                CSR_WRITE_4(sc, RL_MAR4, swap32(hashes0));
        } else {

Voilà, en attendant de trouver mieux... D'ailleurs, pour ceux ayant le même problème, n'hésitez pas à poster vos dmesg sur bugs@, ou de envoyer directement markus@ ou brad@. Plus il y aura de monde aidant à pister ce problème, plus vite il sera résolu :-)

Skype sous OpenBSD, c'est possible !

Des fois, on doit utiliser certains logiciels qu'on aime pas... Voire qui ne sont pas portés sous notre OS favori. Mais pour ça, on a deux choix :

  • opter pour la simplicité, et donc, aller sur un OS le supportant (au hasard, Windows)
  • soit, bidouiller pour le faire fonctionner sur notre OS adoré

Bon, ben moi, pour utiliser Skype sous OpenBSD, j'ai choisi la deuxième solution ! Voici un tutorial qui explique comment faire, vous allez voir, c'est très simple... :-) Bon par contre, pas de conversations audios, mais bon, j'en ai pas l'utilité.

De retour sous OpenBSD !

Ca y est, j'ai enfin repassé mon laptop sous OpenBSD (après avoir dû le passer sous du GNU/Linux pour mon précédent boulot), et ça défonce tout. Pour ne pas avoir à me faire chier à suivre les mises à jour hebdomadaires et pour pouvoir profiter de quelque chose de stable (dans le sens ça bouge pas), j'ai opté cette fois-ci pour une 4.2-Stable. L'autre PC, lui, reste en -current.

Mais bon, histoire de profiter de quelques dernières mises à jour présentes dans -current (et donc la future 4.3-stable), j'ai eu à modifier un peu les sources du kernel. En premier lieu, pour intégrer une version plus récente du driver wpi(4), et ensuite un petit fix pour le driver re(4).

Pour finir, un petit screenshot de l'ensemble :

Load Balancing avec Packet Filter

Je me suis mis au Load Balancing avec l'excellent Packet Filter, le firewall d'OpenBSD. Bon, ça n'a pas été sans problèmes :-) Voyons voir ce qu'il faut faire :

web_servers = "{ 192.168.1.10, 192.168.1.11, 192.168.1.12 }"
rdr on $ext_if proto tcp from any to any port 80 -> $web_servers round-robin sticky-address

Ainsi, toute les connexions web arrivant sur la machine seront redirigées vers les machines 192.168.1.10, ou 192.168.1.11, ou 192.168.1.12, de manière collante avec le sticky-adress puisqu'une connexion donnée aura toujours le même serveur pour ne pas perdre les sessions et d'autres données, mais aussi de manière équilibré avec le round-robin pour que chaque serveur ait la même charge.

Seulement, ça ne marche pas aussi simplement : les paquets seront bien transmis à une de ses adresses, mais le retour des informations se fera légèrement moins bien (pas du tout, quoi), puisque l'adresse source transmise n'a pas changé... On va donc faire du NAT et rajouter la ligne suivante avant la règle rdr :

nat on $ext_if proto tcp from any to any port 80 -> $web_servers port 80

Ca va maintenant marcher beaucoup mieux ! Mais bon, c'est quand même plus propre de scinder le réseau en deux parties : une visible (contenant donc le firewall), et l'autre privée, contenant les serveurs.

Putain, c'est quand même vachement balaise Packet Filter. Qui a dit que ça renvoyait le IPTables de Linux à l'âge de pierre ? :-)

On se marre bien des fois

Des fois, sur misc@openbsd.org, entre deux trolls, on a des messages assez marrants ! Comme quoi, les apparances sont bien trompeuses :-)