# [TUN/TAP] Tun dev et flag multicast (résolu - tanche inside)

## kwenspc

J'ai un soucis actuellement avec les device TUN. Une fois crée: l'interface résultante n'a pas les flags "habituels". 

 *Quote:*   

> 
> 
> tun0      Lien encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
> 
>           adr inet6: fe80::8c7:3280:8ae3:6882/64 Scope:Lien
> ...

 

Vous voyez ce qui cloche? Il manque NOARP et MULTICAST. Flags qui sont présents partout chez des potes.

Je ne vois vraiment pas d'où ça peut venir malheureusement. J'ai regardé 10 fois ma config kernel, rien...

(j'ai le suport multicast, etc etc...)

Est ce que udev d'une manière ou d'une autre pourrait affecter la mise en place de ces flags par défaut?

Si vous avez une idée vous me sauvez, ça fait quelques heures que je tourne autour du problème sans en voir la moindre solution.Last edited by kwenspc on Sat Apr 10, 2010 3:40 pm; edited 1 time in total

----------

## scherz0

L'absence de ces flags n'est pas forcément anormale.  Dans quel contexte cette interface est-elle utilisée ?  Est-ce le même que chez les potes que tu cites ?

Est-ce que 

```
ifconfig tun0 -arp multicast
```

 active les flags "manquants" ?  Si oui, il faut peut-être chercher du côté du prog qui configure et utilise cette interface.

----------

## kwenspc

 *scherz0 wrote:*   

> 
> 
> Est-ce que 
> 
> ```
> ...

 

Même contexte oui. Et j'ai en effet tester la mise en place de ces flags par ifconfig et ça marche (c'est d'ailleurs pour ça que je cherche à comprendre pourquoi ils n'apparaissent pas dès le début). 

C'est le même prog qui configure et utilise cette interface chez moi et chez mes amis. 

De fait c'est un simple ioctl avec TUNSETIFF en clé et IFF_TUN en flag. IFF_TUN c'est la meme valeur que TUN_TUN_DEV. Or au tun_net_init() dans le code du kernel (drivers/net/tun.c):

```

(...)

case TUN_TUN_DEV:

(...)

        dev->type = ARPHRD_NONE;

        dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;

(...)

```

Je me suis dis peut être que ces flags sont conditionés et que les miens sont peut être à 0 pour des options manquantes. Ça peut pas être le cas en fait car ces flags ne sont aucunement définis sous conditions dans /usr/src/linux/include/linux/if.h

Et puis si ces flags n'étaient pas gérer par le kernel pourquoi ifconfig arrive-t-il à les manipuler? 

Bref, ça a pas l'air de venir du kernel.

Je penche pour un truc dans /etc/sysctl.conf (le genre de fichier qu'on manipule rarament...) ou des options par défaut dans /proc (mais un reboot remettrais les pendules à l'heure en principe...)

[edit] Pour en avoir le coeur net avec ces flags j'ai collé un message de debug dans tun.c qui m'a donné ça: flags 0x1090 = 0x10 | 0x80 | 0x1000

ce qui est bon. Mais j'ai un autre truc: tun0: Disabled Privacy Extensions. Je vois pas encore ce que c'est...[/edit]

[edit2] ce message est lié à IPv6, et ça n'a pas l'air d'affecter le multicast et l'arp... [/edit2]

----------

## scherz0

 *Quote:*   

> ce message est lié à IPv6, et ça n'a pas l'air d'affecter le multicast et l'arp...

 

As-tu testé ton prog en IPv4 (si c'est possible) ?

----------

## kwenspc

 *scherz0 wrote:*   

>  *Quote:*   ce message est lié à IPv6, et ça n'a pas l'air d'affecter le multicast et l'arp... 
> 
> As-tu testé ton prog en IPv4 (si c'est possible) ?

 

Non il ne fait que de l'IPv6 (c'est un programme maison oui). Mais je te dis: le même soft chez des potes, créant le tun dev, on a bien tous les flags de défaut sur ce dernier. Mon soucis est forcément lié à ma config, soit au niveau kernel (je suis en 2.6.31-r10) soit du côté user land dans un fichier lié au réseau.

----------

## scherz0

Les pistes que j'explorerais, dans l'ordre : 

sysctl - facile à contrôler

noyau (si différent des machines sur lesquelles ça fonctionne)

config du noyau (idem)

libc

----------

## kwenspc

Je déjà vérifier tout ça maintes fois. Et rien ne me saute aux yeux...   :Confused: 

Pour ce qui est des valeurs dans /proc et /sys elles sont contrôlées en runtime, après un reboot les changements disparaissent et seuls /etc/sysctl.conf permet d'affecter automatiquement certaines valeurs non?

Ce qui est sûr c'est que c'est pas mon soft qui fait ça (le tun dev crée ailleurs possède bien ces flags). Par contre je dois clairement merder quelque part dans une config (j'ai revu 100 fois la config noyau...) parce que ça ne fait ça que chez moi et sur 2 install différentes! (une machine avec un 2.6.29 hardened, mais sans grsec d'activé, et une autre avec un 2.6.31).

J'ai testé via openvpn la création d'un dev tun, et là ça fonctionne. Openvpn passe par ip/ifconfig. Le soucis c'est que ces 2 flags manquants chez moi sont PAR DÉFAUT activé par le driver tun. Et ce n'est ni tun ni mon soft qui les vires. Il doit y avoir quelque chose quelque part qui les enlèves peu après la création du device. Mais pourquoi ne le ferait-il pas avec openvpn (ou ifconfig/ip si vous préférez)? 

Ça doit forcément venir d'une config que j'ai faite et que me mets dedans, mais où?  :Neutral: 

----------

## kwenspc

And the LOOSER is?

MOUA! et rien que MOUA!   :Embarassed: 

J'ai faillit me jeter par la fenêtre en voyant ça... même ça je me serais loupé, je suis au 1er ...

Dans les settings de flags - me demandez pas comment c'est partis, j'en sais rien - un '|' a disparu entre la version que j'ai filé à mes amis et la mienne.

Moralité: quand le problème est trop space pour être vrai, soupçonnez TOUJOURS le truc entre la chaise et le clavier...  :Mr. Green: 

----------

