Asterisk Verbindungen auf eth0 einschränken

stäubel

Neuer User
Mitglied seit
11 Aug 2006
Beiträge
198
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen

Hätte da mal wieder eine kleine Frage.
Bin dabei einen Backup Asterisk mit zwei Netzwerkkarten eth0 und eth1 einzurichten.

Nun möchte ich aber, dass Asterisk nur über eth0 verkehrt und keines Falls
versucht Verbindungen über eth1 herzustellen.

eth1 möchte ich nur für meinen SSH-Zugang und Software updates etc.

eth0 soll deaktiviert werden, denn diese hat die gleiche IP-Adresse wie der produktive Asterisk.

Nur wenn der produktive Asterisk mal den Geist aufgeben sollte,
wird eth0 aktiviert und der Backup Asterisk beginnt zu arbeiten.

Hat jemand eine Idee wie ich das lösen könnte?

Viele Grüsse und ein schönes Wochenende.

Stäubel
 
Du kannst

a) in sip.conf bzw. iax.conf eine bindaddress= definieren und somit bestimmen auf welchen IPs Asterisk mit diesen Protokollen lauscht. Es gibt aber z.B. noch AMI (manager.conf)

b) mit routing hat Asterisk selbst nichts zu tun, das muss auf OS Ebene bzw. in der Firewall organisiert/geblockt werden. Du musst allerdings ersteinmal beantworten wie genau Du feststellt dass Asterisk 1 nicht mehr funktioniert.

c) schau' Dir einmal "Heartbeat" an, dieses high-availability Werkzeug ist für genau solche Aufgaben gedacht
 
eth0 soll deaktiviert werden, denn diese hat die gleiche IP-Adresse wie der produktive Asterisk.

Nur wenn der produktive Asterisk mal den Geist aufgeben sollte,
wird eth0 aktiviert und der Backup Asterisk beginnt zu arbeiten.

Du darfst eth0 erst hochfahren, wenn der andere Asterisk tod ist, nicht der Asterisk sondern der Rechner, denn zweimal die selbe ip ist nicht möglich. Also zum Umschalten über ein Script die zweite Schnittstelle hochfahren.
 
Wenn ich das richtig verstanden hab, willst du ein HotBackup System haben. Ein System, was die Arbeit verrichtet, und ein weiteres System, welches im Hintergrund wartet, das der andere Rechner abschmiert, und sich dann selbst aktiviert...

Dazu brauchst du am besten zwei rechner, jeweils mit zwei Netzwerkkarten. die Rechner sollten identisch konfiguriert sein. Beide Rechner verbindest du mit einem CrossOver Kabel an eth1 und lässt Heartbeat laufen. Um evtl. Verbindungsfehlern entgegenzuwirken, würde ich noch ein NullModemKabel an die beiden rechner machen, dann hast du Zwei Verbindungswege, die überprüft werden.

Mit Heartbeat auf Rechner 2 kontrollierst Du Rechner1, ob dieser noch reagiert. Falls er nicht reagiert, wird die eth0-Schnittstelle vom Rechner2 gestartet und der zweite Asterisk ist wieder da... Ausfallszeit ca. 10 Sek - um die Systeme nicht durch des Heartbeat zu überlasten...

Das wäre die einfachste Möglichkeit... Evtl. kannst Du über die eth1 den HotStandby-Server auch aktualiesieren... - MySQL, Files, etc... das der zweite Rechner nahezu auf dem aktuellsten Stand ist..

Gruß Blacky

(PS: Ich habs mit nem Webserver gemacht - sind zwar doppelte Stromkosten, aber Verfügbarkeit nahezu 100%...)
(PS1: Theoretisch kannst du auf diesem wege auch noch mehr Rechner verbinden, je nachdem, wieviel Geld und Arbeit du hast...)
 
Nur wenn der produktive Asterisk mal den Geist aufgeben sollte,

Du musst drei Fälle unterscheiden:

Asterisk gibt den Geist auf oder
das Betriebssystem gibt den Geist auf oder
die Hardware gibt den Geist auf.

Vor allem der zweite Fall ist recht schwer zu erkennen, wenn der Rechner noch teilweise reagiert.
 
Hey vielen Dank für eure Feedbacks.

b) mit routing hat Asterisk selbst nichts zu tun, das muss auf OS Ebene bzw. in der Firewall organisiert/geblockt werden. Du musst allerdings ersteinmal beantworten wie genau Du feststellt dass Asterisk 1 nicht mehr funktioniert.

Asterisk wird überwacht, sobald er auf irgend eine Art ein Problem hat,
werde ich alarmiert und kann manuell eingreifen.

Du darfst eth0 erst hochfahren, wenn der andere Asterisk tod ist, nicht der Asterisk sondern der Rechner, denn zweimal die selbe ip ist nicht möglich. Also zum Umschalten über ein Script die zweite Schnittstelle hochfahren.

Der Backup-Asterisk wäre nur für den absoluten Notfall,
wenn der produktive Asterisk den Geist aufgeben würde,
kann ich manuell den produktiven Asterisk vom Netz trennen
und den Backup-Asterisk in Betrieb nehmen.

Die Umschaltung würde also manuell geschehen und das Netzwerk würde
ich auf jeden Fall trennen, damit es keine IP-Konflikte gibt.

c) schau' Dir einmal "Heartbeat" an, dieses high-availability Werkzeug ist für genau solche Aufgaben gedacht

[...]
Dazu brauchst du am besten zwei rechner, jeweils mit zwei Netzwerkkarten. die Rechner sollten identisch konfiguriert sein. Beide Rechner verbindest du mit einem CrossOver Kabel an eth1 und lässt Heartbeat laufen. Um evtl. Verbindungsfehlern entgegenzuwirken, würde ich noch ein NullModemKabel an die beiden rechner machen, dann hast du Zwei Verbindungswege, die überprüft werden.
[...]

Eine automatische Umschaltung wollte ich jedoch im Moment eigentlich nicht,
denn so wichtig ist das System noch nicht.
Es genügt, wenn ich es manuell merke und dann umschalten kann.
Aber vielen Dank, das klingt sehr interessant,
dies werde ich bestimmt noch anschauen.

Du musst drei Fälle unterscheiden:

Asterisk gibt den Geist auf oder
das Betriebssystem gibt den Geist auf oder
die Hardware gibt den Geist auf.

Bei jedem Fall würde ich den produktiven Asterisk vom Netz trennen und den
Backup in Betrieb nehmen. Dann könnte ich in Ruhe den Fehler beheben.

Ich wollte mir einfach ein zweites Netzwerk eth1 auf dem Backup einrichten,
damit ich updates auf dem Backup-System auch rein laden kann.

Dies würde allerdings voraussetzen, dass Asterisk keines Falls auf eth1
raus gehen darf. Asterisk darf nur auf eth0 hören und senden.


a) in sip.conf bzw. iax.conf eine bindaddress= definieren und somit bestimmen auf welchen IPs Asterisk mit diesen Protokollen lauscht. Es gibt aber z.B. noch AMI (manager.conf)

So wie ich dies nun verstehe, ist es also eigentlich nur möglich, beim Asterisk
einzustellen auf welche IP er hören darf, aber das Senden lässt sich also ohne Firewall (iptables etc) nicht einstellen) :(

Habe ich das etwa richtig verstanden?

Vielen Dank für eure Hilfe.

Gruss Stäubel
 
Asterisk wird überwacht, sobald er auf irgend eine Art ein Problem hat, werde ich alarmiert und kann manuell eingreifen.

Wie genau überwachst Du denn Asterisk? SIP, IAX und Zap jeweils separat, oder schaust Du in die logs und suchst nach fehlender Aktivität? Nur ein Blick auf die Prozesse wäre definitv zu wenig.

Dies würde allerdings voraussetzen, dass Asterisk keines Falls auf eth1 raus gehen darf. Asterisk darf nur auf eth0 hören und senden.

Wenn eth1 nicht vorhanden ist kann es auch niemand nutzen. :) Tip: Es gibt auch virtuelle Netzwerkkarten unter Linux mit eigener IP a la eth1:0, das sollte Dir helfen können.

So wie ich dies nun verstehe, ist es also eigentlich nur möglich, beim Asterisk einzustellen auf welche IP er hören darf, aber das Senden lässt sich also ohne Firewall (iptables etc) nicht einstellen) :(
Habe ich das etwa richtig verstanden?

Genau (naja, wenn man nichts hört dann kann man darauf auch nicht antworten).

Wenn Du manuell umschalten möchtest, dann reicht es doch auch aus den Asterisk erst dann manuell zu starten und ihn nicht permanent laufen zu lassen?!
 
Zuletzt bearbeitet:
Wie genau überwachst Du denn Asterisk? SIP, IAX und Zap jeweils separat, oder schaust Du in die logs und suchst nach fehlender Aktivität? Nur ein Blick auf die Prozesse wäre definitv zu wenig.
Es sind verschiedene Überwachungen, einige bin ich noch am aufbauen.

Z.B. wird es noch eine Art SIP-Phone geben, welches zyklisch versucht über
Asterisk zu telefonieren, sobald dies nicht mehr geht löst es Alarm aus.

Anderseits habe ich noch ein Script gemacht, welches den Prozess
überwacht. Und ich bin auch noch ein Verbindungsüberwachungstool am bauen.
Und eine Art Watchdog wird es auch noch geben...

Wenn eth1 nicht vorhanden ist kann es auch niemand nutzen. :) Tip: Es gibt auch virtuelle Netzwerkkarten unter Linux mit eigener IP a la eth1:0, das sollte Dir helfen können.

An dies dachte ich auch, jedoch habe ich ja dann wieder das gleiche Problem,
dass Asterisk einfach über das virtuellen Netzwerk versuchen könnte eine Verbindung nach aussen aufzubauen.

Wenn Du manuell umschalten möchtest, dann reicht es doch auch aus den Asterisk erst dann manuell zu starten und ihn nicht permanent laufen zu lassen?!

Es war auch nicht geplant, ihn immer eingeschaltet zu lassen.
Aber wenn ich am produktiven Asterisk eine Änderung mache, möchte ich diese eben auch so
einfach wie möglich auf den Backup übertragen, ohne diesem immer die IP ändern zu müssen.
Für dies wäre eben das zweite eth vorgesehen.

Aber ich müsste eben sicherstellen, dass Asterisk nicht versucht über das
zweite eth Verbindungen aufzubauen.

Aber ich sehe schon, ich komme wohl nicht drum herum entweder iptables
einzusetzen oder meiner Firewall beibringen zu müssen, er solle keinen Asterisk
Traffic über die zweite Netzwerkkarte zulassen ausser meinen SSH-Zugang.

Oder ich mache es noch einfacher, ich achte einfach darauf, dass Asterisk
nie läuft sondern nur der Rechner. Ist einfach ein wenig gefährlich, denn
einmal Asterisk gestartet schon registriert er sich beim Provider und Calls
könnten bereits fälschlicherweise auf dem Backup-Asterisk landen.

Naja mal schauen.

Jedenfalls besten Dank für euer Interesse und Hilfe.

Grüsse Stäubel
 
sip.conf
Code:
[general]
context=default
bindport=5060
bindaddr=84.16.xxx.xxx
srvlookup=yes

Heißt des bindaddr= nicht eigentlich, das der * nur auf dieser Addresse agiert???

Ich kenn des vom IRC-Server - dort kann ich auch eingeben, welche der IP Adressen der Server reagiert...
Auf dem Server hab ich insgesamt 5 IP Adressen, alle 5 für den IRC Server, jeweils eine Addresse für die 5 Eggdrops, Teamspeak, etc etc...

und wenn ich versuche, auf IP1:8767 zu connecten - komme ich definitiv auf meinem TS Server an, bei IP2:8767 auf den Server des Kollegen... obwohl gleicher rechner...

ich würde es einfach mal austesten...
/etc/network/interfaces bei debian
Code:
auto eth0
iface eth0 inet static
        address 192.168.1.88
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1

auto eth1
iface eth1 inet static
        address 192.168.1.90
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
so am besten mit 2 Netzwerkkarten...
und beim testasterisk einfach die erste karte nicht anschliessen und in der sip.conf ein
bindaddr=192.168.1.88

dann hört der * auf dieser addresse, aber er bekommt keine connection...


ein versuch wär es wert...
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.