Skip to content
A UDP port redirector for UNIX
C Roff Makefile M4 Shell
Branch: master
Clone or download
troglobit Update release date in debian/chanagelog and bump version for v3.3
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
Latest commit 2fb5577 Jun 3, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
debian Update release date in debian/chanagelog and bump version for v3.3 Jun 3, 2019
.gitignore Revert "Ignore youdp binary" Jun 27, 2017
.travis.yml Travis-CI: Update dep. on libuEv Jan 28, 2018
AUTHORS Update AUTHORS Ivan out, Tobias in Jun 27, 2017
LICENSE
Makefile.am Minor refactor Jan 28, 2018
README.md Update documentation, SRC and DST are optional, only ports matter Jan 28, 2018
autogen.sh Initial commit udp_redirect.c --> uredir.c Apr 17, 2016
configure.ac Update release date in debian/chanagelog and bump version for v3.3 Jun 3, 2019
design.md Document youdp event machine design Jan 24, 2018
uredir.1 Update documentation, SRC and DST are optional, only ports matter Jan 28, 2018
uredir.c Always call redirect_exit(), not just on signaled exit Jan 28, 2018
uredir.h Minor refactor Jan 28, 2018
youdp.c Fix compiler warning introduced in last pull request Dec 5, 2018

README.md

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.

You can’t perform that action at this time.