¿Quieres que una app sanitaria imprima por un servidor de impresión aunque el usuario esté fuera del hospital y solo tenga una impresora USB conectada al portátil por VPN? Sí es posible con LPR/LPD: te explico cómo configurarlo paso a paso, validar cada tramo y resolver los fallos típicos.
Resumen del caso
La aplicación clínica debe imprimir mediante un servidor de impresión. En campo, el profesional se conecta por VPN con un portátil que tiene una impresora USB local. La idea es compartir esa impresora en el portátil y que el servidor de impresión le envíe los trabajos por LPR. Entre portátiles funciona, pero del servidor al portátil no: el trabajo sale del servidor (LPR) y las trazas muestran que se encamina al portátil (LPD), pero no entra en la cola compartida del portátil. ¿Está faltando algo o es inviable?
Respuesta corta
Sí es viable, pero solo si se cumple toda la cadena de extremo a extremo:
Aplicación → Servidor de impresión (renderiza) → LPR → Portátil (LPD) → Impresora USB
Si un eslabón falla (VPN unidireccional, nombre de cola incorrecto, puerto 515 bloqueado, byte counting desactivado, etc.), el trabajo puede “salir” del servidor pero nunca aparecer en la cola del portátil. A continuación, una guía completa para implementarlo con garantías.
Arquitectura y flujo de impresión
Este patrón utiliza el protocolo clásico LPR/LPD (puerto TCP 515):
- Servidor: origen LPR. Renderiza con el driver del modelo y envía el job.
- Portátil: destino LPD. Recibe el job y lo cola en su impresora compartida.
- Impresora USB: conectada al portátil; la cola compartida debe coincidir por nombre con la cola LPR del servidor.
- VPN: debe permitir conexiones entrantes desde el servidor hacia el cliente (portátil) por el puerto 515/TCP.
Requisitos previos clave
Componente | Qué verificar | Cómo comprobar |
---|---|---|
VPN | Ruta y ACL desde servidor → IP VPN del portátil; sin NAT asimétrico | Test-NetConnection <IP-portátil> -Port 515 desde el servidor |
Portátil | Servicio LPD habilitado y en ejecución; impresora USB compartida | Servicios: LPDSVC y Spooler; Panel de impresoras → Compartir |
Firewall portátil | Regla de entrada TCP 515 permitida para la IP del servidor | Reglas de Windows Defender Firewall o netsh advfirewall |
Servidor | Puerto LPR apuntando a la IP del portátil y cola exacta = nombre del recurso compartido | Propiedades del puerto; prueba con lpr |
Controladores | Driver correcto del modelo instalado en el servidor (renderizado en servidor) | Cola del servidor → Propiedades → Avanzadas |
Conectividad y VPN
La mayoría de los problemas “invisibles” son de topología (la VPN permite el tráfico del cliente al servidor, pero no desde el servidor hacia el cliente).
- Desde el servidor, verifica apertura del puerto 515/TCP en la IP VPN del portátil:
Test-NetConnection <IP-VPN-portátil> -Port 515 Alternativa (si tienes Telnet Client): telnet <IP-VPN-portátil> 515
- Si falla, corrige en el concentrador VPN:
- Habilita tráfico entrante hacia clientes (hairpin/peer-to-peer/“allow server-initiated”).
- Crea ACL específicas:
Servidor → TCP/515 → Portátiles (pool VPN)
. - Evita NAT o políticas asimétricas para ese flujo.
- Considera IP estática o reserva del pool para cada portátil, o usa FQDN con DNS dinámico de la VPN.
Portátil: LPD + impresora compartida
Habilitar LPD
- Windows 10/11: Activar o desactivar características de Windows → Servicios de impresión y documentos → marca Servicio LPD.
- Windows Server (si el “portátil” es un servidor): agrega el rol Print and Document Services y el servicio LPD Service.
Comprueba el servicio:
# Debe existir y estar en ejecución
Get-Service LPDSVC, Spooler | Format-Table Name, Status, StartType
En caso necesario:
Set-Service LPDSVC -StartupType Automatic
Start-Service LPDSVC
Compartir la impresora USB
- Instala el driver correcto del modelo en el portátil y prueba una página de test local.
- En Propiedades → Compartir, habilita “Compartir esta impresora” y define un Nombre del recurso compartido simple, sin espacios (p. ej.,
HP1102
). - Recuerda: ese nombre exacto será la cola LPR en el servidor.
Firewall del portátil
Abre únicamente a la(s) IP(s) del servidor:
netsh advfirewall firewall add rule name="LPD 515 (desde Servidor)" ^
dir=in action=allow protocol=TCP localport=515 remoteip=<IP-servidor>
Para depuración (temporal), puedes habilitar “Compartir archivos e impresoras”, pero no es necesario para LPR/LPD en producción.
Permisos y spooler
- Asegura que el Spooler está en ejecución y que Usuarios autenticados tienen permiso de “Imprimir” (para test inicial).
- Evita rutas de spooler en discos con poco espacio (
%SystemRoot%\System32\spool\PRINTERS
).
Servidor de impresión: origen LPR
Crear/editar el puerto LPR
- Crea un puerto tipo LPR apuntando a la IP VPN del portátil.
- Cola LPR: exactamente el nombre del recurso compartido en el portátil (p. ej.,
HP1102
). - Habilita LPR byte counting (conteo de bytes).
- Deshabilita SNMP Status en ese puerto (el destino no es una impresora SNMP).
Driver y renderizado
- Usa el driver del modelo en el servidor; el servidor renderiza (PDL correcto: PCL/PS/PDF según aplique).
- Evita que el portátil relinkee o re-renderice: el LPD entregará el job tal cual.
Prueba rápida con LPR
Habilita el “Cliente LPR” en el servidor si no lo tienes, y ejecuta:
lpr -S <IP-VPN-portátil> -P <NombreColaCompartida> C:\Windows\win.ini
Si llega al portátil, verás el trabajo en “En cola” de esa impresora. Si no, pasa al bloque de validación y diagnóstico.
Validación paso a paso
- Conectividad: confirma el 515/TCP abierto desde el servidor (ver comandos arriba).
- LPD escuchando en el portátil:
Get-NetTCPConnection -LocalPort 515 -State Listen
- Nombre de cola: que el nombre LPR en el puerto del servidor coincida al milímetro con el recurso compartido del portátil (mejor sin espacios ni tildes).
- Enviar un job mínimo:
lpr
con un archivo pequeño comowin.ini
. - Eventos en el portátil:
- Visor de eventos → Microsoft > Windows > PrintService > Operational (habilita el registro si está desactivado).
- Filtra por advertencias/errores del servicio LPD o de la impresora.
- Si el trabajo aparece pero no imprime:
- Prueba página de prueba local (descarta fallo físico/driver).
- Comprueba que el tipo de datos sea compatible (RAW/Text) y que el driver del servidor sea el mismo que el del portátil/modelo.
Por qué “sale del servidor” pero “no entra a la cola”
Estos son los motivos más frecuentes y cómo reconocerlos:
Síntoma | Causa probable | Cómo comprobar | Acción |
---|---|---|---|
El job “sale” del servidor, pero no aparece en el portátil | Nombre de cola LPR incorrecto | Comparar nombre de recurso compartido vs. cola LPR (ojo a espacios y mayúsculas) | Poner el mismo nombre, p. ej. HP1102 en ambos lados |
Conectividad aparente pero LPR no conecta | Firewall del portátil bloquea 515/TCP | Test-NetConnection <IP> -Port 515 falla; no hay eventos LPD | Abrir regla TCP 515 solo para la IP del servidor |
Trabajos grandes fallan, pequeños pasan | Byte counting desactivado o MTU VPN | En puerto LPR, opción de conteo; revisar logs/fragmentación | Activa conteo de bytes; ajusta MSS/MTU en la VPN |
Servidor no logra iniciar sesión LPR | VPN unidireccional (solo cliente→red) | Reglas del concentrador deniegan servidor→cliente | Permitir conexiones iniciadas desde el servidor hacia clientes |
Job llega pero imprime jeroglíficos | Driver o PDL incorrecto en el servidor | Revisar driver/modelo en la cola del servidor | Instalar el driver exacto del modelo; forzar RAW adecuado (PCL/PS) |
Buenas prácticas de nombres y colas
- Usa nombres cortos y alfanuméricos para el recurso compartido (ej.
EpsonUSB
). - Evita espacios, tildes o caracteres especiales.
- Si hay varias impresoras en un portátil, crea un puerto LPR por cada share (
HP1102
,Epson01
, etc.).
Seguridad: mínimo privilegio
- Limita la regla de firewall a la(s) IP(s) del servidor (nada de “Any”).
- En la VPN, utiliza políticas por grupo y segmentación (servidor de impresión → clientes LPD únicamente).
- Considera auditoría de PrintService (Operational) y retención de logs.
- Si el pool de VPN es dinámico, registra los clientes en DNS de manera segura o reserva IPs por usuario.
Automatización y comandos útiles
Portátil
# Comprobar servicios
Get-Service LPDSVC, Spooler | Format-Table Name, Status, StartType
Arrancar y poner en automático si fuera necesario
Set-Service LPDSVC -StartupType Automatic
Start-Service LPDSVC
Regla de firewall (sustituye \)
netsh advfirewall firewall add rule name="LPD 515 (desde Servidor)" ^
dir=in action=allow protocol=TCP localport=515 remoteip=\
Ver conexiones escuchando en 515
Get-NetTCPConnection -LocalPort 515 -State Listen
Servidor
Prueba de envío con LPR (imprescindible para aislar problemas):
lpr -S <IP-VPN-portátil> -P <NombreColaCompartida> C:\Windows\win.ini
Creación del puerto LPR (vía interfaz gráfica es lo más estable). Si necesitas script, en muchos equipos sigue existiendo prnport.vbs
; ajústalo a tu idioma del sistema:
cscript //nologo %WINDIR%\System32\PrintingAdminScripts\es-ES\prnport.vbs ^
-a -r LPRPortPortatil ^
-h <IP-VPN-portátil> -o lpr -q <NombreColaCompartida>
Después, asigna ese puerto a la cola del modelo en el servidor y desactiva SNMP en el puerto.
Comprobaciones de eventos
- Portátil:
- Visor de eventos → Microsoft > Windows > PrintService > Operational (habilitar).
- Errores de “cola no encontrada”, “tamaño inválido” o rechazos LPD.
- Servidor:
- Eventos de puerto/monitor LPR y de la cola del modelo.
- Si el servidor cree que imprimió pero el portátil no registra nada, sospecha de ACL/Firewall o nombre de cola.
Cuándo activar/desactivar LPR byte counting
Algunos LPD descartan trabajos si el tamaño anunciado no coincide. En Windows, habilitar “Enable LPR Byte Counting” suele evitar cortados silenciosos o trabajos “fantasma”. Si notas lentitud anómala solo en LPR, prueba a alternarlo y revisa logs.
MTU/MSS y trabajos grandes
Si archivos pequeños pasan y los grandes no, puede haber fragmentación en la VPN. Ajusta la MSS (clamp) en el túnel o reduce la MTU efectiva del cliente. También puedes validar con pruebas de ping con la flag “no fragmentar” para detectar el tamaño máximo útil.
Alternativas si la política de red no permite LPR/LPD
- RDP + Easy Print: ejecuta la app en un servidor de aplicaciones y redirige la impresora local del portátil por RDP (no requiere abrir 515 hacia el cliente).
- Microsoft Universal Print / IPP: usa el conector en el servidor y el agente en el portátil.
- Servidor de impresión USB dedicado: dispositivos que exponen RAW 9100/LPR por red, accesibles por VPN.
- Soluciones con agente (pull): el cliente “recoge” trabajos del servidor (Direct/Mobility Print, etc.).
FAQ
¿Debe instalarse el driver también en el portátil? Sí, porque la impresora USB es local; pero quien renderiza el documento es el servidor. Mantener versiones coherentes evita símbolos raros o páginas en blanco.
¿Puedo usar RAW 9100 en lugar de LPR? No con una impresora USB local al portátil: esa impresora no expone 9100 por red. LPR/LPD es el camino para entregar al spooler del cliente.
¿Importa el nombre de equipo del portátil? No para LPR si apuntas por IP. Si usas FQDN, asegúrate de que el cliente VPN se registra en DNS.
¿El LPD de Windows distingue mayúsculas/minúsculas? En la práctica, usa coincidencia exacta. Evita sorpresas con nombres sencillos y sin espacios.
Checklist exprés listo para marcar
- [ ] La VPN permite conexiones del servidor → portátil.
- [ ] LPD habilitado y en ejecución en el portátil; Spooler activo.
- [ ] Cola LPR = nombre exacto del recurso compartido de la impresora.
- [ ] Firewall del portátil abre TCP 515 (solo para la(s) IP(s) del servidor).
- [ ] Byte counting habilitado en el puerto LPR del servidor.
- [ ] Driver correcto instalado en el servidor.
- [ ] Prueba con
lpr
y revisa PrintService/LPD en el Visor de eventos.
Plantilla de resolución rápida
Prueba | Esperado | Si falla… |
---|---|---|
Test-NetConnection <IP-portátil> -Port 515 | TCP True | Ajusta ACL de VPN o firewall del portátil |
Get-Service LPDSVC | Running | Habilita LPD y Start-Service LPDSVC |
Nombre de cola LPR = nombre de recurso compartido | Coincidencia exacta | Renombra cola/puerto para que coincidan |
lpr -S ... -P ... win.ini | Trabajo llega al portátil | Si no llega: conectividad/cola; si llega y no imprime: driver/PDL |
Evento en PrintService/Operational | Recepción o impresión registrada | Sin eventos = bloqueo previo; errores = diagnosticar por código |
Conclusión
Hacer que una aplicación sanitaria imprima “siempre a través del servidor” aun cuando el usuario está en movilidad con una impresora USB local sí es posible con LPR/LPD, pero la solución solo funciona si todos los tramos están correctamente configurados: VPN bidireccional, LPD activo, cola LPR = nombre del share, firewall afinado, byte counting correcto y driver adecuado en el servidor. Con las pruebas y el checklist de arriba, podrás aislar rápidamente dónde se pierde el trabajo y documentar una configuración repetible y segura.
Si las políticas de red dificultan abrir el 515/TCP hacia los clientes, valora alternativas como RDP + Easy Print, Universal Print/IPP o un print server USB dedicado. En todos los casos, prioriza seguridad (reglas específicas, mínimos privilegios, auditoría) y experiencia de usuario (drivers correctos, nombres simples y pruebas automatizadas).