Truncado simplemente significa que el paquete era más grande de lo que esperaba el cliente. P.ej. si el cliente espera solo 512 bytes al hacer recv(fd,buf,512,0)
pero el mensaje es más grande, recv
fallará porque el mensaje no se ajusta. Con el indicador MSG_TRUNC
, el cliente puede obtener el mensaje truncado, pero no el mensaje completo porque no cabe en el búfer asignado.
Eso significa que truncado no es una propiedad del paquete en sí y, por lo tanto, no se puede establecer en el firewall. A lo sumo, podría generar una respuesta que sea más grande de lo que el cliente probablemente espera y, por lo tanto, desencadenar el truncamiento. Pero para hacer esto, necesitaría un código de nivel de aplicación que genere una respuesta que coincida con la pregunta de DNS, un simple firewall de filtrado de paquetes no puede hacer esto.
EDITAR:
Hay un indicador TC en el encabezado del mensaje que indica que el mensaje era demasiado grande para el transporte indicado y, por lo tanto, se truncó (es decir, más de 512 bytes para UDP a menos que se use EDNS). Por lo tanto, debería ser posible crear tal paquete. Pero para que el paquete de respuesta coincida con el paquete de solicitud, aún necesita un filtro de nivel de aplicación, es decir, un simple filtro de paquetes no es suficiente.
Aparte de eso, toda la pregunta suena más bien como un problema construido sin relevancia práctica o como un Problema XY , es decir, el problema real que intentas resolver es algo diferente.