# [tap] virtualbox

## sd44

salut a tous

bon suite au tread précédent  sur openvpn, j'aimerai utiliser virtualbox avec une interface tap pour que le pc fasse partie intégrante du reseau local.

j'avais deja essayé tap par le passé sans succes car le serveur en question etait distant et tripoté les interfaces reseaux à distance ...  :Confused: 

je voudrait savoir si quelqu'un a une procédure clair pour créér cette interface et brancher ma virtualbox dessus 

(encore un message pour guilc   :Very Happy:  )

----------

## guilc

Quand on a saisi le truc, c'est pas très compliqué. Surtout que Gentoo aide bien au niveau du script de configuration réseau  :Wink: 

petits trucs à installer :

```
emerge bridge-utils usermode-utilities
```

Configuration réseau dans /etc/conf.d/net. On commence par supprimer la configuration de l'interface réseau physique (ici eth0), puis on remplace par ceci :

```
config_eth0="null"

tuntap_vbox0="tap"

config_vbox0="null"

tunctl_vbox0="-u user"
```

On peut rajouter autant d'interfaces vboxX que souhaité (perso j'en ai 3)

Le "user" est mis pour mettre le owner de l'interface tap à l'utilisateur de la virtualbox.

Ensuite on reporte l'ancienne configuration de l'interface physique sur la configuration de br0. Exemple dans mon cas :

```
config_br0=(

    '192.168.6.28/24'

    '2001:7a8:2b1b::28/48'

)

routes_br0=(

    'default via 192.168.6.33'

    'default via 2001:7a8:2b1b::33'

)
```

Enfin, on insère toutes les interfaces sur le bridge :

```
bridge_br0="eth0 vbox0"

RC_NEED_br0="net.eth0 net.vbox0"

brctl_br0="setfd 0"
```

Ne pas oublier de créer les liens symbolique :

```
ln -s /etc/init.d/net.lo /etc/init.d/net.br0

ln -s /etc/init.d/net.lo /etc/init.d/net.vbox0
```

Et voila !

Exemple sur ma conf :

AVANT :

```
config_eth0=(

    '192.168.6.28/24'

    '2001:7a8:2b1b::28/48'

)

routes_eth0=(

    'default via 192.168.6.33'

    'default via 2001:7a8:2b1b::33'

)
```

APRES :

```
config_eth0="null"

tuntap_vbox0="tap"

config_vbox0="null"

tunctl_vbox0="-u casta"

tuntap_vbox1="tap"

config_vbox1="null"

tunctl_vbox1="-u casta"

tuntap_vbox2="tap"

config_vbox2="null"

tunctl_vbox2="-u casta"

config_br0=(

    '192.168.6.28/24'

    '2001:7a8:2b1b::28/48'

)

routes_br0=(

    'default via 192.168.6.33'

    'default via 2001:7a8:2b1b::33'

)

bridge_br0="eth0 vbox0 vbox1 vbox2"

RC_NEED_br0="net.eth0 net.vbox0 net.vbox1 net.vbox2"

brctl_br0="setfd 0"

```

La suite se passe dans la conf des virtualboxes :

Dans la configuration du réseau, on configure en "Host Interface"

Puis on indique le nom de l'interface tap crée (par exemple vbox0)

Et c'est tout !

La configuration de l'interface (ip routes) se fera de manière classique sur l'OS guest.

----------

## sd44

merci guilc pour ce tuto

j'ai un probleme quand meme :

```

#/etc/init.d/net.br0 start

 * Starting eth0

 *   Bringing up eth0                                                        [ ok ]

 * Starting vbox0

FATAL: Module tun not found.

 *   TUN/TAP support is not present in this kernel                           [ !! ]

 * ERROR:  cannot start net.br0 as net.vbox0 could not start

```

pourtant j'ai bien ajouter ça dans le kernel ?!

<*> Universal TUN/TAP device driver support

<*> 802.1d Ethernet Bridging

autre point :

'2001:7a8:2b1b::28/48' et 'default via 2001:7a8:2b1b::33'  => ça je suppose que c'est pour ipv6 ? car je ne l'ai pas mis.

merci pour ta reponse   :Very Happy: 

----------

## sd44

quel idiot   :Embarassed:  j'avais configurer le kernel et le temps d'une pose j'ai zapper de le compiler   :Embarassed:   :Embarassed:   :Embarassed: 

je vous tiend au courrant

----------

## sd44

bon ca marche tres bien du coup pour le tap 

le probleme (évidament !) :

dans virtualbox je mets "adaptateur réseau hote" -> et vbox0 dans nom de l'interface et j'ai ni dhcp ni reseau avec une ip fixe !

kesako ? une idée ? 

ps : c'est un xp dans la vm

----------

## guilc

Ah oui tiens, j'avais zapé la partie configuration du kernel  :Surprised: )

 *Quote:*   

> dans virtualbox je mets "adaptateur réseau hote" -> et vbox0 dans nom de l'interface et j'ai ni dhcp ni reseau avec une ip fixe ! 

 

Hmm, comment ça ?

Quand tu démarres ton XP, tu configure son réseau a l'intérieur de la VM, comme si une vraie interface physique était attaché à la machine virtuelle...

Si ton réseau dispose d'un serveur DHCP, il est utilisable, sinon, c'est à toi (dans les propriétés réseau de XP) de configurer l'IP statique selon ton bon vouloir  :Wink: 

 *Quote:*   

> '2001:7a8:2b1b::28/48' et 'default via 2001:7a8:2b1b::33' => ça je suppose que c'est pour ipv6 ? car je ne l'ai pas mis. 

 

Oui oui, c'est de l'ipv6.

Mais là tu mets la conf adapté à ton cas, ce n'est pas a copier/coller direct  :Wink: 

----------

## sd44

oui j'ai un dhcp mais ca passe pas j'ai donc essayer une ip fixe et je ping rien   :Shocked: 

----------

## guilc

Heu, la je vois pas.

Au final j'ai collé ici ma conf réseau complete, et pour la virtualboc, c'est la : http://www.xwing.info/reseau-vbox.png

Aucun problème, ça roule tout seul.

Le user que tu as mis dans la ligne 'tunctl_vbox0="-u user"', c'est bien le user qui lance la virtualbox ?

----------

## sd44

oui j'ai bien la meme conf que toi mais le dhcp fonctionne pas 

pour info voila /etc/conf.d/net

```

config_eth0="null"

tuntap_vbox0="tap"

config_vbox0="null"

tunctl_vbox0="-u user"

config_br0=(

    '192.168.1.245/24'

)

routes_br0=(

    'default via 192.168.1.252'

)

bridge_br0="eth0 vbox0"

RC_NEED_br0="net.eth0 net.vbox0"

brctl_br0="setfd 0"

```

et ifconfig me donne ça

```

br0       Lien encap:Ethernet  HWaddr 00:13:D4:93:80:DB

          inet adr:192.168.1.245  Bcast:192.168.1.255  Masque:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:16892 errors:0 dropped:0 overruns:0 frame:0

          TX packets:4773 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 lg file transmission:0

          RX bytes:1293787 (1.2 Mb)  TX bytes:915602 (894.1 Kb)

eth0      Lien encap:Ethernet  HWaddr 00:13:D4:93:80:DB

          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1

          RX packets:16836 errors:0 dropped:0 overruns:0 frame:0

          TX packets:5141 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 lg file transmission:1000

          RX bytes:1583938 (1.5 Mb)  TX bytes:973912 (951.0 Kb)

          Adresse de base:0xc000 Mémoire:fb020000-fb040000

lo        Lien encap:Boucle locale

          inet adr:127.0.0.1  Masque:255.0.0.0

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:107 errors:0 dropped:0 overruns:0 frame:0

          TX packets:107 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 lg file transmission:0

          RX bytes:79192 (77.3 Kb)  TX bytes:79192 (77.3 Kb)

vbox0     Lien encap:Ethernet  HWaddr 00:FF:05:29:9F:4C

          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1

          RX packets:374 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:11267 overruns:0 carrier:0

          collisions:0 lg file transmission:0

          RX bytes:36749 (35.8 Kb)  TX bytes:0 (0.0 b)

```

est ce qu'il y a un truc qui cloche ? et sur la virtualbox, c'est bien la meme plage ip que mon reseau ? je fini par avoir un doute   :Crying or Very sad: 

a relire ma conf le 'user' m'interoge ?

----------

## guilc

 *sd44 wrote:*   

> est ce qu'il y a un truc qui cloche ? et sur la virtualbox, c'est bien la meme plage ip que mon reseau ? je fini par avoir un doute  
> 
> a relire ma conf le 'user' m'interoge ?

 

Bah oui  :Smile: 

Le problème vient alors bien de là  :Wink: 

le "user" c'est le propriétaire de l'interface tap. 

Ce doit être le même que celui qui exécute la virtualbox !

----------

## sd44

je m'en doutais   :Wink:  j'essaye demain et vous tient au courant

merci guilc   :Very Happy: 

----------

## sd44

quand ca veut pas ...

je comprend pas, tout a l'air d'etre bien configurer

ip srv : 192.168.1.245

ip fixe vbox : 192.168.1.107

les ping ne passe pas, et quand je fais arp -a sur le srv j'ai ça :

? (192.168.1.107) at 08:00:27:E5:89:B2 [ether] on br0

c'est bien l'ip et la mac de ma vm, et pourtant rien passe ?!

la je bloque   :Sad: 

----------

## zyprexa

Hello

Qu'en est-il des paramètres réseau de /proc ? 

Je pense plus particulièrement à /proc/sys/net/ipv4/ip_forward, mais également à /proc/sys/net/ipv4/conf/all/proxy_arp (le all peut être limité à une ou deux interfaces suivant ce que tu as, il suffit de lister préalablement).

Alors que je trifouillais openvz, ce sont là les paramètres que je devais changer pour que le réseau fonctionne correctement. (Virtualbox également)

Il faudrait également voir du côté d'iptables si tout est ok.

----------

## sd44

le ip_forward je l'avais mis a 1

je vient de mettre 1 dans proxy_arp mais toujours rien

quand a iptables, je n'ai pas de firewall sur cette machine.

je me demande si je suis ok au niveau du kernel, j'ai le 2.6.22.6 (le dernier vanilla), et il y a pas mal de truc niveau bridge du genre 

<*> bridged ip/arp packet filtering

bridge: netfilter configuration

est ce qu'il manque quelque chose a la con ou bien ai je pu mettre une options qui bloque ?

y a t'il des outil qui pourrai me permettre de debugger ou constater ?

merci de votre aide   :Crying or Very sad: 

----------

## kwenspc

En principe le forwarding IP est pas nécessaire pour le mode bridge. Donc c'est pas ça.

(aucun besoin de netfilter pour le mode bridge non plus)

peux tu filer la sortie de brctl show ?

----------

## sd44

#brctl show

```

bridge name     bridge id               STP enabled     interfaces

br0             8000.0013d49380db       no              eth0

                                                        vbox0

```

le reste de la config se trouve au dessus dans les post precedents

----------

## kwenspc

un cat .config | grep BRIDGE  me donne ça sur la conf d'un serv (Xen cependant, et 2.6.16 donc à prendre avec des pincettes)

```

CONFIG_BRIDGE_NETFILTER=y

CONFIG_BRIDGE_NF_EBTABLES=y

CONFIG_BRIDGE_EBT_BROUTE=y

CONFIG_BRIDGE_EBT_T_FILTER=y

CONFIG_BRIDGE_EBT_T_NAT=y

CONFIG_BRIDGE_EBT_802_3=y

CONFIG_BRIDGE_EBT_AMONG=y

CONFIG_BRIDGE_EBT_ARP=y

CONFIG_BRIDGE_EBT_IP=y

CONFIG_BRIDGE_EBT_LIMIT=y

CONFIG_BRIDGE_EBT_MARK=y

CONFIG_BRIDGE_EBT_PKTTYPE=y

CONFIG_BRIDGE_EBT_STP=y

CONFIG_BRIDGE_EBT_VLAN=y

CONFIG_BRIDGE_EBT_ARPREPLY=y

CONFIG_BRIDGE_EBT_DNAT=y

CONFIG_BRIDGE_EBT_MARK_T=y

CONFIG_BRIDGE_EBT_REDIRECT=y

CONFIG_BRIDGE_EBT_SNAT=y

CONFIG_BRIDGE_EBT_LOG=y

# CONFIG_BRIDGE_EBT_ULOG is not set

CONFIG_BRIDGE=y

```

Donnes voir ce que donne la même commande chez toi.

[edit] haaan mais nan: boulet je suis. Tu peux oublier ce message  :Laughing:  il est plein de "contre-exemple" à ce que j'ai dit plus haut au sujet de netfilter et le mode bridge. Et ça va pas résoudre ton problème [/edit]

----------

## guilc

Oh mon dieu ! oui !

J'avais oublié une partie de la conf (sisi kwenspc, j'ai eu besoin de trucs dans le forward  :Wink: )

Je suis incorrigible !

Alors oui, il faut autoriser le forward

/etc/sysctl.conf :

```
net.ipv4.ip_forward = 1

net.ipv4.conf.all.forwarding = 1

```

Et niveau iptables, il faut autoriser le forward de br0 vers br0 !

```
iptables -A FORWARD -o br0 -i br0 -j ACCEPT
```

Effectivement, sans ça, rien non plus ne passait des virtualbox ver l'interface physique  :Smile: 

Décidément, j'en ai oublié des trucs dans mon post initial  :Laughing: 

----------

## kwenspc

 *guilc wrote:*   

> 
> 
> (sisi kwenspc, j'ai eu besoin de trucs dans le forward )
> 
> 

 

T'es sûr? J'ai un gros doute de ce que j'ai fait là du coup... Je checkerait lundi sur un de mes serveurs Xen.

----------

## sd44

bah ca veut pas, c'est infernal ce truc

j'ai suivi a la lettre ce topic et toujours rien, ce qui est bizard c'est que le srv connais la mac et l'ip de la vm quand je fais arp -a 

est ce qu'il y a du routage a faire, y a t'il un moyen de faire resortir ma conf pour diagnostiquer ça

la je bloque vraiment, je sais plus par ou prendre ce truc   :Crying or Very sad: 

help   :Shocked:   :Crying or Very sad: 

----------

## guilc

 *kwenspc wrote:*   

>  *guilc wrote:*   
> 
> (sisi kwenspc, j'ai eu besoin de trucs dans le forward )
> 
>  
> ...

 

Bah certain. Je me souviens même avoir galéré un bon moment avant de percuter que le problème venait de la  :Smile: 

----------

## sd44

juste un petit up car on a posté en meme temps guilc   :Wink: 

----------

## loopx

heuuuu  :Surprised: 

```

iptables -A FORWARD -o br0 -i br0 -j ACCEPT

```

T'es sur de ton coup la ???? Parce que un packet, qui entre sur br0 tout en sortant sur br0 ... fin, jamais fais de pont sous nux, et si c'est le pont, ca parrait juste note ...

Moi, jte conseil d'accepter tout (provisoirement) avec iptables, histoire d'etre certain que le problème vient pas de lui ... Et oublie pas de virer les anciennes règles ...

Sinon, un ptit iptables-save (pour nous :p) pourrait savérer utile.

----------

## guilc

 *loopx wrote:*   

> heuuuu 
> 
> ```
> 
> iptables -A FORWARD -o br0 -i br0 -j ACCEPT
> ...

 

Ouais, certain !

Un bridge, c'est quand meme une interface un peu spécifique !

et pour qu'un paquet puisse etre forwardé d'une interface du bridge vers une autre (vbox0 -> eth0 par exemple), il faut autoriser le forward au niveau iptables br0 -> br0. Ouais, c'est tordu, mais après y avoir passé un certain temps dessus, c'est bien ça, y a pas a tergiverser  :Smile: 

----------

## sd44

bon je revient a la charge !

ça marche sur ma machine perso et du premier coup en plus ...

j'ai simplement lancé ce script (récup sur la doc ubuntu   :Embarassed:  ):

```

brctl addbr br0

brctl addif br0 eth0

tunctl -t tap1 -u toto

chmod 0666 /dev/net/tun

ifconfig tap1 up

brctl addif br0 tap1

ifconfig tap1 0.0.0.0 promisc up 

ifconfig eth0 0.0.0.0 promisc up

ifconfig br0 192.168.11.2 netmask 255.255.255.0 broadcast 192.168.11.255

route add default gw 192.168.11.254

```

conclusion :

=> je comprend rien car la config est bien sur la meme que guilc a premiere vue

=> le ip_forward est inutile

=> je vais tester par curiositer avec la config de guilc (mais a priori pas de probleme)

=> de plus faut aussi que ca marche sur mon srv ...   :Rolling Eyes: 

a suivre ...   :Very Happy: 

----------

## zyprexa

 *sd44 wrote:*   

> bon je revient a la charge !
> 
> ça marche sur ma machine perso et du premier coup en plus ...
> 
> j'ai simplement lancé ce script (récup sur la doc ubuntu   ):
> ...

 

Enfin !

Personnellement, je ne suis jamais passé par l'es scripts gentoo pour bridger : je me suis fait un petit script comme celui-là et qui me charge les règles iptables qui vont bien, ça me permet de revenir à la normale sans tout désactiver.

Pour iptables, sans règles il n'y a effectivement rien à changer, mais avec, si je laisse tel quel rien ne passe ... il faut alors que je change eth0 en br0 dans le script et ça roule.

Quant à l'ipforward ça ... j'ai comme un gros doute, je ne sais plus si j'avais déjà bridgé l'interface ou pas.

----------

## sd44

en effet, j'ai essayé la conf a guilc dans tout les sens et d'autre et rien n'y fait ! il y a quelque chose qui doit m'échapper car les confs qui en résulte semble identique et pourtant ca marche pas   :Rolling Eyes: 

guilc tu as zappé quelque chose ou je devient fou et bazarde le pc par la fenetre   :Twisted Evil: 

j'ai pourtant cherché un peu partout, revue la doc gentoo (pas tres genéreuse sur cette partie du reseau (tap)) , rien a faire   :Exclamation: 

a suivre ...

----------

## guilc

AHAH ! t'ain mais faut vraiment que j'aille me jeter ! encore un dernier oubli !

La différence ?

le script ubuntu fait un chmod 666 /dev/net/tun...

Et de mon coté, j'avais fait moins violent, une regle udev qui change le groupe du périphérique...

```
# cat /etc/udev/rules.d/01-tuntap.rules

# le vboxuser doit pouvoir upper les interfaces tap

KERNEL=="tun",            NAME="net/%k",  GROUP="vboxusers" MODE="0660", OPTIONS+="ignore_remove"

```

[EDIT]

Effectivement, après un nouveau test, le forward n'est pas nécessaire...

Il a du arrivé là lorsque j'ai mis en place tout ça et que j'ai bien ramé   :Laughing: 

----------

## sd44

oui mais je pense pas que le probleme vienne de la car j'avais deja fait ta manip / ou le chmod et ca changeait rien => d'autant plus que j'ai tout fait en root pour eviter ce genre de probleme   :Wink: 

il y a autre chose ! un autre truc   :Laughing:  ?

----------

## kwenspc

 *guilc wrote:*   

> 
> 
> [EDIT]
> 
> Effectivement, après un nouveau test, le forward n'est pas nécessaire...
> ...

 

aah me disais bien!    :Cool: 

 l'honneur est sauf, je suis pas gateux! pas encore... 

----------

## guilc

Bon, ben cette histoire du forward, c'est BIZARRE.

pendant un moment, ça a marché sans. Mais la, ça faisait un petit moment que mes virtualbox n'avaient pas tourné (premier redémarrage depuis la MAJ en vbox 1.5.2 en fait), plus moyen de sortir de ma machine.

Par hasard, je rerentre "iptables -A FORWARD -o br0 -i br0 -j ACCEPT" et PAF, ça résoud le problème.

Alors utile ? pas utile ?

En tous cas, il me débloque la situation dans ce cas  :Very Happy: 

----------

## sd44

moi j'ai pas besoin de faire ça,

d'un autre coté :

-> j'arrive toujours pas a utiliser les script net de gentoo pour ça (et j'ai fais 1 millions de test)

-> j'utilise donc la procedure ci dessus

-> j'ai pas de firewall sur le pc en question

-> j'avais pas le ip_forward d'activé et ca marchait

j'aimerai bien comprendre guilc comment utiliser le meme script que toi car les bidouilles reseau ...

----------

## guilc

 *sd44 wrote:*   

> j'aimerai bien comprendre guilc comment utiliser le meme script que toi car les bidouilles reseau ...

 

Bah je comprends (toujours) pas pourquoi ça ne tourne pas chez toi !

J'ai beau en refaire le tour, tout est dit dans le topic... Je n'ai absolument rien d'autre pour faire tourner les bridges. Juste cette bizarrerie du forward...

C'est depuis migré en baselayout 2, mais ça ne change rien sur le fond...

----------

## sd44

si ça peux aider

```

~ # brctl showmacs br0

port no mac addr                is local?       ageing timer

  1     00:07:cb:0d:b8:c2       no                 0.00                 => freebox

  1     00:14:38:b6:8e:2e       no               263.28                => imprimante reseau

  1     00:17:31:87:6c:40       yes                0.00                 => br0 et eth0

  2     00:ff:1c:de:7c:74       yes                0.00                  => vbox

  2     08:00:27:17:4a:df       no                12.44                 => xp sous virtualbox

```

```

~ # ifconfig

br0       Lien encap:Ethernet  HWaddr 00:17:31:87:6C:40

          inet adr:192.168.11.2  Bcast:192.168.11.255  Masque:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:6947618 errors:0 dropped:0 overruns:0 frame:0

          TX packets:7376792 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 lg file transmission:0

          RX bytes:5084901338 (4849.3 Mb)  TX bytes:3638307483 (3469.7 Mb)

eth0      Lien encap:Ethernet  HWaddr 00:17:31:87:6C:40

          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1

          RX packets:6947755 errors:0 dropped:0 overruns:0 frame:0

          TX packets:7376781 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 lg file transmission:1000

          RX bytes:5187079793 (4946.7 Mb)  TX bytes:3684828927 (3514.1 Mb)

          Interruption:23 Adresse de base:0xe000

lo        Lien encap:Boucle locale

          inet adr:127.0.0.1  Masque:255.0.0.0

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:57 errors:0 dropped:0 overruns:0 frame:0

          TX packets:57 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 lg file transmission:0

          RX bytes:5563 (5.4 Kb)  TX bytes:5563 (5.4 Kb)

tun0      Lien encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

          inet adr:192.168.100.50  P-t-P:192.168.100.49  Masque:255.255.255.255

          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

          RX packets:7946 errors:0 dropped:0 overruns:0 frame:0

          TX packets:12402 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 lg file transmission:100

          RX bytes:1519570 (1.4 Mb)  TX bytes:845398 (825.5 Kb)

vbox0     Lien encap:Ethernet  HWaddr 00:FF:1C:DE:7C:74

          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:4319 overruns:0 carrier:0

          collisions:0 lg file transmission:0

          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

```

c'est quoi ce dropped : 4319 ?

----------

