[erledigt] iax.conf - bindaddr ...

FBI01

Neuer User
Mitglied seit
7 Mrz 2005
Beiträge
85
Punkte für Reaktionen
0
Punkte
0
Gibt es die Möglichkeit die "bindaddr" zu den unterschiedlichen
Verbindungen individuell zuzuweisen ?

Intern haben wir eine bindaddr vergeben zur Kommunikation via VPN.

Jetzt sollen auch externe Ziele per IAX angesprochen werden. Hierzu
müsste die bindaddr=0.0.0.0 geändert werden, Dann laufen aber die
internen Verbindungen nicht mehr ...

Im Prinziep müsste also die bindaddr=10.10.x.x für externe
Gespräche temp. auf bindaddr=0.0.0.0 geändert werden.

Hat jemand eine Idee ? Mit einem Script läuft's nicht denke ich, denn
die iax.conf müsste ja per "reload" neu geladen werden. Oder kann
man da noch etwas anderes machen ?
 
:wiejetzt:
 
@FBI01

bindaddr=0.0.0.0 bedeutet: der Server lauscht auf allen
Interfaces. Damit sollten auch die internen Verbindungen
laufen, es liegt nur am routing. ggf. mit iptables noch
entsprechende Regeln aufstellen.

@betateilchen

hä? :)

Gruß
britzelfix
 
britzelfix schrieb:
@FBI01
bindaddr=0.0.0.0 bedeutet: der Server lauscht auf allen
Interfaces. Damit sollten auch die internen Verbindungen
laufen, es liegt nur am routing. ggf. mit iptables noch
entsprechende Regeln aufstellen.
Hier läuft Asterisk direkt auf dem Router ( IPCOP ).
Und da wirds leider etwas komplizierter, als wäre der Asterisk ein
Host mit 1 IP ... der IPCOP hat 4 NICS und 1 ipsec ...

Hm - nehmen wir mal an, der IPCOP01 hat GREEN ( das Interface zum LAN ) mit 10.10.10.1
und der IPCOP02 hat GREEN mit 10.10.20.1.

Zwischen den beiden IPCOPs ist ein VPN via Internet ( ipsec -> ppp0 ).

Wenn ich von IPCOP01 den IPCOP02 per IAX erreichen will, dann
wähle ich jetzt [email protected] / die LANs sehen sich immer.
Auch die Router können sich erreichen, jedoch nur, denn die Absendende
Adresse aus dem LAN kommt; eben deshalb die bindaddr und die scheint
auch die Herkunft ( das Quellnetz ) zu signalisieren.

Es funktioniert mit meiner Konfig nur, wenn ich auf dem Asterisk IPCOP01
im iax.conf in der bindaddr=10.10.10.1 + IPCOP02 bindaddr=10.10.20.1
eintrage. Mag es daran liegen, dass der Asterisk sich mit der bindaddr
bei der Gegenstelle "ausweist" ? Und wenn er sich mit 0.0.0.0 meldet
weiss die Gegenseite nicht wohin ...

Fragt sich, auf welche Adresse ich routen soll ? 0.0.0.0 ist ja
ein bisschen problematisch ; )

Irgendwie scheint der Asterisk ja nicht auf allen Interfaces zu
hören, denn bei 0.0.0.0 nimmt er ja nix an ... any idea ??

Kann man den Asterisk veranlassen mit einer bestimmten IP
rauszugehen und trotzdem auf allen interfaces zu hören ?
( das wieder spricht jedem logischen Routing. )

Oder sollte ich die öffentlich IP mit bestimmten Ports zu der bindaddr forwarden ?
Für IAX nur den Port aus [general] oder auch einen
High-Port Range wie 10000:11000 ...
Damit bei Beibehalten der eigetragenen IPs auch Verbindungen
nach extern laufen ?
( Derzeit ist Betrieb, sonst hätte ich's schon getestet ... )
 
@FBI01

Es funktioniert mit meiner Konfig nur, wenn ich auf dem Asterisk IPCOP01
im iax.conf in der bindaddr=10.10.10.1 + IPCOP02 bindaddr=10.10.20.1
eintrage. Mag es daran liegen, dass der Asterisk sich mit der bindaddr
bei der Gegenstelle "ausweist" ? Und wenn er sich mit 0.0.0.0 meldet
weiss die Gegenseite nicht wohin ...


Der Gedankefehler ist, bindaddr bestimmt auf welchen
Interfaces der lokale Server! lauschen soll,
d.h. wenn Du etwas hast wie
eth0 10.10.20.1
eth1 10.10.10.1
ppp0 192.168.1.1

und benutzt bindaddr=0.0.0.0

dann lauscht * auf allen. D.h. jeder Client der von einem bestimmten
Interface kommt und auf eine, der o.g. IP's connecten will,
der kann über das jeweilige Interface connecten.
Das gilt aber nur für ankommende connects, nicht auf abgehende!!!

Wenn * auf das jeweilige Interface zurücksendet, dann sollte
er schon als Absender die lokale Interface-IP benutzen.
Hast Du nachgeprüft ob das so ist? Ich kann mir nicht vorstellen,
daß * als lokale IP 0.0.0.0 angibt.

Um das Routing etwas einzuschränken, kannst Du je Account
bestimmen, wer ran darf mit permit/deny:

[iaxtel2]
;
; Backwards compatible entry for IAXtel pre-RSA
;
type=user
context=default
deny=0.0.0.0/0.0.0.0
permit=216.207.245.47/255.255.255.255

Gruß
britzelfix
 
britzelfix schrieb:
@FBI01
Der Gedankefehler ist, bindaddr bestimmt auf welchen
Interfaces der lokale Server! lauschen soll,
... ok, so steht es auch in der Doku. Doch ...

Alle Tests, auch mit "deny" und "permit", haben jedoch ergeben,
dass mit der bindaddr 0.0.0.0 die Verbindung über das VPN nicht
aufgebaut werden kann.

Vielleicht liegt's ja auch einfach nur an meiner Konfiguration,
die so nur bei mir funktioniert ...
Auf der jeweiligen Seite sind die IPs 10.10.10.1 und 10.10.20.1
entpsrechend unterschiedlich.
Code:
; Inter-Asterisk eXchange driver definition
;
;

[general]
 port=4569
 bindaddr=0.0.0.0             ; <- läuft nur, wenn hier 10.10.10.1 steht !!
 ;amaflags=default
 ;accountcode=lss0101
 bandwith=low
 disallow=all
 allow=gsm
 allow=ilbc
 disallow=lpc10	; unbrauchbar
 jitterbuffer=no
 ; dropcount=3
 ; maxjitterbuffer=500
 ; maxexccessbuffer=100
 ; trunkfreq=20

register => asterisk:[email protected]
tos=lowdelay

[asterisk]
 type=friend
 auth=md5
 secret=passwd
 context=default
 host=10.10.10.1
 ;deny=0.0.0.0/0.0.0.0
 ;permit=10.10.20.1/255.255.255.255 
 ;defaultip=10.10.20.1
 ;qualify=yes
 ;trunk=yes

Und die Verbindung rufe ich auf mit:
Code:
exten => _12XX,1,Dial(IAX2/asterisk:[email protected]/${EXTEN}@default)

... liegt da ein grundsätzlicher Fehler vor ?
 
@FBI01

was für Tests hast Du gemacht?
Kannst Du von jeder IP aus auf den Server
z. B. mit ssh einloggen?

Gruß
britzelfix
 
britzelfix schrieb:
@FBI01
was für Tests hast Du gemacht?
Kannst Du von jeder IP aus auf den Server
z. B. mit ssh einloggen?
Der Asterisk-Server läuft wie erwähnt auf der Firewall ( IPCOP )
und selbstverständlich kann man sich nicht "von jeder IP aus" per
ssh einloggen. ssh hat ja nun auch nix mit den Asterisk Protokollen zu tun ... ; )
Wenn ich die Verbindung via VPN teste muss ich auf der Firewall die
Quell-IP festlegen ( Ausgangspunkt meiner Frage: Welche IP geben
ich dem Asterisk mit ... ) mit
> ping -I 10.10.10.1 10.10.20.1 ( ping -I <source> <destination> )
... anders läuft der Test direkt vom Server aus nicht, denn das VPN
verbindet ja nur zwei Netze und nicht world<->world.

Der IPCOP muss also sehen, dass er im zugelassenen Netz ist -
obwohl er ja gar nicht IN einem Netz ist, sondern zu allen gleichzeitig
Zugriff hat. Wie gesagt, kaum steht bindaddr=10.10.10.1 drin läuft's.

Deshalb stelle ich die Behauptung ja auch auf, dass bindaddr die
IP abgehend auch festlegt - oder ist das "externip=" ?
 
externip geht in der iax.conf nicht:

Table of command or directives you can use and where

Habe Deine Konstellation noch nicht ganz verstanden, ausser das alles auf einer Kiste läuft. Geb doch dem * eine eigene IP, trage die in bindaddr ein. Der Rest sollte über routing laufen. Wenn nicht, liegt da das Problem.

jo
 
@rollo

wie war das mit dem Lesen? :)

Also FBI01 hat 4 NIC's und ein ppp0-IF für VPN.
Wenn er 0 als bindaddr angibt, kann er * nicht connecten.
Wenn er sie explizit angibt, dann gehts. Allerdings
gehen die anderen IF's nicht mehr.

Es gibt jetzt 2 Möglichkeiten, entweder weigert sich
* ppp0 zu binden, oder es liegt am routing.

Gruß
britzelfix
 
rollo schrieb:
Geb doch dem * eine eigene IP, trage die in bindaddr ein. Der Rest sollte über routing laufen. Wenn nicht, liegt da das Problem.
... ich "gebe dem Asterisk mit bindaddr eine eigene IP" ?

Ja, davon rede ich doch von Anfang an und hier wurde immer gesagt,
dass bindaddr nur besagt, auf welche IP Asterisk hört ...

Für IAX richte ich also direkt auf der Firewall ein Portforwarding ein zur bindaddr - welche Protokolle und Ports schlägst Du vor ?
 
FBI01 schrieb:
rollo schrieb:
Geb doch dem * eine eigene IP, trage die in bindaddr ein. Der Rest sollte über routing laufen. Wenn nicht, liegt da das Problem.
... ich "gebe dem Asterisk mit bindaddr eine eigene IP" ?

Ja, davon rede ich doch von Anfang an und hier wurde immer gesagt,
dass bindaddr nur besagt, auf welche IP Asterisk hört ...

Für IAX richte ich also direkt auf der Firewall ein Portforwarding ein zur bindaddr - welche Protokolle und Ports schlägst Du vor ?

War von mir falsch ausgedrückt. Ich meinte für die ganze Konstellation eine zusätzliche IP auf einem der NICs definieren und in bindaddr angeben. Das hast Du aber wohl auch schon gemacht.

IAX benötigt nur Port 4569 UDP, DNS wird ja anderweitig gewährleistet sein. Über NAT müsste auch die Adresse entsprechend umgeschrieben werden.

Eventuell auch hier noch mal gucken.

jo
 
@FBI01

Was mir auffällt sind die ziemlich unglücklich gewählten IP's.
Wenn LAN bei Dir 10.10.10.1 bis 254 hat, dann sollten die IP's fürs ppp0
auch in dieser Reihenfolge gewählt werden 10.10.20.1 bis 254.

Damit spart man sich das bridging, was hier nicht sinnvoll wäre.

Also:

IPCOP01 sollte die IP's 10.10.10.1(LAN) und 10.10.20.1 haben
IPCOP01 sollte im Routing up-host 10.10.20.1 gesetzt haben.

IPCOP02 sollte die IP's 10.10.10.2(LAN) und 10.10.20.2 haben.
IPCOP02 sollte default gateway auf 10.10.20.1 gesetzt haben
und ein up-host (UH) 10.10.20.2 gesetzt haben.

ping sollte dann auch ohne -I funktionieren.

Ich vermute es ist nur etwas simples, ppp0 sollte auch u. U.
mit proxyarp laufen.

@rollo

* auf ein Interface zu binden ist eine Möglichkeit. Diese halte ich für
nicht so sinnvoll, da er FBI01 * über's jede Interface verwenden will.
Der Mehrauffwand entsteht bei iptables-Konfiguration. 5 IP's sind kein Klacks, da kommt man leicht in Teufels Küche.

BTW: openvpn hat nichts mit IPSec zu tun, empfehlenswert ist
die linux ipsec-howto http://www.ipsec-howto.org/ mit kame, setkey & racoon.

Gruß
britzelfix
 
britzelfix schrieb:
Was mir auffällt sind die ziemlich unglücklich gewählten IP's.
Wenn LAN bei Dir 10.10.10.1 bis 254 hat, dann sollten die IP's fürs ppp0
auch in dieser Reihenfolge gewählt werden 10.10.20.1 bis 254.
Damit spart man sich das bridging, was hier nicht sinnvoll wäre.
- ??? -

britzelfix schrieb:
Also:
IPCOP01 sollte die IP's 10.10.10.1(LAN) und 10.10.20.1 haben
IPCOP01 sollte im Routing up-host 10.10.20.1 gesetzt haben.

IPCOP02 sollte die IP's 10.10.10.2(LAN) und 10.10.20.2 haben.
IPCOP02 sollte default gateway auf 10.10.20.1 gesetzt haben
und ein up-host (UH) 10.10.20.2 gesetzt haben.
Leider kann ich Deine Adressvergaben überhaupt nicht nachvollziehen
und das kann eigentlich nur den einen Grund haben:
Ich habe meine Infrastruktur noch nicht deutlich genug beschrieben.

z.B. kann IPCOP01 kann die IP 10.10.20.1 nicht haben, denn das ist das
Netz am Ende des VPN zu dem bereits alle Adressen automatisch
geroutet werden ~ so sieht's dann auch umgekehrt aus ...

Grund: Die Netze laufen natürlich mit einer /24ger Maske
und sind getrennt zu sehen:
LAN IPCOP01 10.10.10.1/24 - IPCOP02 10.10.20.1/24
... und diese LANs sind per VPN gekoppelt. Routing also 1A.

britzelfix schrieb:
Ich vermute es ist nur etwas simples,
... ich tippe da auf was "grundsätzliches", denn es läuft ja mit
einer Konfigänderung im * und nicht mit zusätzlichen Routing-
anweisungen ...

britzelfix schrieb:
ppp0 sollte auch u. U. mit proxyarp laufen.
... das steht ausser Frage.
 
@FBI01


Grund: Die Netze laufen natürlich mit einer /24ger Maske
und sind getrennt zu sehen:
LAN IPCOP01 10.10.10.1/24 - IPCOP02 10.10.20.1/24
... und diese LANs sind per VPN gekoppelt. Routing also 1A.

Pudels Kern.
Um sich zu sehen sollten beide IP's die Netzmaske von 19 haben.

Gruß
britzelfix
 
britzelfix schrieb:
Pudels Kern.
Um sich zu sehen sollten beide IP's die Netzmaske von 19 haben.
... nein, das geht natürlich nicht. Die Netze sind gegeneinander geroutet
und werden ja über ein VPN verbunden. Die Adressierung auf ein Ende
des VPN fünktioniert mit einer /19 Maske nicht. Das Routing wird auf
die ipsec Verbindung gestellt und umgekehrt.
 
@FBI01

... nein, das geht natürlich nicht.

aber genau das hast Du geschrieben,
ich kann Dich gerne noch mal zitieren.

Gruß
britzelfix
 
Kostenlos!

Statistik des Forums

Themen
248,529
Beiträge
2,293,645
Mitglieder
378,033
Neuestes Mitglied
skyeball