<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux Sin Humo (Publicaciones sobre networking)</title><link>https://sergiobelkin.com/</link><description></description><atom:link href="https://sergiobelkin.com/categories/networking.xml" rel="self" type="application/rss+xml"></atom:link><language>es</language><copyright>Contents © 2026 &lt;a href="mailto:sebelk@gmail.com"&gt;sebelk&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-NC-SA"
style="border-width:0; margin-bottom:12px;"
src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"&gt;&lt;/a&gt;
</copyright><lastBuildDate>Thu, 07 May 2026 15:47:30 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Introducción a nftables y familia de direcciones</title><link>https://sergiobelkin.com/posts/introduccion-a-nftables/</link><dc:creator>sebelk</dc:creator><description>&lt;h3 id="historia-e-introduccion"&gt;Historia e Introducción&lt;/h3&gt;
&lt;p&gt;Antes de iptables y nftables, existía &lt;strong&gt;ipfwadm&lt;/strong&gt;, una herramienta que se utilizaba en las primeras versiones del kernel de Linux para gestionar el firewall. Aunque ipfwadm sentó las bases para el firewalling en Linux, fue reemplazada debido a su limitada capacidad de manejo de tráfico y escalabilidad. Primero fue sustituida por &lt;em&gt;ipchains&lt;/em&gt; y más tarde por el popular &lt;em&gt;iptables&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/nftables-families-circled.webp"&gt;&lt;img src="https://sergiobelkin.com/images/nftables-families-circled.thumbnail.webp" alt="nftables"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h4 id="comunidad-y-grupos-clave"&gt;Comunidad y Grupos Clave&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Netfilter Project&lt;/strong&gt;: La comunidad principal detrás de iptables y nftables. Este grupo ha sido esencial en el desarrollo, mantenimiento y promoción de herramientas de filtrado de paquetes en Linux.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Kernel Contributors&lt;/strong&gt;: Muchos desarrolladores de kernel han colaborado en la optimización de las capacidades de firewalling en Linux, asegurando su integración fluida y eficiente.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="creacion-de-nftables"&gt;Creación de nftables&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;nftables&lt;/strong&gt; fue introducido en 2014 como el sucesor de iptables, diseñado para abordar las limitaciones de su predecesor en términos de rendimiento y escalabilidad. &lt;/p&gt;
&lt;p&gt;Si bien eso fue hace más de 10 años, hay cambios tecnológicos que van por ascensor y otros por escalera. En ámbitos corporativos el mero hecho de reemplazar un software que es cardinal en una infraestructura, no es una tarea trivial. Ese cambio se debe a que los tiempos de vida de las distribuciones que las medianas y grandes organizaciones tienen soporte a largo a plazo. A veces es falta de urgencia y otras veces por sencilla negligencia :smile:.&lt;/p&gt;
&lt;p&gt;Sin embargo apenas 3 datos para considerar la adopción de nftables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;RHEL9 considera iptables, ipset y ebtables herramientas depreciadas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iptables no estará disponible en RHEL10 ni en OpenShift 4.16.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Debian Bullseye (a la fecha oldstable) ha depreciado iptables en favor de nftables.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="cual-es-el-problema-de-iptables"&gt;&lt;strong&gt;¿Cuál es el problema de iptables?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Aunque ha sido una herramienta extraordinaria que ha servido de base para muchas soluciones de firewall, &lt;strong&gt;iptables&lt;/strong&gt; presenta algunas limitaciones. A continuación, mencionamos tres de las más importantes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Reprocesamiento completo al modificar reglas&lt;/strong&gt;:&lt;br&gt;
   Cada vez que se agrega o elimina una regla, el kernel debe volver a procesar toda la lista de reglas. Este enfoque resulta ineficiente, especialmente en entornos donde se realizan cambios frecuentes o se manejan firewalls con un gran número de reglas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Gestión complicada de rangos de direcciones IP&lt;/strong&gt;:&lt;br&gt;
   Manejar rangos de direcciones IP o grandes conjuntos de direcciones en &lt;strong&gt;iptables&lt;/strong&gt; puede ser tedioso y poco práctico. La herramienta &lt;strong&gt;ipset&lt;/strong&gt; fue una solución ingeniosa para optimizar esta tarea, ya que permite manejar conjuntos de IPs, rangos o puertos de manera más eficiente. Sin embargo, su uso añade una capa de complejidad adicional al proceso de configuración y gestión.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Extensiones con sintaxis inconsistente&lt;/strong&gt;:&lt;br&gt;
&lt;strong&gt;iptables&lt;/strong&gt; cuenta con extensiones como &lt;strong&gt;xtables&lt;/strong&gt;, que amplían sus funcionalidades al incluir capacidades avanzadas como el seguimiento de conexiones o la inspección profunda de protocolos. No obstante, la sintaxis de estas extensiones no siempre es uniforme ni intuitiva, lo que puede dificultar su uso y generar confusiones en configuraciones complejas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En cambio, desde su incorporación, &lt;strong&gt;nftables&lt;/strong&gt; ha demostrado ser una herramienta eficiente y moderna para la gestión del tráfico de red en Linux. Una de sus principales innovaciones es consolidar las herramientas clásicas como iptables, ip6tables, ebtables y arptables en una única interfaz, simplificando tanto la configuración como el mantenimiento.&lt;/p&gt;
&lt;h3 id="conceptos-claves-de-nftables"&gt;Conceptos claves de nftables&lt;/h3&gt;
&lt;h4 id="contexto-y-familias-de-direcciones"&gt;Contexto y Familias de Direcciones&lt;/h4&gt;
&lt;p&gt;En &lt;code&gt;iptables&lt;/code&gt;, cada tipo de tráfico o protocolo tenía su propio comando o herramienta específica, que funcionaba de manera independiente:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Comando/herramienta&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Propósito&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;iptables&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Filtrar y manipular tráfico IPv4.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;ip6tables&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Filtrar y manipular tráfico IPv6.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;arptables&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Filtrar y manipular tráfico ARP.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;ebtables&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Filtrar tráfico en bridges (Ethernet frames).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Cada una de estas herramientas tenía su propia sintaxis y requería comandos separados para manejar diferentes tipos de tráfico, lo que podía ser confuso y propenso a errores.&lt;/p&gt;
&lt;h5 id="problemas-del-enfoque-de-iptables"&gt;&lt;strong&gt;Problemas del enfoque de iptables&lt;/strong&gt;&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Fragmentación:&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;Si querías manejar tráfico IPv4 e IPv6, debías configurar reglas separadas con &lt;code&gt;iptables&lt;/code&gt; e &lt;code&gt;ip6tables&lt;/code&gt;, incluso si las reglas eran idénticas.&lt;/li&gt;
&lt;li&gt;Lo mismo ocurría si querías gestionar tráfico ARP con &lt;code&gt;arptables&lt;/code&gt; o tráfico en bridges con &lt;code&gt;ebtables&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falta de unificación:&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;Cada herramienta tenía su propia lógica, lo que aumentaba la complejidad administrativa.&lt;/li&gt;
&lt;li&gt;No existía una forma centralizada de gestionar tráfico que abarcase múltiples protocolos o tipos de datos.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantenimiento difícil:&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;Las configuraciones de firewall requerían gestionar múltiples conjuntos de reglas, lo que hacía el mantenimiento y la depuración más complicados.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h5 id="como-nftables-mejoro-este-enfoque"&gt;&lt;strong&gt;Cómo nftables mejoró este enfoque:&lt;/strong&gt;&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Introducción de familias:&lt;/strong&gt; En &lt;code&gt;nftables&lt;/code&gt;, las &lt;strong&gt;familias&lt;/strong&gt; permiten manejar diferentes tipos de tráfico dentro de un mismo marco conceptual, con una sintaxis unificada.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Familia &lt;code&gt;ip&lt;/code&gt;: Maneja tráfico IPv4.&lt;/li&gt;
&lt;li&gt;Familia &lt;code&gt;ip6&lt;/code&gt;: Maneja tráfico IPv6.&lt;/li&gt;
&lt;li&gt;Familia &lt;code&gt;inet&lt;/code&gt;: Unifica IPv4 e IPv6.&lt;/li&gt;
&lt;li&gt;Familia &lt;code&gt;arp&lt;/code&gt;: Maneja tráfico ARP.&lt;/li&gt;
&lt;li&gt;Familia &lt;code&gt;bridge&lt;/code&gt;: Maneja tráfico L2 en bridges.&lt;/li&gt;
&lt;li&gt;Familia &lt;code&gt;netdev&lt;/code&gt;: Maneja tráfico en interfaces específicas.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Unificación de reglas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Con la familia &lt;code&gt;inet&lt;/code&gt;, puedes escribir reglas que funcionen tanto para IPv4 como para IPv6.&lt;/li&gt;
&lt;li&gt;Esto simplifica significativamente la configuración y el mantenimiento del firewall.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Menor duplicación de configuraciones:&lt;/strong&gt; En lugar de mantener múltiples herramientas (&lt;code&gt;iptables&lt;/code&gt;, &lt;code&gt;ip6tables&lt;/code&gt;, &lt;code&gt;arptables&lt;/code&gt;, &lt;code&gt;ebtables&lt;/code&gt;), todo se gestiona con el comando &lt;code&gt;nft&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Ejemplos en &lt;code&gt;nftables&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c1"&gt;# Una regla para IPv4 e IPv6&lt;/span&gt;
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;inet&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;input&lt;span class="w"&gt; &lt;/span&gt;ip&lt;span class="w"&gt; &lt;/span&gt;saddr&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;192&lt;/span&gt;.168.0.0/24&lt;span class="w"&gt; &lt;/span&gt;accept
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;inet&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;input&lt;span class="w"&gt; &lt;/span&gt;ip6&lt;span class="w"&gt; &lt;/span&gt;saddr&lt;span class="w"&gt; &lt;/span&gt;fc00::/7&lt;span class="w"&gt; &lt;/span&gt;accept
&lt;/pre&gt;&lt;/div&gt;

&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;table&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;filter
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;chain&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;input&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;hook&lt;span class="w"&gt; &lt;/span&gt;input&lt;span class="w"&gt; &lt;/span&gt;priority&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;# Permitir solicitudes ARP desde el rango 192.168.1.0/24 en eth0&lt;/span&gt;
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;input&lt;span class="w"&gt; &lt;/span&gt;iif&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eth0"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;sip&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;192&lt;/span&gt;.168.1.0/24&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;op&lt;span class="w"&gt; &lt;/span&gt;request&lt;span class="w"&gt; &lt;/span&gt;accept

&lt;span class="c1"&gt;# Bloquear cualquier otra solicitud ARP&lt;/span&gt;
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;input&lt;span class="w"&gt; &lt;/span&gt;iif&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eth0"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;op&lt;span class="w"&gt; &lt;/span&gt;request&lt;span class="w"&gt; &lt;/span&gt;drop
&lt;/pre&gt;&lt;/div&gt;

&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;table&lt;span class="w"&gt; &lt;/span&gt;bridge&lt;span class="w"&gt; &lt;/span&gt;filter
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;chain&lt;span class="w"&gt; &lt;/span&gt;bridge&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;forward&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;hook&lt;span class="w"&gt; &lt;/span&gt;forward&lt;span class="w"&gt; &lt;/span&gt;priority&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;# Permitir solicitudes ARP desde direcciones MAC específicas en el bridge br0&lt;/span&gt;
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;bridge&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;forward&lt;span class="w"&gt; &lt;/span&gt;iif&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"br0"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ether&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;op&lt;span class="w"&gt; &lt;/span&gt;request&lt;span class="w"&gt; &lt;/span&gt;ether&lt;span class="w"&gt; &lt;/span&gt;saddr&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;00&lt;/span&gt;:11:22:33:44:55&lt;span class="w"&gt; &lt;/span&gt;accept
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;bridge&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;forward&lt;span class="w"&gt; &lt;/span&gt;iif&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"br0"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ether&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;op&lt;span class="w"&gt; &lt;/span&gt;request&lt;span class="w"&gt; &lt;/span&gt;ether&lt;span class="w"&gt; &lt;/span&gt;saddr&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;00&lt;/span&gt;:aa:bb:cc:dd:ee&lt;span class="w"&gt; &lt;/span&gt;accept

&lt;span class="c1"&gt;# Bloquear cualquier otra solicitud ARP en el bridge&lt;/span&gt;
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;bridge&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;forward&lt;span class="w"&gt; &lt;/span&gt;iif&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"br0"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ether&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;op&lt;span class="w"&gt; &lt;/span&gt;request&lt;span class="w"&gt; &lt;/span&gt;drop
&lt;/pre&gt;&lt;/div&gt;

&lt;h5 id="diferencia-entre-las-familias-inet-y-netdev"&gt;Diferencia entre las familias inet y netdev&lt;/h5&gt;
&lt;p&gt;La familia &lt;code&gt;netdev&lt;/code&gt;&lt;strong&gt; puede ser una opción adecuada para implementar &lt;/strong&gt;policing&lt;strong&gt; con &lt;code&gt;nftables&lt;/code&gt;, dependiendo del escenario. Esto se debe a que la familia &lt;code&gt;netdev&lt;/code&gt; opera en el &lt;/strong&gt;hook &lt;code&gt;ingress&lt;/code&gt;, lo que significa que puede evaluar el tráfico &lt;strong&gt;directamente en la interfaz&lt;/strong&gt; antes de que llegue al stack de red.&lt;/p&gt;
&lt;p&gt;Vamos a explorar por qué usar la familia &lt;code&gt;netdev&lt;/code&gt; podría ser más apropiado para policing en algunos casos y cuándo es mejor utilizar otras familias.&lt;/p&gt;
&lt;h6 id="por-que-usar-la-familia-netdev-para-policing"&gt;&lt;strong&gt;Por qué usar la familia netdev para policing:&lt;/strong&gt;&lt;/h6&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Posición temprana en el flujo del tráfico:&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;La familia &lt;code&gt;netdev&lt;/code&gt; opera en el hook &lt;strong&gt;&lt;code&gt;ingress&lt;/code&gt;&lt;/strong&gt;, lo que significa que intercepta el tráfico &lt;strong&gt;inmediatamente después de que llega a la interfaz de red&lt;/strong&gt; y antes de que sea procesado por el stack TCP/IP.&lt;/li&gt;
&lt;li&gt;Esto permite implementar políticas de policing directamente en el nivel de la interfaz, evitando sobrecargar el sistema con tráfico innecesario.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de regla de policing en &lt;code&gt;netdev&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;table&lt;span class="w"&gt; &lt;/span&gt;netdev&lt;span class="w"&gt; &lt;/span&gt;ingress
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;chain&lt;span class="w"&gt; &lt;/span&gt;netdev&lt;span class="w"&gt; &lt;/span&gt;ingress&lt;span class="w"&gt; &lt;/span&gt;mychain&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;hook&lt;span class="w"&gt; &lt;/span&gt;ingress&lt;span class="w"&gt; &lt;/span&gt;priority&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;netdev&lt;span class="w"&gt; &lt;/span&gt;ingress&lt;span class="w"&gt; &lt;/span&gt;mychain&lt;span class="w"&gt; &lt;/span&gt;ip&lt;span class="w"&gt; &lt;/span&gt;limit&lt;span class="w"&gt; &lt;/span&gt;rate&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;mbps&lt;span class="w"&gt; &lt;/span&gt;drop
&lt;/pre&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Esta regla limita el tráfico IP entrante a 10 Mbps en la interfaz.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Evitar procesamiento innecesario:&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Como &lt;code&gt;netdev&lt;/code&gt; actúa antes de que los paquetes sean entregados al stack TCP/IP, los paquetes que no cumplen con las políticas son descartados sin consumir recursos adicionales del sistema.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ideal para interfaces específicas:&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando el objetivo es aplicar policing solo en una interfaz específica (por ejemplo, &lt;code&gt;eth0&lt;/code&gt;), la familia &lt;code&gt;netdev&lt;/code&gt; es la opción más directa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Compatibilidad con &lt;code&gt;limit rate&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;La familia &lt;code&gt;netdev&lt;/code&gt; admite acciones como &lt;code&gt;limit rate&lt;/code&gt;, que es esencial para configurar políticas de policing basadas en rates.&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="cuando-usar-netdev-frente-a-otras-familias-ip-inet"&gt;&lt;strong&gt;¿Cuándo usar netdev frente a otras familias (ip, inet)?&lt;/strong&gt;&lt;/h6&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Criterio&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Familia &lt;code&gt;netdev&lt;/code&gt;&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Familias &lt;code&gt;ip&lt;/code&gt;/&lt;code&gt;inet&lt;/code&gt;&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Posición en el stack&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hook &lt;code&gt;ingress&lt;/code&gt;, antes del stack TCP/IP.&lt;/td&gt;
&lt;td&gt;Hook &lt;code&gt;prerouting&lt;/code&gt;, &lt;code&gt;forward&lt;/code&gt;, o &lt;code&gt;input&lt;/code&gt;, después de ingresar al stack.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Eficiencia&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Muy alta: paquetes descartados antes de procesarse.&lt;/td&gt;
&lt;td&gt;Menor: los paquetes son procesados parcialmente antes de aplicar las políticas.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tráfico inspeccionado&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Solo tráfico entrante en una interfaz específica.&lt;/td&gt;
&lt;td&gt;Tráfico en todas las interfaces (dependiendo de la configuración).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Complejidad de las reglas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Más limitada: ideal para políticas simples (policing básico).&lt;/td&gt;
&lt;td&gt;Más flexible: soporta reglas complejas (filtrado avanzado, conntrack).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Uso típico&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Policing directo en una interfaz (DDoS, límites de ancho de banda).&lt;/td&gt;
&lt;td&gt;Filtrado y políticas basadas en estado o dirección IP.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h6 id="limitaciones-de-la-familia-netdev"&gt;&lt;strong&gt;Limitaciones de la familia netdev:&lt;/strong&gt;&lt;/h6&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Solo para tráfico entrante:&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La familia &lt;code&gt;netdev&lt;/code&gt; opera únicamente en el hook &lt;code&gt;ingress&lt;/code&gt;, por lo que no puedes aplicar policing en el tráfico saliente de una interfaz.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Falta de seguimiento de conexiones (&lt;code&gt;conntrack&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No puedes usar estados como &lt;code&gt;NEW&lt;/code&gt; o &lt;code&gt;ESTABLISHED&lt;/code&gt;, ya que &lt;code&gt;netdev&lt;/code&gt; opera antes de que el módulo &lt;code&gt;conntrack&lt;/code&gt; pueda procesar el tráfico.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Menor flexibilidad:&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Si necesitás reglas más complejas basadas en capas superiores (por ejemplo, L7 o estados de conexión), las familias &lt;code&gt;ip&lt;/code&gt; o &lt;code&gt;inet&lt;/code&gt; son más adecuadas.&lt;/li&gt;
&lt;/ol&gt;
&lt;h6 id="cuando-es-mejor-usar-la-familia-netdev-para-policing"&gt;&lt;strong&gt;¿Cuándo es mejor usar la familia netdev para policing?&lt;/strong&gt;&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tráfico entrante en una interfaz específica:&lt;/strong&gt; Cuando necesitás limitar o descartar tráfico directamente en una interfaz antes de que afecte el sistema. Ejemplo: Mitigar un ataque DDoS en &lt;code&gt;eth0&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Simplicidad y eficiencia:&lt;/strong&gt; Si solo necesitas evaluar tráfico basándote en tasas o direcciones básicas (IP, MAC).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="ejemplo-practico"&gt;&lt;strong&gt;Ejemplo práctico:&lt;/strong&gt;&lt;/h6&gt;
&lt;p&gt;Supongamos que queremos limitar el tráfico entrante a 100 Mbps en una interfaz específica (&lt;code&gt;eth0&lt;/code&gt;):&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;table&lt;span class="w"&gt; &lt;/span&gt;netdev&lt;span class="w"&gt; &lt;/span&gt;ingress
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;chain&lt;span class="w"&gt; &lt;/span&gt;netdev&lt;span class="w"&gt; &lt;/span&gt;ingress&lt;span class="w"&gt; &lt;/span&gt;eth0_chain&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;hook&lt;span class="w"&gt; &lt;/span&gt;ingress&lt;span class="w"&gt; &lt;/span&gt;priority&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;netdev&lt;span class="w"&gt; &lt;/span&gt;ingress&lt;span class="w"&gt; &lt;/span&gt;eth0_chain&lt;span class="w"&gt; &lt;/span&gt;limit&lt;span class="w"&gt; &lt;/span&gt;rate&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;mbps&lt;span class="w"&gt; &lt;/span&gt;drop
&lt;/pre&gt;&lt;/div&gt;

&lt;h4 id="diferencia-entre-la-familia-bridge-y-netdev"&gt;Diferencia entre la familia bridge y netdev&lt;/h4&gt;
&lt;p&gt;Dado que la tanto la tabla &lt;strong&gt;bridge&lt;/strong&gt; como la tabla &lt;strong&gt;netdev&lt;/strong&gt; operan en Capa 2 uno podría preguntarse, qué diferencia hay entre estas dos familias, aquí tenemos una tabla comparativa detallada entre las familias &lt;strong&gt;&lt;code&gt;bridge&lt;/code&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;code&gt;netdev&lt;/code&gt;&lt;/strong&gt; en &lt;code&gt;nftables&lt;/code&gt;:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Aspecto&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Familia &lt;code&gt;bridge&lt;/code&gt;&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Familia &lt;code&gt;netdev&lt;/code&gt;&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Nivel del modelo OSI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Capa 2 (L2)&lt;/td&gt;
&lt;td&gt;Capa 2 (L2), pero en el contexto de interfaces individuales.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tráfico manejado&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tráfico que cruza un bridge (tramas Ethernet).&lt;/td&gt;
&lt;td&gt;Todo el tráfico en una interfaz específica antes de llegar al stack de red.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Propósito principal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Controlar y filtrar tráfico dentro de bridges.&lt;/td&gt;
&lt;td&gt;Filtrar tráfico en una interfaz individual (sin importar si forma parte de un bridge).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ámbito de aplicación&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Solo funciona en interfaces que forman parte de un bridge.&lt;/td&gt;
&lt;td&gt;Funciona en cualquier interfaz (física o virtual), bridge o no.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Casos de uso típicos&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Aislar tráfico entre puertos de un bridge.&lt;br&gt;- Proteger bridges contra broadcast storms, spoofing de MAC, etc.&lt;br&gt;- Controlar tráfico entre VLANs en un bridge.&lt;/td&gt;
&lt;td&gt;- Filtrar tráfico directo en una interfaz (ingress/egress).&lt;br&gt;- Detectar y mitigar DDoS a nivel de interfaz.&lt;br&gt;- Filtrar ARP o IPv4 antes de pasar al stack de red.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compatibilidad con VLANs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sí, puede filtrar tráfico basado en etiquetas VLAN (802.1Q).&lt;/td&gt;
&lt;td&gt;No trabaja específicamente con VLANs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Estado de conexión&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No tiene integración con &lt;code&gt;conntrack&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;No tiene integración con &lt;code&gt;conntrack&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Posición en el stack&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Filtra tráfico que pasa a través de un bridge antes de ser reenviado.&lt;/td&gt;
&lt;td&gt;Filtra tráfico directamente en una interfaz, antes de ser procesado por el stack de red.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Soporte de ARP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sí, puede filtrar tramas ARP.&lt;/td&gt;
&lt;td&gt;Sí, puede filtrar tramas ARP.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Soporte de IPv4/IPv6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sí, puede inspeccionar tráfico IP encapsulado.&lt;/td&gt;
&lt;td&gt;Sí, puede inspeccionar tráfico IP encapsulado.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Direcciones MAC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Puede filtrar según direcciones MAC de origen y destino.&lt;/td&gt;
&lt;td&gt;Puede filtrar según direcciones MAC de origen y destino.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Uso con interfaces individuales&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No, requiere que las interfaces formen parte de un bridge.&lt;/td&gt;
&lt;td&gt;Sí, funciona en cualquier interfaz individual.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reemplaza a...&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ebtables&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tc ingress&lt;/code&gt; para ciertas tareas de filtrado.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Limitaciones&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Solo opera en tráfico dentro de bridges.&lt;br&gt;- No puede controlar tráfico de interfaces individuales fuera del bridge.&lt;/td&gt;
&lt;td&gt;- No tiene integración con &lt;code&gt;conntrack&lt;/code&gt;.&lt;br&gt;- No puede manejar tráfico reenviado entre interfaces.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h5 id="diferencias-clave-entre-bridge-y-netdev"&gt;&lt;strong&gt;Diferencias clave entre bridge y netdev:&lt;/strong&gt;&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ámbito del tráfico manejado:&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;bridge&lt;/code&gt;:&lt;/strong&gt; Filtra tráfico que cruza un bridge, conectando múltiples interfaces dentro del mismo dominio de difusión.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;netdev&lt;/code&gt;:&lt;/strong&gt; Filtra tráfico directo en una interfaz individual, antes de pasar al stack de red.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Dependencia de bridges:&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;bridge&lt;/code&gt;:&lt;/strong&gt; Solo funciona en interfaces que son parte de un bridge.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;netdev&lt;/code&gt;:&lt;/strong&gt; Funciona en cualquier interfaz, sin importar si es parte de un bridge o no.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Posición en el stack de red:&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;bridge&lt;/code&gt;:&lt;/strong&gt; Opera después de que el tráfico ha ingresado al bridge pero antes de ser reenviado a otra interfaz.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;netdev&lt;/code&gt;:&lt;/strong&gt; Opera antes de que el tráfico entre al stack de red del sistema operativo, en el &lt;strong&gt;hook &lt;code&gt;ingress&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Casos de uso:&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;bridge&lt;/code&gt;:&lt;/strong&gt; Aislar tráfico dentro del bridge, controlar VLANs, proteger contra ataques L2 como spoofing de MAC.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;netdev&lt;/code&gt;:&lt;/strong&gt; Inspeccionar todo el tráfico que entra o sale de una interfaz específica, ideal para mitigación temprana de DDoS o filtros basados en MAC/IP/ARP.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h5 id="cuando-usar-cada-una"&gt;&lt;strong&gt;¿Cuándo usar cada una?&lt;/strong&gt;&lt;/h5&gt;
&lt;h6 id="usa-la-familia-bridge-si"&gt;&lt;strong&gt;Usa la familia bridge si:&lt;/strong&gt;&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Tenemos configurado un bridge que conecta múltiples interfaces.&lt;/li&gt;
&lt;li&gt;Necesitamos controlar tráfico entre dispositivos conectados al mismo bridge.&lt;/li&gt;
&lt;li&gt;Queremos aislar tráfico entre VLANs o puertos del bridge.&lt;/li&gt;
&lt;li&gt;Deseamos implementar políticas de seguridad para tráfico L2 dentro del bridge.&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="usa-la-familia-netdev-si"&gt;&lt;strong&gt;Usa la familia netdev si:&lt;/strong&gt;&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Queremos filtrar tráfico directo en una interfaz individual, incluso si no es parte de un bridge.&lt;/li&gt;
&lt;li&gt;Necesitamos mitigar DDoS o ataques en el hook más temprano (&lt;code&gt;ingress&lt;/code&gt;), antes de que el tráfico llegue al stack de red.&lt;/li&gt;
&lt;li&gt;Deseamos inspeccionar tráfico ARP, IPv4 o IPv6 en una interfaz específica.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="ejemplos-practicos"&gt;&lt;strong&gt;Ejemplos prácticos:&lt;/strong&gt;&lt;/h4&gt;
&lt;h5 id="con-bridge"&gt;&lt;strong&gt;Con bridge:&lt;/strong&gt;&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;Bloquear tráfico entre dos interfaces en un bridge:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;table&lt;span class="w"&gt; &lt;/span&gt;bridge&lt;span class="w"&gt; &lt;/span&gt;filter
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;chain&lt;span class="w"&gt; &lt;/span&gt;bridge&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;forward&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;hook&lt;span class="w"&gt; &lt;/span&gt;forward&lt;span class="w"&gt; &lt;/span&gt;priority&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;bridge&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;forward&lt;span class="w"&gt; &lt;/span&gt;iif&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eth0"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;oif&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eth1"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;drop
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;bridge&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;forward&lt;span class="w"&gt; &lt;/span&gt;iif&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eth1"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;oif&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eth0"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;drop
&lt;/pre&gt;&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Permitir solo tráfico ARP en el bridge:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;bridge&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;forward&lt;span class="w"&gt; &lt;/span&gt;ether&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;arp&lt;span class="w"&gt; &lt;/span&gt;accept
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;bridge&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;forward&lt;span class="w"&gt; &lt;/span&gt;drop
&lt;/pre&gt;&lt;/div&gt;

&lt;h5 id="con-netdev"&gt;&lt;strong&gt;Con netdev:&lt;/strong&gt;&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;Bloquear todo el tráfico IPv4 en una interfaz específica (&lt;code&gt;eth0&lt;/code&gt;):&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;table&lt;span class="w"&gt; &lt;/span&gt;netdev&lt;span class="w"&gt; &lt;/span&gt;filter
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;chain&lt;span class="w"&gt; &lt;/span&gt;netdev&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;ingress&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;hook&lt;span class="w"&gt; &lt;/span&gt;ingress&lt;span class="w"&gt; &lt;/span&gt;priority&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;netdev&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;ingress&lt;span class="w"&gt; &lt;/span&gt;iif&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eth0"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ip&lt;span class="w"&gt; &lt;/span&gt;drop
&lt;/pre&gt;&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Mitigar ataques DDoS limitando paquetes por segundo:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;nft&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;rule&lt;span class="w"&gt; &lt;/span&gt;netdev&lt;span class="w"&gt; &lt;/span&gt;filter&lt;span class="w"&gt; &lt;/span&gt;ingress&lt;span class="w"&gt; &lt;/span&gt;iif&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eth0"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ip&lt;span class="w"&gt; &lt;/span&gt;limit&lt;span class="w"&gt; &lt;/span&gt;rate&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1000&lt;/span&gt;/second&lt;span class="w"&gt; &lt;/span&gt;drop
&lt;/pre&gt;&lt;/div&gt;

&lt;h5 id="entonces"&gt;&lt;strong&gt;Entonces:&lt;/strong&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Familia &lt;code&gt;bridge&lt;/code&gt;:&lt;/strong&gt; Para manejar tráfico dentro de un bridge, enfocándose en L2 (direcciones MAC, VLANs, tramas Ethernet).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Familia &lt;code&gt;netdev&lt;/code&gt;:&lt;/strong&gt; Para filtrar tráfico temprano en una interfaz específica, independientemente de si forma parte de un bridge.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ambas familias trabajan en L2, pero con propósitos distintos y aplicables en diferentes escenarios.&lt;/p&gt;
&lt;h4 id="resumen"&gt;Resumen:&lt;/h4&gt;
&lt;p&gt;En &lt;code&gt;iptables&lt;/code&gt;, no existía el concepto de familias. En su lugar, se usaban herramientas separadas para cada protocolo o tipo de tráfico (&lt;code&gt;iptables&lt;/code&gt;, &lt;code&gt;ip6tables&lt;/code&gt;, &lt;code&gt;arptables&lt;/code&gt;, &lt;code&gt;ebtables&lt;/code&gt;). Esto hacía que la configuración fuera fragmentada y menos eficiente.&lt;/p&gt;
&lt;p&gt;Con la llegada de &lt;code&gt;nftables&lt;/code&gt;, se introdujo el concepto de familias para unificar la gestión de diferentes tipos de tráfico, mejorando la flexibilidad, la simplicidad y el mantenimiento de las reglas de firewall. Este cambio fue una de las razones clave por las que &lt;code&gt;nftables&lt;/code&gt; es considerado un reemplazo moderno y más avanzado.&lt;/p&gt;
&lt;p&gt;Conocer en profundidad nftables y el concepto de las familias, tiene implicancias sumamente prácticas. Por ejemplo: ¿qué familia usarías para poder separar en una misma LAN el tráfico inalámbrico del cableado? Lo dejo para que lo pienses. 😊&lt;/p&gt;
&lt;h3 id="fuentes-y-mas-informacion"&gt;Fuentes y más información&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.nftables.org/wiki-nftables/index.php/Main_Page"&gt;Documentación oficial de nftables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://netfilter.org/"&gt;Sitio Oficial del proyecto netfilter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://netfilter.org/about.html#history"&gt;Historia del proyecto Netfilter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category>networking</category><category>seguridad</category><guid>https://sergiobelkin.com/posts/introduccion-a-nftables/</guid><pubDate>Wed, 22 Jan 2025 18:07:44 GMT</pubDate></item><item><title>Borrar configuraciones de red</title><link>https://sergiobelkin.com/posts/borrar-configuraciones-de-red/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;En Linux a veces nos podemos meter en un embrollo. Los sistemas para configurar y administrar la red son varios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;net-tools&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iproute2&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Archivos "legacy"&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NetworkManager&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;systemd-networkd, etc&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cuando colisionan y necesitamos blanquear la configuraciones podemos hacer lo siguiente:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;o&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nx"&gt;cut&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;f2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;":"&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;grep&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;v&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="nx"&gt;lo&lt;/span&gt;&lt;span class="err"&gt;$'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;do&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="nx"&gt;ip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;addr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;flush&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;dev&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s"&gt;"$i"&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="nx"&gt;ip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;route&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;flush&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;dev&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s"&gt;"$i"&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="nx"&gt;ip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;rule&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;flush&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;dev&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s"&gt;"$i"&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;done&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Listo, a hacer la configuración en limpio ahora!&lt;/p&gt;
&lt;p&gt;Obviamente no deberíamos hacer esto con una conexión remota a un equipo no virtualizado :)&lt;/p&gt;</description><category>networking</category><guid>https://sergiobelkin.com/posts/borrar-configuraciones-de-red/</guid><pubDate>Wed, 09 Oct 2019 21:42:29 GMT</pubDate></item><item><title>Diagrama de netfilter/iptables</title><link>https://sergiobelkin.com/posts/diagrama-de-netfilteriptables/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/netfilter.png"&gt;&lt;img src="https://sergiobelkin.com/images/netfilter.thumbnail.png" alt="netfilter/iptables"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claves&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las reglas se organizan en tablas: raw, mangle, nat, filter.&lt;/li&gt;
&lt;li&gt;Las tablas tienen cadenas, filter, por ejemplo tiene INPUT, OUTPUT y FORWARD. Y como se puede apreciar las decisiones de routing implican que INPUT y FORWARD son excluyentes. Lo mismo que OUTPUT y FORWARD.&lt;/li&gt;
&lt;li&gt;El orden siempre es raw, mangle, nat, filter (si es que están presentes).&lt;/li&gt;
&lt;li&gt;Hay 3 lugares en que se decide el ruteo, uno de los cuales es local.&lt;/li&gt;
&lt;li&gt;Solamente se filtra en filter, obviamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Más?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://book.huihoo.com/iptables-tutorial/book1.htm"&gt;Iptables Tutorial 1.2.2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category>networking</category><category>seguridad</category><guid>https://sergiobelkin.com/posts/diagrama-de-netfilteriptables/</guid><pubDate>Thu, 26 Sep 2019 18:11:49 GMT</pubDate></item><item><title>Estadísticas generales de sockets</title><link>https://sergiobelkin.com/posts/estadisticas-generales-de-sockets/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;El archivo &lt;code&gt;/proc/net/sockstat&lt;/code&gt; muestra una síntesis muy útil de cada tipo de socket:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;# cat /proc/net/sockstat

sockets: used 435
TCP: inuse 29 orphan 0 tw 10 alloc 58 mem 2
UDP: inuse 101 mem 83
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Interesante ¿no?&lt;/p&gt;</description><category>networking</category><guid>https://sergiobelkin.com/posts/estadisticas-generales-de-sockets/</guid><pubDate>Sun, 22 Sep 2019 13:53:25 GMT</pubDate></item><item><title>Skype en la bandeja de sistema de Plasma 5.0</title><link>https://sergiobelkin.com/posts/2015/07/31/skype-en-la-bandeja-de-sistema-de-plasma-5-0/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;Skype proporciona versiones de 32-bit para Linux. Al usarla en una arquitectura x86_64 tenemos un problema al cerrar la ventana de la aplicación… desaparece. Esto es porque Plasma 5.0 no soporta más el protocolo XEmbed. Una de las posibles soluciones es instalar el paquete sni-qt para 32 bit:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="markdown-here-wrapper" data-md-url="http://www.sergiobelkin.com/wp-admin/post-new.php"&gt;
&lt;pre style="font-size: 1em; font-family: Consolas,Inconsolata,Courier,monospace; line-height: 1.2em; margin: 1.2em 0px;"&gt;&lt;code style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace; margin: 0px 0.15em; padding: 0.5em 0.7em; white-space: pre; border: 1px solid #cccccc; background-color: #f8f8f8; border-radius: 3px; display: block ! important; overflow: auto;"&gt;sudo dnf install sni-qt.i686
&lt;/code&gt;&lt;/pre&gt;
&lt;div style="height: 0; width: 0; max-height: 0; max-width: 0; overflow: hidden; font-size: 0em; padding: 0; margin: 0;" title="MDH:PHA+fn5+PGJyIGRhdGEtbWNlLWJvZ3VzPSIxIj48L3A+PHA+c3VkbyBkbmYgaW5zdGFsbCBzbmkt&amp;lt;br /&amp;gt;
cXQuaTY4NjwvcD48cD5+fn48L3A+"&gt;​&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y ¡Listo!&lt;/p&gt;
&lt;p&gt;[caption id="attachment_743" align="aligncenter" width="640"]&lt;a href="https://sergiobelkin.com/wp-content/uploads/2015/07/unl3.png"&gt;&lt;img class="wp-image-743 size-large" src="https://sergiobelkin.com/wp-content/uploads/2015/07/unl3-1024x26.png" alt="Panel Plasma" width="640" height="16"&gt;&lt;/a&gt; skype icon en Bande del systema[/caption]&lt;/p&gt;</description><category>herramientas</category><category>kde-plasma</category><category>networking</category><guid>https://sergiobelkin.com/posts/2015/07/31/skype-en-la-bandeja-de-sistema-de-plasma-5-0/</guid><pubDate>Fri, 31 Jul 2015 20:58:01 GMT</pubDate></item><item><title>Estaciones Virtuales Inalámbricas</title><link>https://sergiobelkin.com/posts/2012/04/30/estaciones-virtuales-inalambricas/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;&lt;a href="http://creativecommons.org/licenses/by-sa/2.5/ar/" rel="license"&gt;&lt;img style="border-width: 0;" src="http://i.creativecommons.org/l/by-sa/2.5/ar/88x31.png" alt="Licencia Creative Commons"&gt;&lt;/a&gt;&lt;br&gt;
&lt;span&gt;Estaciones Virtuales inalámbricas&lt;/span&gt; por &lt;a href="http://sergiobelkin.com" rel="cc:attributionURL"&gt;Sergio Belkin&lt;/a&gt; se encuentra bajo una Licencia &lt;a href="http://creativecommons.org/licenses/by-sa/2.5/ar/" rel="license"&gt;Creative Commons Atribución-CompartirDerivadasIgual 2.5 Argentina&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A veces es necesario simular una gran cantidad de  estaciones (es decir clientes o “supplicants”) ante un Access Point para obtener una estimación de las capacidades del equipo y/o firmware. Seguramente existe algún que otro software con licencia restrictiva que nos permita hacer eso. Pero ¿se podrá hacer eso con una sola notebook con Linux? La respuesta es sí.&lt;/p&gt;
&lt;p&gt;Veremos como:&lt;/p&gt;
&lt;h2&gt;Deshabilitamos cifrado por hardware&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;echo options ath9k nohwcrypt=1 &amp;gt; /etc/modprobe.d/ath9k.conf&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;udev&lt;/h2&gt;
&lt;h3&gt;&lt;code&gt;Editamos /lib/udev/rules.d/75-persistent-net-generator.rules&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Queremos que udev no maneje la interfaz wireless wlan0, entonces sacamos de la siguiente regla a wlan0&lt;/p&gt;
&lt;p&gt;&lt;code&gt;KERNEL!=”eth*|ath*|ra*|ctc*|lcs*|hsi*”, GOTO=”persistent_net_generator_end”&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Editar el archivo /etc/udev/rules.d/70-persistent-net.rules&lt;/h3&gt;
&lt;p&gt;Tampoco necesitamos la siguiente la regla, así que la borramos:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”68:a3:c4:33:44:55″, ATTR{dev_id}==”0x0″, ATTR{type}==”1″, KERNEL==”wlan*”, NAME=”wlan0″&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Recargar la configuración&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;systemctl restart udev-trigger.service&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Detener servicios que interfieren con la creación de intefaces virtuales&lt;/h2&gt;
&lt;p&gt;systemctl stop NetworkManager.service&lt;/p&gt;
&lt;p&gt;systemctl stop  avahi-daemon.service&lt;/p&gt;
&lt;h2&gt;Terminar procesos de wpa_supplicant&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;killall wpa_supplicant&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Agregamos una interfaz virtual inalámbrica&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;iw phy  phy0 interface add sta0  type station&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Le cambiamos la mac address, sino NO va a funcionar&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;macchanger -r sta0&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Activamos la interfaz&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ip link set dev sta0 up&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Lanzamos el cliente wireless&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;wpa_supplicant -t -ista0 -c      /etc/wpa_supplicant/peap.conf  -B  -f /var/log/wpa-sta0.log&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Arrancamos el cliente dhcp&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;dhclient -v   -cf /etc/wpa_supplicant/dhclient.conf sta0&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;¡Listo!&lt;/h2&gt;
&lt;p&gt;Se puede hacer un script (de hecho es lo que hice) para automatizar estos pasos y agregar tantas interfaces virtuales como sea posible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reconocimiento:&lt;/strong&gt; El artículo de &lt;span&gt;Candela Technologies&lt;/span&gt; en&lt;a title="Virtual Wireless Stations" href="http://www.candelatech.com/vsta.php"&gt; http://www.candelatech.com/vsta.php&lt;/a&gt; fue de suma utilidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advertencia:&lt;/strong&gt; Esta receta funciona en particular para el módulo ath9k, es probable que sea necesario modificar algo con otros drivers o que directamente no funcione. Asimismo, se utilizó Fedora 16 desde el lado cliente, obviamente deberían realizarse las adapataciones pertinentes de acuerdo a la distribución.&lt;/p&gt;</description><category>kernel</category><category>networking</category><category>wifi</category><guid>https://sergiobelkin.com/posts/2012/04/30/estaciones-virtuales-inalambricas/</guid><pubDate>Mon, 30 Apr 2012 14:40:40 GMT</pubDate></item><item><title>El pensamiento instantáneo</title><link>https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;&lt;a href="https://sergiobelkin.com/wp-content/uploads/2011/05/socialnewtworking.png"&gt;&lt;br&gt;
&lt;/a&gt;&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		H1 { margin-bottom: 0.21cm } 		H1.western { font-family: "Liberation Sans", sans-serif; font-size: 16pt } 		H1.cjk { font-family: "WenQuanYi Zen Hei"; font-size: 16pt } 		H1.ctl { font-family: "Lohit Devanagari"; font-size: 16pt } 		P.sdfootnote { margin-left: 0.5cm; text-indent: -0.5cm; margin-bottom: 0cm; font-size: 10pt } 		A:link { so-language: zxx } 		A.sdfootnoteanc { font-size: 57% } --&gt;Recientemente leí un &lt;a href="http://www.linux-magazine.com/w3/issue/125/087-087_maddog.pdf"&gt;artículo&lt;/a&gt;&lt;a name="sdfootnote1anc" href="https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/#sdfootnote1sym"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; de Jon “Maddog” Hall&lt;a name="sdfootnote2anc" href="https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/#sdfootnote2sym"&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; (Director Ejecutivo de Linux International&lt;a name="sdfootnote3anc" href="https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/#sdfootnote3sym"&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt;). La nota giraba alrededor del tema de la &lt;a href="http://es.wikipedia.org/wiki/Netiquette"&gt;netiqueta&lt;/a&gt;, al cual “Maddog” arribó explicando hábilmente lo que el denomina “el factor de retardo” y “transmisión instantánea”.&lt;/p&gt;
&lt;p&gt;¿Qué es el factor de retardo? Pues bien hagamos un viaje en el tiempo hacia el siglo XIX por lo menos . Los medios de comunicación y de transporte se desplazaban dificultosa y lentamente. Por lo tanto, en muchos aspectos la comunicación a mediana y larga distancia llevaba mucho más tiempo comparándolo con nuestros días.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Por ejemplo, una persona que hiciese un viaje de largas distancias, podría tener tiempo mientras escribía una carta, para construir, elaborar, descartar y rehacer sus pensamientos y formas en que los volcaba en el papel (o en el soporte físico que tuvieran a mano por esos tiempos). Y mientras el emisor esperaba la respuesta del receptor tendría probablemente tiempo para analizar acerca de lo que él mismo había comunicado. Tanto el emisor como el receptor contaban con ese factor de retardo.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sergiobelkin.com/posts/2011/05/29/wp-content/uploads/2011/05/socialnewtworking.png"&gt;&lt;img class="alignnone" title="socialnewtworking" src="https://sergiobelkin.com/posts/2011/05/29/wp-content/uploads/2011/05/socialnewtworking-300x300.png" alt="Redes Sociales" width="240" height="240"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La transmisión instantánea mediante el teléfono celular, el correo electrónico, la mensajería instantánea, y las redes sociales han aminorado ese factor.&lt;/p&gt;
&lt;p&gt;Esto puede parecer en principio una obviedad, pero a veces lo evidente es lo primero que se pasa por alto. Sin embargo, omitirlo sería un error en cualquier discusión acerca de Facebook.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;No es el asunto, tal vez, determinar si Facebook (se puede aplicar algo similar a Twitter&lt;a name="sdfootnote4anc" href="https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/#sdfootnote4sym"&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/a&gt;) es una herramienta “éticamente aceptable” o no. Quiero decir: no es preguntarse: ¿Está bien usar Facebook? sino la pregunta tal vez, que se deberíamos hacer es ¿Para qué es útil Facebook?&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Este sitio web creado por Mark Zuckerberg ejerce una atracción notable, uno se sienta enfrente del teclado y ¡paf! vuelca todo eso tan &lt;em&gt;importante &lt;/em&gt;se  tiene que comunicar a su lista de &lt;em&gt;amigos&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;No se trata de menospreciar la masividad de Internet. De permitir que grandes fuentes de conocimiento sean accesible a todos. Por supuesto que no. De hecho estimo, mal que le pese a cierta clase sacerdotal del academicismo, que sitios como Wikipedia proporcionan una fuente de información de gran valor  para el lego publicada bajo un sistema participativo&lt;a name="sdfootnote5anc" href="https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/#sdfootnote5sym"&gt;&lt;sup&gt;5&lt;/sup&gt;&lt;/a&gt; y una licencia realmente democrática&lt;a name="sdfootnote6anc" href="https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/#sdfootnote6sym"&gt;&lt;sup&gt;6&lt;/sup&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Tampoco la cuestión está por analizar si el ser humano era en el pasado mejor moral y espiritualmente que el de la actualidad.&lt;/p&gt;
&lt;p&gt;De lo contrario, se caen en las posturas reduccionistas de quienes esgrimen “&lt;em&gt;que todo tiempo pasado fue mejor&lt;/em&gt;” , (y por ende no hay nada mejor y noble que la carta en papel) y entre aquellos que aceptan sin ningún sentido crítico todas las “herramientas” nuevas, no sea que los tilden de obscurantistas.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;El problema tal vez sea que si uno se adapta a la herramienta como lo hace un líquido a su recipiente, pasa a ser un objeto utilizado por aquella, lo cual debería ser al revés.&lt;/p&gt;
&lt;p&gt;Reducir el tiempo de retardo en la comunicación es en muchos escenarios beneficioso. Por ejemplo, se puede transferir un archivo de un punto al otro del planeta, con un tiempo de espera ínfimo. En muchos casos, la gran caída del factor de retardo puede salvar una vida.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Yendo a casos menos extremos, herramientas como Facebook permiten anunciar eventos culturales, sociales, noticias que los medios tradicionales ocultan o deforman etc. con cero costo e inmediata llegada. ¿Quién se podría oponer a eso? Solamente aquellos que consideren que o bien todo tiempo fue mejor o desestimen el uso de las nuevas maneras en que se muestra la tecnología o quienes tengan interés en conservar algún tipo de poder.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Pero Facebook asimismo (o cualquier red social de internet), elimina durante un debate el contacto cara a cara, poder ver los ojos y escuchar la voz y el tono del otro. Es así que muchas veces se le confiere más importancia al mensaje que al receptor del mismo. Me pregunto una vez más si eso ayuda a mejorar el desarrollo de una polémica por interesante que fuere.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;No obstante, no olvidamos la discusión medular aquí (aunque el punto anterior es de gran importancia), por lo tanto los interrogantes cardinales son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Cuando se quiere comunicar algo 	que tiene cierta profundidad: ¿Es beneficioso prescindir del factor 	de retardo?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;¿Es el factor de retardo un 	estorbo que la tecnología viene a eliminar mejorando el intercambio 	de opiniones? O bien, ¿Internet ha influido tan directa y 	provechosamente en nuestra capacidad intelectual – es decir las 	nuevas tecnologías no han salpicado de virtudes intelectuales que 	nuestros antepasados no tenían – que no vale la pena detenerse a 	evaluar lo que se quiere comunicar?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;¿Merece el mismo tiempo de 	respuesta, el comentario sobre un chiste, sobre la foto sacada con 	un amigo de la escuela primaria, hacer catarsis sobre alguna 	cuestión emocional, que la discusión de algún tema político, 	científico, teológico o filosófico?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;La respuesta a tales preguntas tal vez nos ayude a determinar cuál es el real valor de Facebook y otras redes sociales similares.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div id="sdfootnote1"&gt;
&lt;p&gt;&lt;a name="sdfootnote1sym" href="https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/#sdfootnote1anc"&gt;1&lt;/a&gt;Linux 	Magazine Nº 125, pág. 87&lt;/p&gt;
&lt;/div&gt;
&lt;div id="sdfootnote2"&gt;
&lt;p&gt;&lt;a name="sdfootnote2sym" href="https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/#sdfootnote2anc"&gt;2&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Jon_Hall_%28programmer"&gt;Jon 	“Maddog” Hall&lt;/a&gt; es miembro del directorio de varias empresas y 	organizaciones de tecnología.&lt;/p&gt;
&lt;/div&gt;
&lt;div id="sdfootnote3"&gt;
&lt;p&gt;&lt;a name="sdfootnote3sym" href="https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/#sdfootnote3anc"&gt;3&lt;/a&gt;&lt;a href="http://www.li.org/"&gt;Linux 	International&lt;/a&gt; es una organización sin fines de lucro promueve 	el software libre.&lt;/p&gt;
&lt;/div&gt;
&lt;div id="sdfootnote4"&gt;
&lt;p&gt;&lt;a name="sdfootnote4sym" href="https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/#sdfootnote4anc"&gt;4&lt;/a&gt;Twitter 	agrega un elemento en la comunicación: se trata de la cantidad 	máxima de caracteres permitidos en cada mensaje. La brevedad puede 	ser una gran virtud. Pero ¿puede cualquier reflexión reducirse a 	140 caracteres?&lt;/p&gt;
&lt;/div&gt;
&lt;div id="sdfootnote5"&gt;
&lt;p&gt;&lt;a name="sdfootnote5sym" href="https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/#sdfootnote5anc"&gt;5&lt;/a&gt;Puede 	leerse más al respecto aquí: 	&lt;a href="http://es.wikipedia.org/wiki/Wikipedia:Consenso"&gt;http://es.wikipedia.org/wiki/Wikipedia:Consenso&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id="sdfootnote6"&gt;
&lt;p&gt;&lt;a name="sdfootnote6sym" href="https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/#sdfootnote6anc"&gt;6&lt;/a&gt;&lt;a href="http://creativecommons.org/licenses/by-sa/3.0/deed.es"&gt;http://creativecommons.org/licenses/by-sa/3.0/deed.es&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description><category>educacion</category><category>networking</category><category>redes-sociales</category><category>reflexion</category><guid>https://sergiobelkin.com/posts/2011/05/29/el-pensamiento-instantaneo/</guid><pubDate>Sun, 29 May 2011 20:55:40 GMT</pubDate></item><item><title>Probando Fedora 15 beta</title><link>https://sergiobelkin.com/posts/2011/04/24/probando-fedora-15-beta/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;Salió Fedora 15 beta, tiene un núcleo 2.6.38.2-9,  mucho más actualizado que su predecesora (que usa una versión de la línea 2.6.35). Esto que implica por ejemplo que el módulo ath9k_htc soporta la placa wireless TP-Link WN821N v3, la cual es económica y soporta la norma 802.11n.&lt;/p&gt;
&lt;p&gt;Interesante para ir probando varias cosas, por ejemplo GNOME Shell y Gnome 3&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sergiobelkin.com/wp-content/uploads/2011/04/fedora15b.png"&gt;&lt;img class="alignnone size-medium wp-image-329" title="fedora15b" src="https://sergiobelkin.com/wp-content/uploads/2011/04/fedora15b-300x225.png" alt="Fedora 15 Beta" width="300" height="225"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Y también se puede ver algo en este pequeño video:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sergiobelkin.com/wp-content/uploads/2011/04/shell-20110424-1.webm"&gt;Escritorio de Fedora 15 Beta&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;¿Todavía usando Windows? Bueno…. existe &lt;a title="VLC para Windows" href="http://www.videolan.org/vlc/download-windows.html"&gt;VLC&lt;/a&gt;, programa libre para ver videos…&lt;/p&gt;
&lt;p&gt;Tuve que soportar algún que otro cuelgue en esta versión beta de Fedora, lo cual no es tan alarmante teniendo en cuanto que no está pensada todavía para producción. ¿Quedó claro que es &lt;a href="http://es.wikipedia.org/wiki/Fases_del_desarrollo_de_software#Beta"&gt;&lt;em&gt;&lt;strong&gt;beta&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;?&lt;/p&gt;</description><category>Fedora</category><category>GNOME</category><category>networking</category><guid>https://sergiobelkin.com/posts/2011/04/24/probando-fedora-15-beta/</guid><pubDate>Sun, 24 Apr 2011 16:03:01 GMT</pubDate></item><item><title>Guía express Tor+Privoxy</title><link>https://sergiobelkin.com/posts/2009/05/25/guia-express-torprivoxy/</link><dc:creator>sebelk</dc:creator><description>&lt;ol&gt;
&lt;li&gt;Obviedad: instalar Tor y &lt;a href="http://es.wikipedia.org/wiki/Privoxy"&gt;Privoxy&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Editar el archivo /etc/privoxy/config y sacar el comentario de la línea&lt;p&gt;
&lt;/p&gt;&lt;pre&gt;forward-socks4a   /               127.0.0.1:9050 .&lt;/pre&gt;&lt;/li&gt;

&lt;li&gt;Reiniciar el servicio privoxy.&lt;/li&gt;
&lt;li&gt;Configurar el navegador para que use la dirección del proxy, es decir 127.0.0.1, puerto 8118.&lt;/li&gt;
&lt;li&gt;Comprobar en https://check.torproject.org/?lang=es.&lt;/li&gt;
&lt;li&gt;Más información en el sitio de Tor y Privoxy respectivamente.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="https://sergiobelkin.com/wp-content/uploads/2009/05/tormasprivoxy.png"&gt;&lt;img class="alignnone size-medium wp-image-105" title="Tor Plus Privoxy" src="https://sergiobelkin.com/wp-content/uploads/2009/05/tormasprivoxy-300x214.png" alt="Tor Plus Privoxy" width="300" height="214"&gt;&lt;/a&gt;&lt;/p&gt;</description><category>networking</category><category>privacidad</category><guid>https://sergiobelkin.com/posts/2009/05/25/guia-express-torprivoxy/</guid><pubDate>Mon, 25 May 2009 10:49:20 GMT</pubDate></item><item><title>Acerca del poder de root y permisos de usuarios y grupos II</title><link>https://sergiobelkin.com/posts/2008/08/18/acerca-del-poder-de-root-y-permisos-de-usuarios-y-grupos-ii/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;Una manera no tan conocida (tal vez por su relativa inmadurez) son las POSIX CAPABILITIES en Linux. Las PCaps permiten asignar determinados permisos a procesos y archivos ejecutables. La idea es evitar el uso del poderoso pero a la vez peligroso &lt;a href="http://es.wikipedia.org/wiki/Setuid"&gt;SUID Bit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;El archivo  /usr/include/linux/capability.h contiene la descripción definición de las 31 PCaps. Para poder usarlas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verificar que esta soportado por el kernel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://sergiobelkin.com/wp-content/uploads/2008/08/config-capab.jpg"&gt;&lt;img class="size-medium wp-image-57" style="margin-left: 50px; margin-right: 50px;" title="config-capab" src="https://sergiobelkin.com/wp-content/uploads/2008/08/config-capab-300x158.jpg" alt="Soporte de PCaps" width="300" height="158"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sergiobelkin.com/wp-content/uploads/2008/08/config-capab.jpg"&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Habilitar KPROBES y compilar si es necesario&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://sergiobelkin.com/wp-content/uploads/2008/08/kprobes.jpg"&gt;&lt;img class="size-medium wp-image-58" style="margin-left: 25px; margin-right: 25px;" title="kprobes" src="https://sergiobelkin.com/wp-content/uploads/2008/08/kprobes-300x216.jpg" alt="Habilitar KPROBES en el kernel" width="300" height="216"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Compilar e instalar las nuevas libreras &lt;a href="ftp://ftp.kernel.org/pub/linux/libs/security/linux-privs/libcap2/"&gt;PCAPS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Se trata de la version 2.x de estas libreras que in&lt;/p&gt;
&lt;p&gt;cluyen las herramientas setcap y getcap.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Compilar e instalar &lt;a href="http://www.friedhoff.org/downloads/capable_probe.tar.bz2"&gt;capable_probe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Cargar el modulo capable_probe&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este módulo es muy importante para comenzar a usar las PCaps e ir aprendiendo como funcionan. De esta manera, podremos ver los mensajes relativas a las PCaps en el archivo /var/log/messages. Hay que tener en cuenta que dicho archivo crecer notablemente, por lo que se recomienda no tener cargado todo el tiempo el módulo capable_probe.&lt;/p&gt;
&lt;p&gt;Una de las primeras cosas que se pueden hacer es probar alguna aplicación y ver que capabilities esta usado. Por ejemplo, vemos que el comando at requiere la facultad para realizar diversas tareas administrativas, pasar por el alto el control de acceso discrecional, cambiar propietarios de archivos, manipulación de SUID y SGID bits.&lt;br&gt;
&lt;a href="https://sergiobelkin.com/wp-content/uploads/2008/08/capabilities.jpg"&gt;&lt;img class="alignnone size-medium wp-image-56" title="capabilities" src="https://sergiobelkin.com/wp-content/uploads/2008/08/capabilities-300x158.jpg" alt="PCaps requeridas" width="300" height="158"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Espero pronto poder escribir algunas cosas ms sobre este apasionante tema.&lt;/p&gt;</description><category>networking</category><category>seguridad</category><guid>https://sergiobelkin.com/posts/2008/08/18/acerca-del-poder-de-root-y-permisos-de-usuarios-y-grupos-ii/</guid><pubDate>Mon, 18 Aug 2008 20:12:52 GMT</pubDate></item></channel></rss>