6.5.2. Uso de conjuntos con nombre en nftables


El marco nftables admite conjuntos con nombre mutables. Un conjunto con nombre es una lista o rango de elementos que se puede utilizar en múltiples reglas dentro de una tabla. Otra ventaja con respecto a los conjuntos anónimos es que se puede actualizar un conjunto con nombre sin sustituir las reglas que lo utilizan.

Cuando se crea un conjunto con nombre, se debe especificar el tipo de elementos que contiene el conjunto. Puede establecer los siguientes tipos:

  • ipv4_addr para un conjunto que contiene direcciones o rangos IPv4, como 192.0.2.1 o 192.0.2.0/24.
  • ipv6_addr para un conjunto que contiene direcciones o rangos IPv6, como 2001:db8:1::1 o 2001:db8:1::1/64.
  • ether_addr para un conjunto que contiene una lista de direcciones de control de acceso al medio (MAC), como 52:54:00:6b:66:42.
  • inet_proto para un conjunto que contiene una lista de tipos de protocolo de Internet, como tcp.
  • inet_service para un conjunto que contiene una lista de servicios de Internet, como ssh.
  • mark para un conjunto que contiene una lista de marcas de paquetes. Las marcas de paquetes pueden ser cualquier valor entero positivo de 32 bits (0 a 2147483647].

Requisitos previos

  • La cadena example_chain y la tabla example_table existen.

Procedimiento

  1. Cree un conjunto vacío. Los siguientes ejemplos crean un conjunto para direcciones IPv4:

    • Para crear un conjunto que pueda almacenar varias direcciones IPv4 individuales:

      # nft add set inet example_table example_set { type ipv4_addr \; }
    • Para crear un conjunto que pueda almacenar rangos de direcciones IPv4:

      # nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }
    Importante

    Para evitar que el shell interprete los puntos y comas como el final del comando, debe escapar los puntos y comas con una barra invertida.

  2. Opcionalmente, cree reglas que utilicen el conjunto. Por ejemplo, el siguiente comando agrega una regla a la example_chain en el example_table que descartará todos los paquetes de las direcciones IPv4 en example_set.

    # nft add rule inet example_table example_chain ip saddr @example_set drop

    Como example_set está todavía vacío, la regla no tiene actualmente ningún efecto.

  3. Añadir direcciones IPv4 a example_set:

    • Si crea un conjunto que almacena direcciones IPv4 individuales, introduzca:

      # nft add element inet example_table example_set { 192.0.2.1, 192.0.2.2 }
    • Si crea un conjunto que almacena rangos IPv4, introduzca:

      # nft add element inet example_table example_set { 192.0.2.0-192.0.2.255 }

      Cuando se especifica un rango de direcciones IP, se puede utilizar alternativamente la notación Classless Inter-Domain Routing (CIDR), como 192.0.2.0/24 en el ejemplo anterior.

Red Hat logoGithubRedditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

© 2024 Red Hat, Inc.