Ja bym poszedł drogą @vtx, ale jak proces systemowy, a nie użytkownika, by startowało razem z systemem, a nie z użytkownikiem (bo nie zawsze sesja użytkownika będzie aktywna).
A jeśli chcesz zrobić sam forwarding bez SSH, co ma więcej sensu tutaj, skoro łączysz się do localhost, to możesz zamiast tego użyć systemd-socket-proxyd w połączeniu z socket activation.
Robisz to w taki sposób. Tworzysz sobie pliki:
/etc/systemd/system/proxy-1.socket:
Kopiuj
[Socket]
ListenStream=8080
[Install]
WantedBy=sockets.target
/etc/systemd/system/proxy-1.service:
Kopiuj
[Unit]
Requires=proxy-1.socket
After=proxy-1.socket
[Service]
ExecStart=/usr/lib/systemd/systemd-socket-proxyd 192.168.0.2:8080
PrivateTmp=yes
PrivateNetwork=yes
/etc/systemd/system/proxy-2.socket:
Kopiuj
[Socket]
ListenStream=8081
[Install]
WantedBy=sockets.target
/etc/systemd/system/proxy-2.service:
Kopiuj
[Unit]
Requires=proxy-2.socket
After=proxy-2.socket
[Service]
ExecStart=/usr/lib/systemd/systemd-socket-proxyd 192.168.0.3:8080
PrivateTmp=yes
PrivateNetwork=yes
Jak już to masz to odpalasz:
Kopiuj
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now proxy-1.socket proxy-2.socket
Teraz systemd będzie nasłuchiwał na portach 8080 oraz 8081 i aktywuje połączenie dopiero wtedy kiedy zajdzie taka potrzeba (aka będzie ktoś chciał się połączyć).