====== systemd Cookbook ====== ===== Network Proxy (like socat) ===== Sometimes you want to create a simple proxy. For example, you want to forward the local port 3389/tcp to the remote host 192.0.2.100 port 3389/tcp to enable RDP access for other hosts. You maybe stumble upon socat and put together a working command like this: socat TCP4-LISTEN:3389,fork,reuseaddr TCP4:192.0.2.100:3389 Now you want to start this proxy in the background in case of a reboot of the system. systemd offers its own way of creating a proxy like this with [[https://www.freedesktop.org/software/systemd/man/latest/systemd-socket-proxyd.html|systemd-socket-proxyd]]. You have to create a socket and a service file. The socket file defines the listening socket and will trigger the service file on start and stop. [Socket] ListenStream=3389 [Install] WantedBy=sockets.target [Unit] Requires=proxy-to-rdphost.socket After=proxy-to-rdphost.socket [Service] ExecStart=/usr/lib/systemd/systemd-socket-proxyd 192.0.2.100:3389 PrivateTmp=yes PrivateNetwork=no After creating/editing the files, systemd has to be reloaded. systemctl daemon-reload Enable the socket to activate it at boot and immediately start it with "--now". systemctl enable --now proxy-to-rdphost.socket