Aktuell bastel ich an meinem Voip Server rum der daheim steht und nichts macht weil ich, seit Web.de seinen Voip Dienst eingestellt hat, keinen neuen Voip Provider versucht habe. Aktuell versuche ich bei Puretel und sipcall-voip.de mein Glück, aber von den Telekomikern wäre mir eine Flat lieber die in meinem Call & Surf Comfort mit drin wäre. Aber naja, gibt schlimmeres.
Aufgabe ist das ich mich mit einem Softphone einloggen kann und Telefonieren. So, das ist der leichte Teil der ja schon funktioniert.
Jetzt kommt der schwierigere Teil. Per OpenVPN Tunnel möchte ich mich in einem Internet Cafe daheim in mein Asterisk Server anmelden, den Tunnel werde ich über Port 443 schlagen denk ich, damit sollte ich an den Portfiltern in den Cafe´s vorbeikommen.
Wenn ich mich NICHT eingeloggt habe soll gleich die Voicebox rangehen und meine Handynummer weitergeben. Ich könnte Theoretisch auch einen Analog Koppler an mein TAE hängen und mich auf mein Handy anrufen, aber dann zahle ich das ja.
Damit nicht plötzlich die Luft knapp wird, in diesem Fall die Bandbreite daheim, verwende ich Traffic Shaping mit tc und iptables. Das könnte so aussehen:
#!/bin/sh
DEV=eth0
IPT=/sbin/iptables
TC=/sbin/tc
$IPT -t mangle -F
$TC qdisc del dev $DEV ingress > /dev/null 2>&1
$TC qdisc del dev $DEV root > /dev/null 2>&1
$TC qdisc del dev lo root > /dev/null 2>&1
$TC qdisc add dev $DEV root handle 1:0 htb default 12 r2q 6
# Komplette Bandbreite - Infos vom Router ausgelesen
$TC class add dev $DEV parent 1:0 classid 1:1 htb rate 1183kbit ceil 1183kbit
# DNS und kleine Packete
$TC class add dev $DEV parent 1:1 classid 1:10 htb rate 40kbit ceil 1183kbit prio 0
# SSH
$TC class add dev $DEV parent 1:1 classid 1:11 htb rate 60kbit ceil 1183kbit prio 1
# Alles andere (surfen etc)
$TC class add dev $DEV parent 1:1 classid 1:12 htb rate 600kbit ceil 1183kbit prio 2
# Voip
$TC class add dev $DEV parent 1:1 classid 1:13 htb rate 200kbit ceil 1183kbit prio 3
# Bittorrent
$TC class add dev $DEV parent 1:1 classid 1:14 htb rate 35kbit ceil 980kbit prio 4
#kleine Packete und DNS
$IPT -A POSTROUTING -t mangle -o $DEV -p tcp -m length --length :64 -j MARK --set-mark 10
$IPT -A POSTROUTING -t mangle -o $DEV -p udp --dport 53 -j MARK --set-mark 10
#SSH
$IPT -A POSTROUTING -t mangle -o $DEV -p tcp --dport 22 -j MARK --set-mark 11
$IPT -A POSTROUTING -t mangle -o $DEV -p tcp --sport 22 -j MARK --set-mark 11
# VoIP
$IPT -A POSTROUTING -t mangle -o $DEV -p tcp --dport 5060:5061 -j MARK --set-mark 13
$IPT -A POSTROUTING -t mangle -o $DEV -p tcp --sport 5060:5061 -j MARK --set-mark 13
#Bittorrent
$IPT -A POSTROUTING -t mangle -o $DEV -p tcp --dport 49160:49300 -j MARK --set-mark 14
$TC filter add dev $DEV parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
$TC filter add dev $DEV parent 1:0 prio 0 protocol ip handle 11 fw flowid 1:11
$TC filter add dev $DEV parent 1:0 prio 0 protocol ip handle 12 fw flowid 1:12
$TC filter add dev $DEV parent 1:0 prio 0 protocol ip handle 13 fw flowid 1:13
$TC qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
$TC qdisc add dev $DEV parent 1:11 handle 11: sfq perturb 10
$TC qdisc add dev $DEV parent 1:12 handle 12: sfq perturb 10
$TC qdisc add dev $DEV parent 1:13 handle 13: sfq perturb 10
Wenn das Setup fertig ist werd ich mich mal an das Magazin Linux User wenden ob die den Abdrucken würden, mal sehen was die dann dazu sagen. Wenn Sie den Artikel nicht mögen werf ich Ihn in den Blog, steht ja alles unter der CC hier.
So long