ACL + Zodiac FX + faucet: tráfico intercambiado entre controlador y switch

Escenario 1

Se tiene una configuración como la que se muestra en la figura:

acl1

En la máquina 10.0.1.30 se están ejecutando dos servidores TCP, en el puerto 1111 y 2222 respectivamente. Se desea conseguir la siguientes reglas de acceso:

  • Permitir que cualquier máquina pueda enviar mensajes ARP y mensajes ICMP.
  • Únicamente desde 10.0.1.20 se acceda al servidor 10.0.1.30:1111 y a ningún otro servidor que se pueda estar ejecutando en 10.0.1.30.
  • Ninguna otra máquina podrá tener acceso a 10.0.1.30.

Para permitir esta configuración se configura el fichero simple_acl_faucet.yaml:

version: 2

vlans:
    100:
        name: "test-ACL-faucet-1"
dps:
    zodicac-fx-1:
        dp_id: 0x70B3D56CD74C
        hardware: "ZodiacFX"
        interfaces:
            1:
                native_vlan: 100
                acl_in: 1
            2:
                native_vlan: 100
                acl_in: 1
            3:
                native_vlan: 100
                acl_in: 1

acls:
  1:

    - rule:
        # Permitir tráfico ARP
        eth_type: 0x0806 # ARP
        actions:
             allow: 1
    - rule:
        # Permitir tráfico ICMPv4
        eth_type: 0x0800 # IPc4
        ip_proto: 0x01 # ICMPv4
        actions:
             allow: 1
    - rule:
        # Permitir tráfico  TCP a 10.0.1.30:1111, sólo desde 10.0.1.20
        eth_type: 0x0800 # IPv4
        ipv4_dst: 10.0.1.30
        ipv4_src: 10.0.1.20
        ip_proto: 0x06 # TCP
        tcp_dst: 1111
        actions:
             allow: 1
    - rule:
        # Permitir respuesta al tráfico  TCP a 10.0.1.30:1111 que fue enviado sólo desde 10.0.1.20
        eth_type: 0x0800 # IPv4
        ipv4_src: 10.0.1.30
        ipv4_dst: 10.0.1.20
        ip_proto: 0x06 # TCP
        tcp_src: 1111
        actions:
             allow: 1
    - rule:
        # No permitr cualquier tráfico IPv4 a 10.0.1.30
        eth_type: 0x0800 # IPv4
        ipv4_dst: 10.0.1.30
        actions:
             allow: 0
    - rule:
        # Permitir cualquier otro tráfico
        eth_type: 0x0800 # IPv4
        ipv4_src: 10.0.1.0/24
        actions:
              allow: 1

Al arrancar el controlador se instalan los siguientes flujos en las tablas faucet como resultado de configurar estas reglas ACL. Véase que como a priori no se puede saber en qué puertos están conectadas las máquinas que se están comunicando, las reglas se escriben igual para cada uno de los puertos del switch, en este caso los puertos 1, 2 y 3. La prioridad viene dada por el orden de escritura de las reglas en ese puerto, comenzando en 9099 y disminuyendo.

Flujos que implementan ACL para in_port=1

Table Flujo en ZodiacFX Priority eth_type ip_proto ipv4_src ipv4_dst tcp_src tcp_dst in_port actions paquete openFlow meaning
0 30 9099 ARP 1 GOTO TABLE 1 Paquete Todos los paquetes ARP recibidos en puerto 1 pasan a tabla 1
0 31 9098 IPv4 ICMPv4 1 GOTO TABLE 1 Paquete Todos los paquetes ICMPv4 recibidos en puerto 1 pasan a tabla 1
0 32 9097 IPv4 TCP 10.0.1.20 10.0.1.30 1111 1 GOTO TABLE 1 Paquete Todos los paquetes TCP recibidos en puerto 1 de 10.0.1.20 hacia 10.0.1.30:1111 pasan a tabla 1
0 33 9096 IPv4 TCP 10.0.1.30 10.0.1.20 1111 1 GOTO TABLE 1 Paquete Todos los paquetes TCP recibidos en puerto 1 de 10.0.1.30:1111 hacia 10.0.1.20 pasan a tabla 1
0 34 9095 IPv4 10.0.1.30 1 DROP Paquete Todos los paquetes TCP recibidos en puerto 1 hacia 10.0.1.30 se descartan
0 35 9094 IPv4 10.0.1.0/24 1 GOTO TABLE 1 Paquete Todos los paquetes IPv4 con origen en la red 10.0.1.0/24 recibidos en puerto 1 pasan a la tabla 1

Flujos que implementan ACL para in_port=2

Table Flujo en ZodiacFX Priority eth_type ip_proto ipv4_src ipv4_dst tcp_src tcp_dst in_port actions paquete openFlow meaning
0 37 9099 ARP 2 GOTO TABLE 1 Paquete Todos los paquetes ARP recibidos en puerto 2 pasan a tabla 1
0 38 9098 IPv4 ICMPv4 2 GOTO TABLE 1 Paquete Todos los paquetes ICMPv4 recibidos en puerto 2 pasan a tabla 1
0 39 9097 IPv4 TCP 10.0.1.20 10.0.1.30 1111 2 GOTO TABLE 1 Paquete Todos los paquetes TCP recibidos en puerto 2 de 10.0.1.20 hacia 10.0.1.30:1111 pasan a tabla 1
0 40 9096 IPv4 TCP 10.0.1.30 10.0.1.20 1111 2 GOTO TABLE 1 Paquete Todos los paquetes TCP recibidos en puerto 2 de 10.0.1.30:1111 hacia 10.0.1.20 pasan a tabla 1
0 41 9095 IPv4 10.0.1.30 2 DROP Paquete Todos los paquetes TCP recibidos en puerto 2 hacia 10.0.1.30 se descartan
0 42 9094 IPv4 10.0.1.0/24 2 GOTO TABLE 1 Paquete Todos los paquetes IPv4 con origen en la red 10.0.1.0/24 recibidos en puerto 2 pasan a la tabla 1

Flujos que implementan ACL para in_port=3

Table Flujo en ZodiacFX Priority eth_type ip_proto ipv4_src ipv4_dst tcp_src tcp_dst in_port actions paquete openFlow meaning
0 44 9099 ARP 3 GOTO TABLE 1 Paquete Todos los paquetes ARP recibidos en puerto 3 pasan a tabla 1
0 45 9098 IPv4 ICMPv4 3 GOTO TABLE 1 Paquete Todos los paquetes ICMPv4 recibidos en puerto 3 pasan a tabla 1
0 46 9097 IPv4 TCP 10.0.1.20 10.0.1.30 1111 3 GOTO TABLE 1 Paquete Todos los paquetes TCP recibidos en puerto 3 de 10.0.1.20 hacia 10.0.1.30:1111 pasan a tabla 1
0 47 9096 IPv4 TCP 10.0.1.30 10.0.1.20 1111 3 GOTO TABLE 1 Paquete Todos los paquetes TCP recibidos en puerto 3 de 10.0.1.30:1111 hacia 10.0.1.20 pasan a tabla 1
0 48 9095 IPv4 10.0.1.30 3 DROP Paquete Todos los paquetes TCP recibidos en puerto 1 hacia 10.0.1.30 se descartan
0 49 9094 IPv4 10.0.1.0/24 3 GOTO TABLE 1 Paquete Todos los paquetes IPv4 con origen en la red 10.0.1.0/24 recibidos en puerto 3 pasan a la tabla 1

results matching ""

    No results matching ""