Problème de configuration vlan

Bonjour à tous,

J’essaye de transformer un mini-itx équipé d’une seule NIC en router. N’ayant aucune possibilité d’insérer une carte réseau supplémentaire et ayant un switch supportant le vlan, j’aimerais donc le transformer en “Router-on-a-stick”.

Avec iproute2, aucun problème. L’interface vlan se monte et obtient son ip par dhcp sans aucun problème.

ip link add link eth0 address 70:71:bc:cc:5e:cf dev mywan type macvlan ip link set up dev mywan dhclient -v mywan

Si possible, j’aimerais éviter de monter cette interface par script mais plutôt passer par /etc/network/interfaces et c’est là que ça coince. L’interface se monte mais ne reçoit pas de bail ip.

[code]iface eth0 inet dhcp
netmask 255.255.255.0

iface eth0.1 inet dhcp
netmask 255.255.255.0
hw-mac-address 70:71:bc:cc:5e:cf
[/code]

Un tcpdump sur un serveur dhcp de mon réseau me montre qu’il reçoit bien un DHCPDISCOVER et répond par un DHCPOFFER qui reste sans effet. Pas de DHCPREQUEST et donc pas de DHCPACK du serveur. Sur le client, un tcmpdump sur l’interface eth0.1 montre que les DHCPOFFER du serveur ne sont pas reçus. Pas de firewall sur le client pendant les tests. Paquet vlan installé et noyau compatible. Rien d’anormal dans syslog.

Mystère.

Une idée?

Les deux ne font pas la même chose.
Ta configuration manuelle avec ip crée une interface virtuelle basée sur l’adresse MAC spécifiée (ce n’est pas du VLAN taggé IEEE802.1q) alors que ta configuration par le fichier interfaces crée une interface taggée IEEE802.1q dans le VLAN 1.

PS : l’option “netmask” n’est valable que pour la méthode “static”, pas pour la méthode “dhcp”.

Serais-je alors contraint à utiliser iproute2 dans un script pour arriver à mes fins? Pas de possibilité par le fichier interfaces?

Ça dépend du type de VLAN que tu veux.
Mais de toute façon tu peux toujours exécuter des commandes ip via /etc/network/interfaces avec des options pre-up, up, down, post-down.

Le type de vlan: je souhaite juste utiliser mon unique carte réseau sur deux réseaux. Mon lan d’un côté, de l’autre mon cable-modem. Je ne me suis jamais intéressé aux vlan jusqu’à aujourd’hui. Je patauge un peu mais profite de l’occasion pour en apprendre un peu plus.

Effectivement ou bien mettre un hook dans /etc/network/if-up.

Comment as-tu configuré les VLAN et les ports du switch ?
Pourquoi un VLAN par adresse MAC plutôt que par tag IEEE802.1q qui est la méthode classique ?

Cette approche n’est pas vraiment adaptée à la configuration particulière d’une interface unique puisque ces scripts sont exécutés pour toutes les interfaces activées. Cela n’apporte rien et nuit à la lisibilité.

[quote=“PascalHambourg”]Comment as-tu configuré les VLAN et les ports du switch ?
Pourquoi un VLAN par adresse MAC plutôt que par tag IEEE802.1q qui est la méthode classique ?[/quote] Je n’ai rien configuré sur le switch. Je branche mon cable-modem sur le switch et tout semble fonctionner correctement après avoir acitvé net.ipv4.ip_forward=1 et mis une règle iptables (chaine POSTROUTING de la table NAT ). Pour m’éclairer, pourrais-tu expliquer en quoi l’utilisation du tag IEEE serait plus appropriée?

[quote=“PascalHambourg”]
Cette approche n’est pas vraiment adaptée à la configuration particulière d’une interface unique puisque ces scripts sont exécutés pour toutes les interfaces activées. Cela n’apporte rien et nuit à la lisibilité.[/quote]

Noté.

Ah… Ça explique bien des choses. L’utilisation de VLAN n’est pas automatique et il ne suffit pas que le switch soit compatible, il faut le configurer pour que cela fonctionne.

Par exemple :
VLAN par défaut = LAN interne : non taggé, sur tous les ports sauf le port du modem.
VLAN WAN : non taggé sur le port du modem, taggé sur le port du routeur.

Et l’adresse MAC de la commande ip, elle vient d’où ?

Note :
Tu peux faire un routeur avec une seule interface, sans VLAN, mais dans ce cas les deux réseaux interne/externe ne sont pas séparés et partagent le même domaine de diffusion ethernet. Pas terrible pour la sécurité si le routeur doit faire du filtrage. Et je ne parle pas du mélange des serveurs DHCP du modem et du LAN interne.

Le tag, c’est ce qui permet de reconnaître qu’une trame ethernet appartient à un VLAN donné sur un lien ou un port ethernet par lequel on fait passer plusieurs VLAN, comme la liaison entre le routeur et le switch.

Et pourtant, elle tourne!

Mon switch est un Linksys SD216 qui, après vérification, ne semble pas supporter les VLAN et n’est pas programmable. Pourtant la configuration de mon premier post avec iproute2 fonctionne. Mais je dois effectivement m’assurer qu’aucun autre serveur DHCP n’est à l’écoute sur mon lan sans quoi le premier qui envoie un DHCPOFFER gagne!

[quote=“PascalHambourg”]Par exemple :
VLAN par défaut = LAN interne : non taggé, sur tous les ports sauf le port du modem.
VLAN WAN : non taggé sur le port du modem, taggé sur le port du routeur.[/quote]

Dans quel cas suis-je donc avec ma configuration iproutes2:

[code]1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 70:71:bc:cc:5e:ce brd ff:ff:ff:ff:ff:ff
inet 192.168.0.151/24 brd 192.168.0.255 scope global eth0
inet6 fe80::7271:bcff:fecc:5ece/64 scope link
valid_lft forever preferred_lft forever
4: mywan@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 70:71:bc:cc:5e:cf brd ff:ff:ff:ff:ff:ff
inet 123.123.123.8/24 brd 123.123.123.255 scope global mywan
inet6 fe80::7271:bcff:fecc:5ecf/64 scope link
valid_lft forever preferred_lft forever

ip route

123.123.123.0/24 dev mywan proto kernel scope link src 123.123.123.8
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.151
default via 123.123.123.1 dev mywan [/code]

[quote=“PascalHambourg”]Et l’adresse MAC de la commande ip, elle vient d’où ?[/quote] C’est juste un essai dans le but reprendre l’adresse mac de mon ancien router pour garder mon ip publique. Pas important et je peux m’en passer.

[quote=“PascalHambourg”]
Tu peux faire un routeur avec une seule interface, sans VLAN, mais dans ce cas les deux réseaux interne/externe ne sont pas séparés et partagent le même domaine de diffusion ethernet. Pas terrible pour la sécurité si le routeur doit faire du filtrage. Et je ne parle pas du mélange des serveurs DHCP du modem et du LAN interne.[/quote]

Ici, avec l’option “type macvlan” j’utilise un VLAN (WAN?) non?

[quote=“PascalHambourg”]
Le tag, c’est ce qui permet de reconnaître qu’une trame ethernet appartient à un VLAN donné sur un lien ou un port ethernet par lequel on fait passer plusieurs VLAN, comme la liaison entre le routeur et le switch.[/quote]Quel serait donc le marqueur de trame dans ma configuration ci-dessus si je supprime l’adresse mac de ma commande iproute2?

Je n’ai toujours pas compris pourquoi je ne reçois pas de réponse DHCP quand je configure l’interface VLAN avec le paquet VLAN et /etc/network/interfaces (voir plus haut) alors que tout se passe bien avec la commande iproute2. L’interface est configurée et fonctionnelle. Elle envoie bien sa requête de bail mais ne reçoit rien. J’ai une solution avec iproute mais j’aimerais comprendre.

Enfin, l’utilisation de post-up dans interfaces pose un problème si la commande exécutée retourne un code exit > 0. Dans ce cas l’interface ne se monte pas du tout. Faut être sûr de son coup.

Mais pas comme tu le penses. Il n’y a pas de VLAN.

Aucun. Il n’y a pas de VLAN. Juste un aiguillage par adresse MAC destination des trames reçues par le routeur.

Non, pas vraiment. Pour pouvoir parler de VLAN dans cette configuration il faudrait que l’équipement à l’autre bout du câble ethernet (en clair, le port du switch) fasse aussi de l’aiguillage des trames en fonction de l’adresse MAC.[quote=“ripat”]Je n’ai toujours pas compris pourquoi je ne reçois pas de réponse DHCP quand je configure l’interface VLAN avec le paquet VLAN et /etc/network/interfaces (voir plus haut) alors que tout se passe bien avec la commande iproute2.[/quote]
Parce qu’avec macvlan l’interface émet et attend du trafic non taggé. Avec vlan elle émet et attend du traffic taggé avec l’identificateur de VLAN 1, alors qu’aucun autre équipement de ton réseau n’est configuré pour gérer du trafic taggé.

Ok, pas de VLAN donc. J’enregistre. Quelles précautions particulière dois-je prendre avec une configuration iproute macvlan? Pourrais-tu me mettre sur la voie?

Et, merci pour ces explications qui me permettent d’y voir un peu plus clair.

D’abord, je veux être sûr que ce qui suit est bien clair pour toi : avec un switch non manageable, l’utilisation de macvlan n’apporte pas grand chose. Tout au plus, cela crée une interface virtuelle distincte pour le côté WAN, ce qui peut éventuellement faciliter la gestion comme sur un routeur à deux interfaces.

Fondamentalement, macvlan ou pas, tu es dans la situation que j’ai décrite plus haut où LAN et WAN cohabitent sur le même réseau. Les précautions à prendre en découlent directement : tu dois considérer que ton LAN est directement connecté au modem, le routeur ne protège pas le LAN contre ce qui peut sortir du modem. Le seul rempart éventuel entre le LAN et l’extérieur est le modem. Selon le niveau de confiance qu’on peut accorder à ce dernier, au pire, chaque machine doit assurer sa protection comme si elle était directement connectée à l’internet public.

Je vois ce que tu veux dire. Je vais donc devoir faire mon marché pour un bon petit switch compatible vlan. Si quelqu’un a une suggestion…

Mais si je persévère dans mon projet de faire un router avec une seule carte réseau et si je comprends bien la notion de vlan, j’imagine que le router-on-a-stick et le modem se retrouveront sur le même vlan, mais les autres postes du lan? Comment se feront les branchements puisqu’il n’y aura qu’une seule interface physique sur le router? Est-ce correct de dire que les trames taguées du vlan router <—> modem ne baveront pas sur le lan et que l’interface du router côté lan. Je patauge un peu moins grâce à tes explications mais je patauge encore…

+-----------+ +------+ xxxxxx | | |MODEM | xx xxxx | +----|--------+ +---------xxx xxxx | Vlan | | +------+ x xx |-----------| xx x | Lan | | +------+ xx x | | | |ROUTER| xxx xx | +----|--------+ | xxxx xxx | | +------+ xxxxx | | | | +------+ | +-------------+PC 1 | | | +------+ | | | | +------+ | +-------------+PC 2 | | | +------+ | | | SWITCH | +-----------+

Si tu le souhaites, tu peux éditer le dessin sur ce lien (ou en faire un nouveau):
asciiflow.com/#Draw484346049 … 1461057227

Ce serait plutôt ça: Les + sont des ports non taguées i.e associées à un VLAN donné, tu as 2 VLAN, celui destiné à ton Modem (tag 1 par exemple), et celui correspondant à ton LAN (tag 2). Les T sont les ports tagués (i.e sur lesquels les trames sont taguées en fonction du VLAN auquel elles sont destinées). Par port, comprendre interface physique (en clair eth0).

J’espère ne pas dire de bêtises, j’avais du manipuler cela il y a quelque temps.

+-----------+ +------+ xxxxxx | VLan1 | |MODEM | xx xxxx | +-|--------+ +---------xxx xxxx | T | +------+ x xx |------|----| xx x | VLan2| | +------+ xx x | | | |ROUTER| xxx xx | T----|--------T | xxxx xxx | | +------+ xxxxx | | | | +------+ | +-------------+PC 1 | | | +------+ | | | | +------+ | +-------------+PC 2 | | | +------+ | | | SWITCH | +-----------+

Un adaptateur USB-ethernet pourrait constituer une alternative moins chère, même si l’USB n’est jamais l’idéal pour le réseau.

C’est le but des VLAN : diviser le switch physique en plusieurs “switches virtuels” isolés les uns des autres. Mais franchement, si c’est flou à ce point, tu devrais te documenter un peu plus sur les VLAN, la littérature générale ne manque pas.

@fran.b: bien compris. Merci pour la précision.

@PascalHambourg: Il existe apparemment des switchs VLAN pour à peine plus cher qu’un adaptateur usb-ethernet. Je regarde de ce côté. Merci.