¿Cómo clonar la salida del objetivo MASQUERADE con un TEE?

¿Cómo clonar la salida del objetivo MASQUERADE con un TEE?

Las extensiones de Netfilterpágina de manualEstablece que:

MASQUERADA: Este objetivo sólo es válido en la nattabla, en la POSTROUTINGcadena

PREGUNTA: ¿Cómo clonar elproduccióndel MASQUERADEobjetivo con un TEEobjetivo?

Si observa el diagrama a netfilter/iptablescontinuación, notará que nat.POSTROUTINGes la última cadena que se evalúa antes de que el paquete se envíe a la interfaz saliente. No hay raw.POSTROUTINGcadena... ¿o sí?

ingrese la descripción de la imagen aquí Ver tambiéneste.

PD:
¿Cuál es el motivo para procesar las tablas mangley naten el mismo orden en el momento outboundy?inbound , cuando los datos fluyen endirecciones opuestas¿A través de estas interfaces (salida y entrada)?

Respuesta1

Hasta donde yo sé, dado que no es posible tener uniptablesregla ejecutada despuésnat/POSTROUTING, que es el último gancho proporcionado poriptables, no es posible utilizariptablespara capturar un paquete post-NAT.


Pero esto es posible cuando se usanftables, desde elLa prioridad del gancho está definida por el usuario..nft'sduplicardeclaración es un reemplazo directo deiptables'TEE. Es posible mezclarnftablesyiptablessiempre y cuando ambos no estén haciendo NAT (el recurso nat es especial y no se puede compartir correctamente entreiptablesynftables). Usandoiptables sobre nftablesLa versión deiptablestambién funcionará (se debe tener cuidado al vaciar los conjuntos de reglas) y, por supuesto, usar solonftporque todo también funcionaría.

Aquí hay un listonftconjunto de reglas para esto en un enrutador con una LAN NAT eneth1y su lado WAN eneth2, para enviar una copia a 192.168.0.3 en el lado LAN. como se describe en unotra pregunta del OP. Para ser colocado en algún archivo llamadoparawireshark.nfty ser "cargado" usando nft -f forwireshark.nft:

table ip forwireshark {
        chain postnat {
                type filter hook postrouting priority 250; policy accept;
                oif eth2 counter dup to 192.168.0.3 device eth1
        }
}

Lo que importa aquí es que se ha elegido el valor 250 para que sea mayor queiptables'NF_IP_PRI_NAT_SRC(100).

Esto es lo que normalmente recibiría el host de Wireshark cuando el host de ping lo hace ping -c1 8.8.8.8después de cierta inactividad (tenga en cuenta la extraña solicitud ARP de la IP "incorrecta", que podría no aceptarse de forma predeterminada en algunos sistemas):

root@ns-wireshark:~# tcpdump -e -n -s0 -p -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:06:03.074142 82:01:54:27:4d:d7 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.1 tell 192.168.0.2, length 28
21:06:03.074301 9a:80:fb:e6:6a:0a > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.3 tell 140.82.118.4, length 28
21:06:03.074343 7e:0a:6c:12:00:61 > 9a:80:fb:e6:6a:0a, ethertype ARP (0x0806), length 42: Reply 192.168.0.3 is-at 7e:0a:6c:12:00:61, length 28
21:06:03.074387 9a:80:fb:e6:6a:0a > 7e:0a:6c:12:00:61, ethertype IPv4 (0x0800), length 98: 140.82.118.4 > 8.8.8.8: ICMP echo request, id 1633, seq 1, length 64

No sé el fundamento del orden demangle/POSTROUTINGynat/POSTROUTING. De todos modos esto es parte deiptables' limitaciones, porque ennftables, además del equivalente dedestrozar/SALIDAque es especialtipo rutagancho para redireccionamiento, todos los demás usos equivalentes demutilarson parte detipo de filtro: en realidad no hay una separaciónmutilarescribir más. Poder elegir el orden de prioridades permite hacer más.

información relacionada