github.com/troglobit / uredir

A UDP port redirector for UNIX

Commit log
a9b0ab8 ⎇ master.github: bump version of actions to update Node.js Joachim Wiberg 3 years ago
1fc5e9d .github: drop extra tree package in dep install Joachim Wiberg 3 years ago
14cdd16 Drop Travis-CI, finally Joachim Wiberg 4 years ago
35051bb .github: again, sudo not needed (or available) in Debian container Joachim Wiberg 4 years ago
7cdc70a .github: retry, with an apt-get update Joachim Wiberg 4 years ago
8e365f8 .github: apparently we don't even have curl ... Joachim Wiberg 4 years ago
81c248c .github: install libuEv deb in Debian container, tar.gz in Ubuntu Joachim Wiberg 4 years ago
55c774d .github: use .deb of libuEev from troglobit.com instead of src Joachim Wiberg 4 years ago
81a707c .github: nota bene, no sudo in Debian containers, they run as root Joachim Wiberg 4 years ago
af50dd2 .github: apparently wget is missing from debian base ... Joachim Wiberg 4 years ago

UDP port redirector

Badge Travis Status

uredir is a small Linux daemon to redirect UDP connections. It can be used to forward connections on small and embedded systems that do not have (or want to use) iptables.

uredir can be used with the built-in inetd service in Finit to listen for, e.g. SNMP connections, on some (safe) interfaces and forward to an SNMP daemon on loopback.

  • In normal mode it forwards packets to a given destination and remembers the sender's address. Packets received from the given destination are forwarded to the sender.
  • In inetd mode uredir lingers for three (3) seconds after forwarding a reply. This to prevent inetd from spawning new instances for multiple connections, e.g. an SNMP walk.

For a TCP port redirector, see redir.

Usage

uredir [-hinsv] [-I NAME] [-l LEVEL] [-t SEC] [SRC:PORT] DST:PORT

  -h      Show this help text
  -i      Run in inetd mode, get SRC:PORT from stdin, implies -n
  -I NAME Identity, tag syslog messages with NAME, default: uredir
  -l LVL  Set log level: none, err, info, notice (default), debug
  -n      Run in foreground, do not detach from controlling terminal
  -s      Use syslog, even if running in foreground, default w/o -n
  -t SEC  Timeout for connections, default 3 seconds
  -v      Show program version

 Bug report address: https://github.com/troglobit/uredir/issues

Examples

This simple UDP proxy example forwards inbound DNS requests on any interface to an external DNS server on 192.168.0.1:

uredir :53 192.168.0.1:53

To run uredir from a process monitor like Finit or systemd, tell it to not background itself and to only use the syslog for log messages:

uredir -ns :53 127.0.0.1:53

To run uredir in inetd mode, e.g. to redirect SNMP requests, try the following. Runs in foreground, as required for inetd services, and uses syslog for logging:

snmp  dgram  udp  wait  root  uredir -i 127.0.0.1:16161

Build & Install

uredir is tailored for Linux systems and should build against any (old) C libray. However, uredir v3.0 and later require an external library, libuEv. Installing it should present no surprises since it too use a standard configure script and support pkg-config. The latter is used by the uredir build to locate the library and header files.

Hence, the regular ./configure && make is usually sufficient to build uredir. But if libuEv is installed in non-standard location you may need to provide the path:

    PKG_CONFIG_PATH=/opt/lib/pkgconfig:/home/ian/lib/pkgconfig ./configure
    make

Origin & References

The uredir project is open source under the ISC license and actively maintained at GitHub. Please use its interface for reporting bugs and an pull requests.

uredir was heavily inspired by redir(1), by Sam Creasey.