Redirecting TCP-traffic to a UNIX domain socket under Linux

linux, networking, sockets, tcp, unix

Solution

Turns out socat can be used to achieve this:

socat TCP-LISTEN:1234,reuseaddr,fork UNIX-CLIENT:/tmp/foo

And with a bit of added security:

socat TCP-LISTEN:1234,bind=127.0.0.1,reuseaddr,fork,su=nobody,range=127.0.0.0/8 UNIX-CLIENT:/tmp/foo

These examples have been tested and work as expected.

Problem

Assume a legacy Linux application listening on a UNIX domain socket `/tmp/foo`. In addition to communicating with this legacy application over the UNIX domain socket mechanism I want to be able to connect to it via a TCP-connection on port say 1234. What is the easiest way to bind to TCP port 1234 and then redirect all incoming connections to the UNIX domain socket `/tmp/foo`?

Original source