
Las extensiones de Netfilterpágina de manualEstablece que:
MASQUERADA: Este objetivo sólo es válido en la
nat
tabla, en laPOSTROUTING
cadena
PREGUNTA: ¿Cómo clonar elproduccióndel MASQUERADE
objetivo con un TEE
objetivo?
Si observa el diagrama a netfilter/iptables
continuación, notará que nat.POSTROUTING
es la última cadena que se evalúa antes de que el paquete se envíe a la interfaz saliente. No hay raw.POSTROUTING
cadena... ¿o sí?
Ver tambiéneste.
PD:
¿Cuál es el motivo para procesar las tablas mangle
y nat
en el mismo orden en el momento outbound
y?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.8
despué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.