
La wiki de nftables tieneun ejemplo, pero no parece funcionar para mí.
La página dice que debería funcionar desde el kernel 5.3, pero dice "error de protocolo" cuando intento los comandos exactos de la página:
# nft add table bridge filter
# nft add chain bridge filter forward '{type filter hook forward priority 0; }'
# nft add rule bridge filter forward ct state established,related accept
Error: Could not process rule: Protocol error
add rule bridge filter forward ct state established,related accept
^^^^^^^^
- Hardware: Frambuesa Pi 4
- Núcleo: 5.10.92-v8+
nft --version
:v0.9.8 (E.D.S.)
También lo intenté después de crear la última versión de nftables y sus bibliotecas:
- nftables 1.0.1
- libnftnl 1.2.1
- libmnl-1.0.4
Confirmé ldd nft
que efectivamente se utilizaron las nuevas versiones de las bibliotecas, pero sigue apareciendo el mismo mensaje de error.
Respuesta1
Esta característica está disponible desde el kernel 5.3, pero Raspberry optó por no compilarla en los kernels suministrados.
Como no logré encontrar el archivo de configuración del kernel (generalmente presente como /boot/config-xxx
o desde el kernel), extraje la imagen de instalación para verificar esto directamente. Aquí hay una comparación de los módulos disponibles en el kernel de Raspbian (deimagen zipdescargado del sitio oficial):
$ ls -1 lib/modules/5.10.92-v8+/kernel/net/bridge/netfilter/nf*
lib/modules/5.10.92-v8+/kernel/net/bridge/netfilter/nf_log_bridge.ko
lib/modules/5.10.92-v8+/kernel/net/bridge/netfilter/nft_reject_bridge.ko
versus unnúcleo de Debian similarpara la misma arquitectura:
$ ls -1 lib/modules/5.10.0-10-arm64/kernel/net/bridge/netfilter/nf*
lib/modules/5.10.0-10-arm64/kernel/net/bridge/netfilter/nf_conntrack_bridge.ko
lib/modules/5.10.0-10-arm64/kernel/net/bridge/netfilter/nf_log_bridge.ko
lib/modules/5.10.0-10-arm64/kernel/net/bridge/netfilter/nft_meta_bridge.ko
lib/modules/5.10.0-10-arm64/kernel/net/bridge/netfilter/nft_reject_bridge.ko
Como se puede ver, se necesitaba el soporte de Netfilter proporcionado nf_conntrack_bridge
porconectarparte y nft_meta_bridge
para elnftablesLa parte no está disponible (y no, tampoco está integrada: grep bridge lib/modules/5.10.92-v8+/modules.builtin
no tiene resultado) en el kernel predeterminado del sistema operativo RaspberryPi. Se debe construir un kernel con estas características habilitadas:
Es muy posible que también falten otras características raras. Por ejemplo módulosnft_synproxy
ynft_xfrm
(para filtrado IPSec) tampoco están presentes.
Mientras tanto, aún se puede utilizar el método obsoleto (que se pretende eliminar una vez que se logre la paridad de características), lo que también afectanftablespara bien o para mal: elbr_netfilter
módulo del núcleo. pero nativonftablescarece de soporte específico para este método, ya que está diseñado para utilizar el método más nuevo del kernel 5.3. En particular, no tiene equivalente paraiptables'-m physdev --physdev-is-bridged
.