Skip to main content

STUN-Server einrichten

Das STUN-Protokoll definiert folgendes (http://www.ietf.org/rfc/rfc3489.txt):

  • STUN ermöglicht einem Gerät dessen öffentliche IP und den Typ von NAT-Gerät hinter dem es hängt herauszufinden
  • STUN arbeitet auf TCP und UDP Port 3478
  • STUN ist inzwischen recht verbreitet und wird von vielen VOIP-Geräten unterstützt
  • STUN kann DNS SRV-Einträge verwenden um STUN server einer bestimmten Domain herauszufinden. Der Servicename ist „_stun._udp or _stun._tcp“

1. Download des Sourcecodes nach /usr/src von:

http://sourceforge.net/projects/stun/

2. Entpacken und Kompilieren der Sourcen:

cd /usr/src
tar xvfz stund_0.96_Aug13.tgz
cd stund
make
mkdir /usr/local/stund
cp server /usr/local/stund
cp client /usr/local/stund

3. STUN-Server testweise starten:

cd /usr/local/stund
./server -v -h <main IP> -a <secondary IP>

4. STUN-Server testen (neues Konsolenfenster aufmachen):

cd /usr/local/stund
./client -v <main IP>

5. Wenn der STUN-Server antwortet ist alles OK

6. Hier noch ein Redhat kompatibles init-Script für den Server

#!/bin/sh
#
#   Startup/shutdown script for the STUN-Server
#
#   Linux chkconfig stuff:
#
#   chkconfig: 35 90 10
#   description: Startup/shutdown script for the STUN-Server
#

# Source function library.
if [ -f /etc/init.d/functions ] ; then
	. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
	. /etc/rc.d/init.d/functions
else
	exit 0
fi

DAEMON=/usr/local/stund/server
IP1="86.109.254.36"
IP2="86.109.254.37"

prog=stund

start () {
	echo -n $"Starting $prog: "

	# start daemon
	daemon $DAEMON -b -h $IP1 -a $IP2
        RETVAL=$?
	echo
	[ $RETVAL = 0 ] && touch /var/lock/subsys/stund
	return $RETVAL
}

stop () {
	# stop daemon
	echo -n $"Stopping $prog: "
	killproc $DAEMON
	RETVAL=$?
	echo
	[ $RETVAL = 0 ] && rm -f /var/lock/subsys/stund
}

restart() {
	stop
	start
}

case $1 in
	start)
		start
	;;
	stop)
		stop
	;;
	restart)
		restart
	;;
	condrestart)
		[ -f /var/lock/subsys/stund ] && restart || :
	;;	
	status)
		status $DAEMON
	;;
	*)

	echo $"Usage: $prog {start|stop|restart|condrestart|status}"
	exit 1
esac

exit $RETVAL