[GELÖST] Asterisk an zwei IPs binden

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
aktivix
Beiträge: 59
Registriert: 22.03.2008 05:15:27

[GELÖST] Asterisk an zwei IPs binden

Beitrag von aktivix » 13.10.2011 00:05:06

Liebe Leute,

Ich setzte zur Zeit Asterisk auf einem HA-Cluster mit zwei Servern (active/passive) mit pacemaker/corosync/drbd auf. Alles super soweit.

Ich nutze zwei virtuelle IPs, eine aus einem internen Netz für die Telefone, die andere in einem privaten Netz meines Providers, um dort Gespräche hinzuschicken und Anrufe zu empfangen.

Ich möchte Asterisk dazu bringen, nur an diesen beiden IPs zu lauschen.
Wenn ich bindaddr = 0.0.0.0 verwende, registrieren sich die Telefone zwar an der virtuellen internen IP, bekomme die Antwort Pakete jedoch von der "Haupt-IP" der entsprechenden Netzwerkkarte.

Nach einem Failover funktioniert dass dann natürlich nicht mehr, da die zweite IP nicht mehr erreichbar ist.

Jemand ne Ahnung wie ich das Problem lösen kann? Habe viel gegoogelt, überall ähnliche Fragen gefunden, aber keine Antworten.

Danke,
aktivix
Zuletzt geändert von aktivix am 15.10.2011 17:44:06, insgesamt 1-mal geändert.

aktivix
Beiträge: 59
Registriert: 22.03.2008 05:15:27

Re: Asterisk an zwei IPs binden

Beitrag von aktivix » 15.10.2011 17:42:59

Für alle die vielleicht mal vor der selben Problematik stehen, hier eine Lösung, die ich verwende. Asterisk greift aus das Betriebssystem und dessen Routingtabelle zurück, deswegen muss man die ändern, z.B. mit

Code: Alles auswählen

ip route change 192.168.1.0/24 src 192.168.1.93 dev eth0
Prinzipiell bringt pacemaker wohl auch eine solche Funktion mit, nämlich ocf_heartbeat_IPsrcaddr [1]. Die hat bei mir allerdings nicht funktioniert.
Deswegen verwende ich ein script, und lasse dies durch pacemaker mit lsb:xxx aufrufen.

Code: Alles auswählen

#! /bin/sh -e

### BEGIN INIT INFO
# Provides:          fixrouting
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description:       fix the fuckin' routing
### END INIT INFO

set -e

case "$1" in
start)
ip route change 192.168.1.0/24 src 192.168.1.93 dev eth0
ip route change 172.251.1.0/24 src 172.251.1.126 dev eth0

;;
stop)
ip route change 192.168.1.0/24 src 192.168.1.92 dev eth0
ip route change 172.251.1.0/24 src 172.251.1.125 dev eth0

;;
force-reload|restart)
$0 stop
$0 start
;;

    * )

echo "Usage: /etc/init.d/fixrouting {start|stop|restart|force-reload}"
exit 1
;;
esac

exit 0
Damit kann man asterisk auch mit bindnetaddr=0.0.0.0 laufen lassen.

Viele Grüße,
aktivix

[1] http://www.linux-ha.org/doc/man-pages/r ... caddr.html

Antworten