{"id":309,"date":"2009-02-03T16:22:30","date_gmt":"2009-02-03T15:22:30","guid":{"rendered":"http:\/\/blog.guiguiabloc.fr\/?p=309"},"modified":"2009-02-03T16:22:30","modified_gmt":"2009-02-03T15:22:30","slug":"vlan-et-trunk-8021q","status":"publish","type":"post","link":"http:\/\/blog.guiguiabloc.fr\/index.php\/2009\/02\/03\/vlan-et-trunk-8021q\/","title":{"rendered":"VLAN et Trunk 802.1q"},"content":{"rendered":"<p>En relisant quelques anciens billets, je me suis rendu compte que je n&rsquo;avais pas abord\u00e9 pr\u00e9cis\u00e9ment la notion de vlan et de trunk dans une architecture r\u00e9seau.<\/p>\n<p>Corrigeons donc cela rapidement.<\/p>\n<p>Un VLAN est un r\u00e9seau Virtuel. Dans un r\u00e9seau local physique, vous pouvez donc mettre en place des r\u00e9seaux logiques, s\u00e9par\u00e9s les uns de autres, on parle alors de \u00ab\u00a0segmentation\u00a0\u00bb.<\/p>\n<p>Pour pouvoir mettre cela en place, il vous faut donc un switch qui supporte cette fonctionnalit\u00e9.<\/p>\n<p>Si maintenant vous d\u00e9sirez propager plusieurs VLANs sur un m\u00eame lien physique, il faut configurer un \u00ab\u00a0trunk\u00a0\u00bb et la norme \u00e9tablie est la 802.1q aussi appel\u00e9 couramment : dot1q.<\/p>\n<p>Pour cela, il faudra que vos paquets soit \u00ab\u00a0taggu\u00e9s\u00a0\u00bb, c&rsquo;est \u00e0 dire qu&rsquo;ils contiennent dans leurs en-t\u00eates le num\u00e9ro du vlan (VLAN ID) pour lequel ils sont destin\u00e9s.<\/p>\n<p>(Cisco supporte bien \u00e9videmment cette norme sur ses \u00e9quipements, mais \u00e9galement sa propre norme propri\u00e9taire, ISL \u00ab\u00a0Inter Swtich Link\u00a0\u00bb, dont je ne parlerais pas ici).<\/p>\n<p>En situation, nous aurons quelque chose de ressemblant a ceci :<\/p>\n<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2009\/02\/exemplevlan.png\"><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-314\" title=\"exemplevlan\" src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2009\/02\/exemplevlan-300x143.png\" alt=\"\" width=\"300\" height=\"143\" \/><\/a><\/p>\n<p>Outre un switch supportant les VLANs, il vous faudra bien \u00e9videmment un routeur pour les routages inter-vlan (ou un pc faisant office de routeur).<\/p>\n<p>Bref, a la fin, vous risquez de vous retrouvez avec cela (vous avez de la chance, je vous ouvre les arcanes de mon installation personnelle \ud83d\ude42 )<\/p>\n<div id=\"attachment_316\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2009\/02\/baieguiguiabloc.jpg\"><img aria-describedby=\"caption-attachment-316\" loading=\"lazy\" class=\"size-medium wp-image-316\" title=\"baieguiguiabloc\" src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2009\/02\/baieguiguiabloc-300x224.jpg\" alt=\"R\u00e9seau Perso Guiguiabloc\" width=\"300\" height=\"224\" \/><\/a><p id=\"caption-attachment-316\" class=\"wp-caption-text\">R\u00e9seau Perso Guiguiabloc<\/p><\/div>\n<p>(Vous trouverez un billet sur la naissance de cette baie <a title=\"Montage de la baie\" href=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2008\/01\/30\/montage-de-la-baie\/\" target=\"_blank\">ICI<\/a> )<\/p>\n<p>Les exemples suivants se basent sur un Switch Catalyst 2924 XL et un Routeur 2611-XM, mais ils restent standard pour tout IOS r\u00e9cent (comprendre qui n&rsquo;a pas 10 ans&#8230;)<\/p>\n<p>La cr\u00e9ation d&rsquo;un VLAN sur le switch est tr\u00e8s simple :<\/p>\n<pre lang=\"text\">\r\ncatalyst#vlan database\r\ncatalyst(vlan)#vlan 2 name vlan_base_de_donnees\r\nVLAN 2 added:\r\nName: vlan_base_de_donnees<\/pre>\n<p>Sur l&rsquo;interface du switch o\u00f9 est branch\u00e9 votre pc\/serveur, vous d\u00e9finissez alors sur quel VLAN il est reli\u00e9 :<\/p>\n<pre lang=\"text\">catalyst#conf t\r\nEnter configuration commands, one per line.  End with CNTL\/Z.\r\ncatalyst(config)#int fastEthernet 0\/1\r\ncatalyst(config-if)# switchport mode access\r\ncatalyst(config-if)# switchport access vlan 2\r\n\r\nCe qui donne :\r\n\r\ninterface FastEthernet0\/1\r\n description serveur Mysql\r\n port block multicast\r\n switchport access vlan 2\r\n spanning-tree portfast\r\n no cdp enable<\/pre>\n<p>La variable \u00ab\u00a0switchport access\u00a0\u00bb d\u00e9finit le droit d&rsquo;acc\u00e8s au VLAN.<\/p>\n<p><strong>Attention :<\/strong> Il existe un VLAN un peu particulier, le VLAN 1, qui est le VLAN de Management des \u00e9quipements Cisco. Eviter donc d&rsquo;y mettre des machines accessibles par tous.<\/p>\n<p>Certains recommandent de d\u00e9placer le VLAN 1 sur un autre VLAN, personnellement, \u00e7a ne m&rsquo;a pas port\u00e9 chance de jouer \u00e0 cela, donc un peu de rigueur suffit en changeant les vlans natifs sur les interfaces.<\/p>\n<p>Sachez que sur le Catalyst 2924, il existe une petite commande sympa et peu document\u00e9e :<\/p>\n<pre lang=\"text\">switchport mode multi\r\nswichport multi vlan 1,2,3<\/pre>\n<p>Cela permet a une machine d&rsquo;acc\u00e9der \u00e0 plusieurs VLANs sans avoir \u00e0 tagguer ses trames.<\/p>\n<p>Dans ce mode de configuration, les machines connect\u00e9es aux interfaces du switch n&rsquo;ont pas besoin de tagguer leurs paquets, donc une configuration r\u00e9seau toute basique (avec en passerelle l&rsquo;interface d\u00e9finit dans votre routeur par exemple).<\/p>\n<p>La connectivit\u00e9 entre notre routeur et notre switch par contre sera diff\u00e9rente.<\/p>\n<p>Nous avons 1 (voire 2) interfaces physiques sur le Cisco 2600 et c&rsquo;est sur cette interface que nous allons faire passer l&rsquo;ensemble des VLANs afin de permettre au routeur de&#8230; router \ud83d\ude09<\/p>\n<p>Cot\u00e9 Switch :<\/p>\n<pre lang=\"text\">\r\ninterface FastEthernet0\/2\r\ndescription Trunk fastEthernet 0\/0 rt-2611\r\nduplex full\r\nspeed 100\r\nswitchport trunk encapsulation dot1q\r\nswitchport mode trunk\r\nspanning-tree portfast\r\nno cdp enable\r\n<\/pre>\n<p>Ici, le mode du switch est \u00ab\u00a0trunk\u00a0\u00bb et l&rsquo;encapsulation, 802.1q.<br \/>\nSans sp\u00e9cifications particuli\u00e8res, nous passons l&rsquo;int\u00e9gralit\u00e9 des VLANs d\u00e9finis sur le switch sur cette interface.<\/p>\n<p>Vous pouvez bien sur \u00eatre plus restrictif sur cette configuration :<\/p>\n<pre lang=\"text\">\r\nswitchport trunk allowed vlan 2,3   # autorise que l'acc\u00e8s aux VLANS 2 et 3\r\n<\/pre>\n<p><strong>Attention :<\/strong> Dans ce genre de configuration, un paquet non taggu\u00e9 partira dans le vlan par d\u00e9faut qui est le VLAN 1.<\/p>\n<p>N&rsquo;oubliez donc pas d&rsquo;indiquer explicitement le VLAN par d\u00e9faut en cas de trames non taggu\u00e9es :<\/p>\n<pre lang=\"text\">\r\nswitchport trunk native vlan 2     # on envoie sur le vlan 2 si pas de tag\r\n<\/pre>\n<p>C\u00f4t\u00e9 Routeur 2600 :<\/p>\n<pre lang=\"text\">\r\ninterface FastEthernet0\/0.1\r\nencapsulation dot1Q 1 native\r\nip address 192.168.0.254 255.255.255.0\r\nip virtual-reassembly\r\nno cdp enable\r\n<\/pre>\n<p>Il ne vous reste plus qu&rsquo;a d\u00e9finir vos interfaces \u00ab\u00a0virtuelles\u00a0\u00bb sur votre routeur Cisco :<\/p>\n<p>Pour le VLAN 2 par exemple :<\/p>\n<pre lang=\"text\">\r\ninterface FastEthernet0\/0.2\r\nencapsulation dot1Q 2\r\nip address 192.168.2.254 255.255.255.0\r\nno cdp enable\r\n<\/pre>\n<p>NB : Si vous voulez faire sortir vos machines par votre passerelle g\u00e9n\u00e9rale (exemple le pix :-p) n&rsquo;oubliez pas les nat inside\/outside sur vos interfaces, ainsi que des ACL bien plac\u00e9es.<\/p>\n<p>C\u00f4t\u00e9 Linux :<\/p>\n<p>Si vous voulez faire du trunk sur Linux, il suffit d&rsquo;activer le support 802.1q dans le noyau.<\/p>\n<p>Sous Debian, apt-get install vlan<br \/>\nSous RedHat, le support est natif<\/p>\n<p>Cr\u00e9ation de l&rsquo;interface :<\/p>\n<p>Debian : <\/p>\n<p>vconfig add eth0 2 (pourt cr\u00e9er le VLAN 2)<\/p>\n<p>Modification du fichier \/etc\/network\/interfaces :<\/p>\n<pre lang=\"text\">\r\n auto eth0.2\r\n iface eth0.2 inet static\r\n address 192.168.2.254\r\n netmask 255.255.255.0\r\n network 192.168.2.0\r\n broadcast 192.168.2.255\r\n vlan_raw_device eth0\r\n<\/pre>\n<p>RedHat :<\/p>\n<p>Cr\u00e9ation du fichier  \/etc\/sysconfig\/network-scripts\/ifcfg-eth0.2<\/p>\n<pre lang=\"text\">\r\nDEVICE=eth0.2\r\nBOOTPROTO=static\r\nHWADDR=XX:XX:XX:XX:XX:XX\r\nIPADDR=192.168.2.254\r\nNETMASK=255.255.255.0\r\nNETWORK=192.168.2.0\r\nONBOOT=yes\r\nTYPE=Ethernet\r\nVLAN=yes\r\n<\/pre>\n<p>R\u00e9d\u00e9marrage des services r\u00e9seaux bien entendu.<\/p>\n<p>Dans les 2 cas, pour supprimer l&rsquo;interface, il faudra passer un :<\/p>\n<p>vconfig rem eth0.2<\/p>\n<p>(ps: l&rsquo;\u00e9criture d&rsquo;un alias d&rsquo;une interface \u00ab\u00a0vlan\u00a0\u00bb se note : eth0.2:1 par exemple)<\/p>\n<p>C\u00f4t\u00e9 OpenBSD :<\/p>\n<p>cr\u00e9ation du fichier \/etc\/hostname.vlan2 (vlandev \u00e9tant votre interface r\u00e9seau physique)<\/p>\n<pre lang=\"text\">\r\ninet 192.168.2.254 255.255.255.0 vlan 2 vlandev sis0\r\n<\/pre>\n<p>Sous Windows, ce n&rsquo;est absolument pas natif, tout d\u00e9pend de la carte r\u00e9seau et du pilote du fabricant fourni&#8230; (en m\u00eame temps, qui voudrait faire un routeur avec windows \ud83d\ude09 )<\/p>\n<p>Voil\u00e0, j&rsquo;esp\u00e8re que ces explications vous aideront a mettre en oeuvre des VLANs chez vous, et surtout \u00e0 l&rsquo;utiliser car en cloisonnement, c&rsquo;est quand m\u00eame l&rsquo;id\u00e9al.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En relisant quelques anciens billets, je me suis rendu compte que je n&rsquo;avais pas abord\u00e9 pr\u00e9cis\u00e9ment la notion de vlan et de trunk dans une architecture r\u00e9seau. Corrigeons donc cela rapidement. Un VLAN est un r\u00e9seau Virtuel. Dans un r\u00e9seau &hellip; <a href=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2009\/02\/03\/vlan-et-trunk-8021q\/\">Read More <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[27,6,7,16,3],"tags":[97,96,98,99,95],"_links":{"self":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/309"}],"collection":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/comments?post=309"}],"version-history":[{"count":12,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/309\/revisions"}],"predecessor-version":[{"id":325,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/309\/revisions\/325"}],"wp:attachment":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/media?parent=309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/categories?post=309"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/tags?post=309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}