IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

VLAN

Crear una xarxa virtual, que permet tindré múltiples segments de xarxa virtuals en una sola interfície física.

Una VLAN representa una interfície de xarxa de capa 2 tan vàlida com qualsevol interfície de xarxa de capa 2 i per tant es poden propagar les VLAN a través d'Ethernet bridges o en enllaços WIFI.

Tipus

Port-Based VLAN: cada port físic es configura amb una ACL, especificant a quines VLAN pertany aquell port.Assignarem un numero de vlan a cada un del port del swicth

MAC-based VLAN: el commutador es configura amb una ACL que indica segons la mac a quina VLAN pertany un dispositiu. Vegeu macvlan.

Protocol-based VLAN: segons el protocol es posa el transit en una VLAN o en un altre

802.1Q: estàndard relacionat en capa 2 per a VLAN

ATM VLAN: Utilitza LAN Emulation (LANE protocol) per fer un mapejat de paquets Ethernet a cel·les ATM, es a dir converteix adreces MAC a adreces ATM

802.1Q

El protocol més utilitzat per a xarxes VLAN és IEEE_802.1Q, també conegut com VLAN Tagging. És un protocol estàndard d'encapsulació que defineix com inserir el 4 bytes (32 bits) de l'identificador VLAN (VLAN ID) en una capçalera Ethernet.

Format del frame

Jordiromero802101.png

Sistemes Operatius

VLANS a Linux

VLANS vconfig

Instal·lar el paquet vlan

$ sudo apt-get install vlan

Comprovem que ens ha instal·lat

$ sudo dpkg -L vlan | more
/.
/lib
/lib/udev
/lib/udev/rules.d
/lib/udev/rules.d/40-vlan-network-interface.rules
/lib/udev/vlan-network-interface
/usr
/usr/share
/usr/share/doc
/usr/share/doc/vlan
/usr/share/doc/vlan/howto.html
/usr/share/doc/vlan/vlan.html
/usr/share/doc/vlan/TODO.Debian
/usr/share/doc/vlan/copyright
/usr/share/doc/vlan/NEWS.Debian.gz
/usr/share/doc/vlan/changelog.Debian.gz
/usr/share/man
/usr/share/man/man5
/usr/share/man/man5/vlan-interfaces.5.gz
/usr/share/man/man8
/usr/share/man/man8/vconfig.8.gz
/etc
/etc/network
/etc/network/if-pre-up.d
/etc/network/if-pre-up.d/vlan
/etc/network/if-post-down.d
/etc/network/if-post-down.d/vlan
/etc/network/if-up.d
/etc/network/if-up.d/ip
/sbin
/sbin/vconfig

Comprovem el funcionament de la comanda vconfig

$ sudo vconfig
Expecting argc to be 3-5, inclusive.  Was: 1

Usage: add             [interface-name] [vlan_id]
       rem             [vlan-name]
       set_flag        [interface-name] [flag-num]       [0 | 1]
       set_egress_map  [vlan-name]      [skb_priority]   [vlan_qos]
       set_ingress_map [vlan-name]      [skb_priority]   [vlan_qos]
       set_name_type   [name-type]

* The [interface-name] is the name of the ethernet card that hosts
  the VLAN you are talking about.
* The vlan_id is the identifier (0-4095) of the VLAN you are operating on.
* skb_priority is the priority in the socket buffer (sk_buff).
* vlan_qos is the 3 bit priority in the VLAN header
* name-type:  VLAN_PLUS_VID (vlan0005), VLAN_PLUS_VID_NO_PAD (vlan5),
              DEV_PLUS_VID (eth0.0005), DEV_PLUS_VID_NO_PAD (eth0.5)
* FLAGS:  1 REORDER_HDR  When this is set, the VLAN device will move the
            ethernet header around to make it look exactly like a real
            ethernet device.  This may help programs such as DHCPd which
            read the raw ethernet packet and make assumptions about the
            location of bytes.  If you don't need it, don't turn it on, because
            there will be at least a small performance degradation.  Default
            is OFF.

Carreguem el modul 8021q

$sudo modprobe 8021q

Creem la vlan2

$ sudo vconfig add eth0 2

i despres la vlan3

$ sudo vconfig add eth0 3

Comprovem que s'ha creat la vlan amb la comanda ifconfig

[email protected]:~$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:30:05:eb:37:f4  
          inet addr:192.168.204.115  Bcast:192.168.204.255  Mask:255.255.255.0
          inet6 addr: fe80::230:5ff:feeb:37f4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13719 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10364 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:9866633 (9.8 MB)  TX bytes:1333077 (1.3 MB)
          Interrupt:23 Base address:0x8000 

eth0.2    Link encap:Ethernet  HWaddr 00:30:05:eb:37:f4  
          inet6 addr: fe80::230:5ff:feeb:37f4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
           RX bytes:0 (0.0 B)  TX bytes:4108 (4.1 KB)

eth0.3    Link encap:Ethernet  HWaddr 00:30:05:eb:3f:e4  
           inet6 addr: fe80::230:5ff:feeb:37f4/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0 
            RX bytes:0 (0.0 B)  TX bytes:4108 (4.1 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:2298 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2298 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
           RX bytes:266875 (266.8 KB)  TX bytes:266875 (266.8 KB)

wlan0     Link encap:Ethernet  HWaddr 00:19:5b:cc:09:58  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Afegim una ip a la vlan2 i a la vlan3

$ sudo ifconfig eth0.2 192.168.2.104
$ sudo ifconfig eth0.3 192.168.3.104

Comprovem que estem dins de la xarxa fent un ping a una altra maquina

$ping 192.168.3.117

Realitzarem la pràctica i comprovarem amb el wireshark com podem veure el paquet ping i com està format el paquet que s'envia

Jordiromerovlan01.png

Configuració permanent

Cada vegada que desconnectem el cable o tanquem la sessió del sistema, la configuració de les VLAN es perd, per a poder conservar les configuracions ho farem de la següent manera:

Afegirem al fitxer /etc/modules la línia

8021q

/etc/network/if-pre-up.d/vlan

seran les primeres accions que es realitzaran abans que s'inici la xarxa

Editarem el fitxer /etc/network/interfaces

#La interficie principal del sistema
auto eth0
iface eth0 inet dhcp

# VLAN AMB VLANID=2
auto eth0.2
iface eth0.2 inet static
       address 192.168.2.114
       netmask 255.255.255.0
       network 192.168.2.0
       broadcast 192.168.2.255

# VLAN AMB VLANID=3
auto eth0.3
iface eth0.3 inet static
       address 192.168.3.114
       netmask 255.255.255.0
       network 192.168.3.0
       broadcast 192.168.3.255

auto eth0.2 inicia la targeta quan s'engega el sistema

$ifup 

configura la targeta de xarxa sempre que estigui configurada dins del fitxer interfaces

802.3ad

VLANS ip

La comanda $ ip ens pot permetre configurar tot el relacionat amb la xarxa.Substitueix comandes com

$ ifconfig
$ route
$ arp

Crear una vlan amb la comanda ip

$ sudo ip link add link INTERFACE name INTERFACE.VID type vlan id VID

On:

  • INTERFACE: és el nom de la targeta de xarxa física/real on volem crear la VLAN. Per exemple eth0
  • INTERFACE.VID: és el nom de la interfície virtual de tipus vlan. Per exemple ether0.2, que correspondria a la VLAN amb VLAN_ID=2
  • VID: és l'identificador de la VLAN. Ha de ser un número enter.

Utilitzem al ordre ip per a crear la vlan2

$ sudo ip link add link eth0 name eth0.2 type vlan id 2

Comprovarem que s'ha creat amb la comdanda

$ ifconfig -a

eth0      Link encap:Ethernet  HWaddr 00:30:05:eb:37:f4  
          inet addr:192.168.204.115  Bcast:192.168.204.255  Mask:255.255.255.0
          inet6 addr: fe80::230:5ff:feeb:37f4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1488 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1152 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:520939 (520.9 KB)  TX bytes:149787 (149.7 KB)
          Interrupt:23 Base address:0x8000 

eth0.2    Link encap:Ethernet  HWaddr 00:30:05:eb:37:f4  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

I també amb

[email protected]:~$ ip link
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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:30:05:eb:37:f4 brd ff:ff:ff:ff:ff:ff
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
    link/ether 00:19:5b:cc:09:58 brd ff:ff:ff:ff:ff:ff
4: [email protected]: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
    link/ether 00:30:05:eb:37:f4 brd ff:ff:ff:ff:ff:ff

Afegir una direcció IP a una vlan

$ ip addr add IP/NETMASK brd BROADCAST-ADDR dev INTERFACE.VID
$ ip link set dev INTERFACE.VID up

Exemple

$ sudo ip addr add 192.168.3.3/24 brd 192.168.3.255 dev eth0.2
$ sudo ip link set dev eth0.2 up

Comprovem que ens ha posat la direcció IP

[email protected]:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:30:05:eb:37:f4  
          inet addr:192.168.204.115  Bcast:192.168.204.255  Mask:255.255.255.0
          inet6 addr: fe80::230:5ff:feeb:37f4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2794 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2081 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:923019 (923.0 KB)  TX bytes:295688 (295.6 KB)
          Interrupt:23 Base address:0x8000 

eth0.2    Link encap:Ethernet  HWaddr 00:30:05:eb:37:f4  
          inet addr:192.168.3.3  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr: fe80::230:5ff:feeb:37f4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:73 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:11542 (11.5 KB) 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:240 (240.0 B)  TX bytes:240 (240.0 B)

Conceptes

VLAN aware si el dispositiu és compatible amb vlan, per exemple una impressora seria un dispositiu que no és vlan aware

Tagged tagged és un paquet que porta la etiqueta 802.1q

untagged untagged no porta identificador vlan

ingress

egress

normes de entrada podem decidir quins paquets entren al siwtch

normes de sortida podem definir quines normes li donem en cas que hi hagi algun paquet que no correspont a la vlan

add if missing afegir al paquet si fa falta

vid vlan id, identifica la vlan

pvid vlan que es posara als paquets que no vinguin sense etiquetar, per defecte és 1 per tant no hauriem de triar 1 com a vlan

Resolució de problemes

Ens dona un error per en falta el modul 8021q

$ sudo vconfig add eth0 2
WARNING:  Could not open /proc/net/vlan/config.  Maybe you need to load the 8021q module, or maybe you are not using PROCFS??
Added VLAN with VID == 2 to IF -:eth0:-


Carreguem el modul 8021q

$sudo modprobe 8021q

Vegeu També