Port Forwarding Daemon

portfwd ist ein netter kleiner port forwarder mit schönen features die z.B. ein rinetd missen lässt.

U.a. wären da: Forwarding von TCP und UDP, FTP in aktiv oder passiv mode, transparenter proxymode (wenn vom OS bzw. kernel unterstützt), ein rudimentäres „loadbalancing“, mehrere lokale IPs unterstützt (mit unterschiedlichen forwarding möglichkeiten) und explizite angabe einer source Address pro forwarding möglich.

Es wird zwar seit 2007 nicht mehr weiterentwickelt aber das muss nicht unbedingt was heißen…

 

HP: https://sourceforge.net/projects/portfwd/

Installieren:
# cd /usr/local/src
/usr/local/src # wget „http://downloads.sourceforge.net/project/portfwd/portfwd/0.29/portfwd-0.29.tar.gz?use_mirror=kent“ -O portfwd-0.29.tar.gz
/usr/local/src # tar xzf portfwd-0.29.tar.gz
/usr/local/src # cd portfwd-0.29
/usr/local/src/portfwd-0.29 # ./configure && make && make install

 

Konfigurieren:
# vi /usr/local/etc/portfwd.conf

user  nobody
group nobody


tcp {
        # Verbindungen auf Port 8080 aus dem Netz 172.10.10.0/24 gehen zu 192.168.10.30:80
        8080 { 172.10.10.0/24 => 192.168.10.30; }

        # Selbiges mit portrange von 1024 bis 5000 ...
        8080 { 172.10.10.0/24:1024+5000 => 192.168.10.30; }
        # bzw alles größer oder gleich 1024 ...
        8080 { 172.10.10.0/24:1024+ => 192.168.10.30; }
        # bzw alles kleiner oder gleich 1024 ...
        8080 { 172.10.10.0/24:+1024 => 192.168.10.30; }

        # Selbes wie oben aber alle anderen Netze gehen zu 192.168.10.30:81
        8080 { 172.10.10.0/24   => 192.168.10.30;
                                => 192.168.10.30;
         }

        #Ein einfacher Round-Robin-Loadbalancer:
        80 { => 192.168.10.10:80,
                192.168.10.20:80
        }

        # FTP
        10000
        ftp-active-mode-on 127.0.0.1
        ftp-passive-mode-on 127.0.0.1
        { => localhost:ftp }
}

# Alle folgenden Regeln an eine Adresse binden
listen-on 192.168.100.10
tcp { 25 { => 192.168.10.40:25 } }

# Selbiges aber mit festsetzen der source address
listen-on 192.168.100.11
source-address 192.168.100.11
tcp { 22 { => 192.168.10.40:22 } }

# UDP unter Angabe eines Hostnames
udp {
        53 { => dns.example.com:53 }
}

In dem README und in doc/FAQ des sourcecode verzeichnisses sind die Beispiele nochmal etwas ausführlicher beschrieben.

 

Starten:
# /usr/local/sbin/portfwd -c /usr/local/etc/portfwd.conf

Als transparenten proxy:
# /usr/local/sbin/portfwd -t -c /usr/local/etc/portfwd.conf

Ein entsprechendes Startscript ist die Hausaufgabe. 😉