How to Install and Configure Port Forwarding Using Rinetd in Windows

Rinetd purpose is to redirects the TCP connections from one IP address and port to another. Since rinetd runs as a single process using nonblocking I/O, it is able to redirect a large number of connections without a severe impact on the machine. This article will shows how you can do port-forwarding with rinetd on Windows operating system such as windows xp, windows server 2008 server, windows server 2003 and etc. Please follow below steps:

1. Download rinetd

2. Configure rinetd.conf as per below

Please create rinetd.conf and put it in C:\rinetd folder, together with rinetd.exe

192.168.2.2 80 192.168.2.5 80

You will redirect ip 192.168.2.2 with port 80 to 192.168.2.5 with port80

C:\>cd rinetd

C:\rinetd>dir
 Volume in drive C is OS
 Volume Serial Number is 9314-A45E

 Directory of C:\rinetd

03/15/2011  10:37 PM              .
03/15/2011  10:37 PM              ..
04/13/2003  01:29 PM             2,043 CHANGES
02/17/1999  06:34 PM            22,320 getopt.c
02/17/1999  06:15 PM             4,551 getopt.h
04/13/2003  01:28 PM             8,484 index.html
03/01/1999  10:41 AM               166 Makefile
03/01/1999  10:39 AM             3,612 match.c
08/07/1998  11:54 AM               188 match.h
04/13/2003  01:27 PM               770 README
03/15/2011  10:29 PM                97 rinetd-run.bat
03/01/1999  10:42 AM             6,936 rinetd.8
04/13/2003  01:26 PM            35,445 rinetd.c
03/15/2011  09:26 PM                29 rinetd.conf
02/17/1999  10:12 PM             3,555 rinetd.dsp
02/17/1999  06:00 PM               535 rinetd.dsw
04/13/2003  01:33 PM           290,893 rinetd.exe
03/15/2011  09:56 PM             1,975 rinetd.ini
02/17/1999  10:12 PM            74,752 rinetd.ncb
02/17/1999  10:12 PM            48,640 rinetd.opt
02/17/1999  06:49 PM             2,173 rinetd.plg
03/15/2011  09:06 PM           114,688 ServiceEx.exe
              20 File(s)        621,852 bytes
               2 Dir(s)     463,695,872 bytes free

3. Run rinetd (manually).

C:\rinetd>rinetd.exe -c rinetd.conf

We can also create a batch file, and call rinetd-run.bat to start rinetd with a click:

@echo off
c:
cd c:\rinetd\rinetd
start c:\rinetd\rinetd.exe -c c:\rinetd\rinetd.conf
Exit

4. Download ServiceEx, a windows application that allows a normal program to run as a Windows service.

5. Configure ServiceEx to make rinetd a windows service.

Refer and download http://serviceex.com/files/ServiceEx.ini.sample

Modify the changes on ServiceEx.ini.sample and save as rinetd.ini

; Instructions for installing a service:
;
;  1.  Edit this file.  You need to fill in the values for ServiceExeFullPath, options,
;      desktop, Start and StartNow below.
;  2.  Decide on a name for the service.
;  3.  Save this file as that name, with an .ini extension added.  For example, if you will name
;      the service "NotepadService", you would save this file with the name NotepadService.ini
;      in the same directory where ServiceEx.exe is located.
;  4.  In Windows, select Start/Run then enter "cmd", without the quotes, in the prompt.
;  5.  Chdir to the directory where you have placed ServiceEx.exe
;  6.  Type "ServiceEx install ".  If all goes well your service will be installed (and running,
;      if you so specified).
;
;
; Once you have run ServiceEx successfully, if you want to change the values in this file, you should do the following:
;
; 1.  Stop the service (i.e. run "net stop  at the command line)
; 2.  Remove the service (i.e. run "ServiceEx remove )
; 3.  Edit and save this file as desired.  This file must be named the same as the service name with an .ini extension added.
; 4.  Install the newly configured service (i.e. run "ServiceEx install ).
;
; Unless you change the executable file, it is better to use the service manager to modify these values.
; Please visit serviceex.com for information on how to do that.
;

; full path to exe to be run as a service--use quotes if path contains spaces
; The section identifier below is REQUIRED
[ServiceEx]
ServiceExeFullPath = "c:\rinetd\rinetd.exe"

; program arguments to be sent to executable
options = -c c:\rinetd\rinetd.conf

; can program interact with desktop [true | false] (default: true)
desktop = true

; start type (valid values: Auto Manual Disabled) (default: auto)
Start=Auto

; start the service upon installation [true | false] (default: no)
StartNow=false

If you open rinetd.ini, you will notice these changes

ServiceExeFullPath = "c:\rinetd\rinetd.exe"

; program arguments to be sent to executable
options = -c c:\rinetd\rinetd.conf

6. Run rinetd as a windows service

ServiceEx install rinetd

You can start and stop it using command line utilities.

 To start: "net start rinetd"
  To stop: "net stop rinetd"

If you browse http://192.168.2.2, it will show you http://192.168.2.5 website.