[
https://issues.apache.org/jira/browse/GUACAMOLE-2301?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18097219#comment-18097219
]
Ciro Iriarte commented on GUACAMOLE-2301:
-----------------------------------------
Follow-up: the reverse-connection mode discussed earlier on this ticket is now
implemented and validated, together with a plain-Telnet transport. This closes
the remaining design gap; the coordinated pull requests can follow.
*Reverse (listen) mode* — with reverse-connect=true, guacd binds a local TCP
port and accepts an inbound connection from the device instead of dialing out
(for QEMU/VMware virtual serial ports and dial-out console servers). New
parameters: reverse-connect, bind-address (default 127.0.0.1), listen-timeout
(default 60s); hostname becomes optional. On disconnect with auto-reconnect,
guacd resumes listening.
*telnet transport* — network-protocol=telnet: base RFC854 Telnet framing (IAC +
BINARY/SGA/ECHO) via libtelnet, without the RFC2217 COM-PORT option, for
endpoints that speak plain Telnet (QEMU telnet:, VMware ESXi telnet://). Works
in both forward and reverse mode.
Validated end-to-end through the web client against a real QEMU/KVM serial
console (attachments):
* qa-serial-reverse-mode-web-client.png — reverse mode, raw framing: the VM
console rendered in the browser, with a browser-typed command executing in the
guest
* qa-serial-reverse-telnet-web-client.png — reverse mode over Telnet framing (0
stray IAC bytes reached the terminal)
* qa-serial-telnet-transport-web-client.png — the telnet transport, forward,
against a QEMU telnet server
* qa-serial-connection-form-reverse-fields.png — the administration form
exposing the reverse parameters and the Telnet protocol option
* qa-serial-reverse-reconnect-typescript.txt — re-listen on reconnect: after a
drop, guacd re-binds and re-accepts a new inbound connection in place (two
boots in one terminal/scrollback)
* qa-serial-reverse-and-telnet-evidence.md — full method, results, and
honestly-noted coverage limitations
> Add serial console protocol support
> -----------------------------------
>
> Key: GUACAMOLE-2301
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-2301
> Project: Guacamole
> Issue Type: New Feature
> Components: guacamole-client, guacamole-manual, guacd
> Reporter: Ciro Iriarte
> Priority: Major
> Attachments: qa-serial-client-send-break-dtr-rts-menu.png,
> qa-serial-color-scheme-white-black.png,
> qa-serial-connection-form-reverse-fields.png, qa-serial-connection-form.png,
> qa-serial-local-mode-juniper-console.png, qa-serial-report.md,
> qa-serial-reverse-and-telnet-evidence.md,
> qa-serial-reverse-mode-web-client.png,
> qa-serial-reverse-reconnect-typescript.txt,
> qa-serial-reverse-telnet-web-client.png, qa-serial-ser2net-raw.png,
> qa-serial-ser2net-rfc2217.png, qa-serial-telnet-transport-web-client.png
>
>
> Guacamole offers terminal protocols (SSH, Telnet) and, recently, IPMI
> Serial-over-LAN (GUACAMOLE-2300), but has no way to reach a plain *serial
> console* — the RS-232 console port of network switches, routers, firewalls,
> PDUs, and headless servers — which remains the primary out-of-band
> administration and disaster-recovery interface for that equipment.
> This proposes a new "serial" protocol module for guacd, with a matching
> connection form in guacamole-client and a chapter in guacamole-manual,
> mirroring the existing terminal protocols and reusing the shared terminal
> emulator (color schemes, fonts, scrollback, session recording, typescript,
> copy/paste).
> h3. Scope
> Two connection modes, selected by an explicit parameter:
> * *Local* — a serial device attached to the guacd host (e.g. /dev/ttyUSB0,
> /dev/serial/by-id/...), configured via termios: baud rate, data bits, parity,
> stop bits, and hardware/software flow control, with an optional server-side
> device allowlist.
> * *Network* — a serial port exposed over IP by ser2net
> (https://github.com/cminyard/ser2net), either as raw TCP or via RFC2217
> (Telnet COM-PORT-OPTION), the latter enabling negotiation of serial line
> settings and break signalling over the wire.
> h3. Notable features
> * Configurable *send-break* (break-duration) for password-recovery / ROMMON /
> U-Boot workflows, triggerable from the browser and via a client-agnostic
> control pipe.
> * *Paste pacing* (paste-delay) to avoid FIFO overrun when pasting
> configuration blocks at low baud without flow control.
> * Session recording / typescript for audit, read-only mode, and clipboard
> controls, inherited from the shared terminal.
> h3. Implementation status
> A working implementation exists across guacamole-server, guacamole-client,
> and guacamole-manual, building cleanly against apache/main; coordinated PRs
> to follow. USB/IP was evaluated and deliberately not integrated, as ser2net
> is the appropriate mechanism for remote serial access.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)