# STUN-Server einrichten

Das STUN-Protokoll definiert folgendes ([http://www.ietf.org/rfc/rfc3489.txt](http://www.ietf.org/rfc/rfc3489.txt "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
- <div>STUN ist inzwischen recht verbreitet und wird von vielen VOIP-Geräten unterstützt</div>
- 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:

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

2\. Entpacken und Kompilieren der Sourcen:

```code
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:

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

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

```code
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

```code
#!/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
```