Bei TigerVNC - Paket tigervnc-standalone-server - wird so etwas im Prinzip für die Einrichtung eines VNC-Ports pro VNC-Benutzer-Session gemacht.
Realisiert wird das mit einer systemd-Template-Unit in Verbindung mit einer Benutzer-Display-Mapping-Konfigurations-Datei.
So eine Unit sieht dann z.B. wie folgt aus:
MeinUnitName@<Parameter>.service
<Parameter>
lässt sich dann innerhalb der Unit über die Variable %i
nutzen, z.B. in der ExecStart
Zeile.
Beispiel: tigervnc@.service:
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
ExecStart=@CMAKE_INSTALL_FULL_LIBEXECDIR@/vncsession-start %i
PIDFile=/run/vncsession-%i.pid
SELinuxContext=system_u:system_r:vnc_session_t:s0
[Install]
WantedBy=multi-user.target
Die Benutzer-Mapping-Datei sieht dann z.B. so aus:
:2=Benutzer01
:3=Benutzer02
...
Das ist noch nicht die vollständige Lösung, aber so ähnlich vom Ansatz sollte sich das IMO dann auch mit einem IP-Benutzer-Mapping realisieren lassen.*
Weiteres solltest Du unter den Links erfahren.
LG,
Newubunti
EDIT:
* Damit nicht der falsche Eindruck entsteht: Ich kann nicht sagen, ob das für Deinen Anwendungsfall praktisch so funktionieren wird, wie im Falle von TigerVNC. Ich wollte das nur als möglichen Lösungsansatz in den Raum werfen. Jedenfalls könnte ich mir vorstellen, dass das ein Anwendungsfall für systemd-Templates sein könnte. Letztlich muss sich der Dienst um den es geht, dann IMO auch konfliktfrei mehrfach starten lassen.