pfff, jetzt wirds lustig...
hallo gandlz,
>"...Nun ist da aber nur noch ppp5.3 PPP.33 welches dann wohl unter der selben IP Telefon und Internet verbindet..."
na, der sauhaufen is perfekt. der ppp5.3 ist eine vull (
virtual
unbundled
local
loop), virtuelle entbündelung also. vorher warst wirklich entbündelt, jetzt nur noch virtuell, voip und data rennen über dieselbe schiene, und du bist nicht mehr in der lage, bei den virtual servers den traffic über den schnittstellenstack zu differenzieren.
>"...Ich glaube das benötigt noch das GRE-Protokoll..."
falls du mit "vpn" das obsolete pptp meinst, dann ja. pptp ist ein 2-channel-protocol. die kontrollverbindung rennt über den tcp/1723 und data eben über gre. bei jeder 2-channel-verbindung liegt ein bruch von osi vor, der bei genatteten verbindungen sehr nervig werden kann (nat is bekanntlich nervig, doppel-nat is geistesgestört), weil ja infos, die den den data-channel betreffen (bei pptp/gre gehts um die call-id) über den control-channel ausgetauscht werden. um dieses manko zu beheben, gibts protokollspezifische hilfsanwendungen, die gemeinhin als algs bezeichnet werden und nix andres als kernelmodule sind, die beim verbindungsaufbau auf application level mitsniffen und dort die relevaten infos fürs nat und die firewall extrahieren.
konkret macht das pptp/gre-alg *serverseitig* folgendes:
0. beim verbindungsaufbau werden die call-ids ausgetauscht (der gre-tunnel besteht ja aus 2 unidrektionalen links, mit jeweils einer eigenen call-id). das pptp/gre-alg ermittelt die ausgehandelten call-ids + die pptp-server-ip und schaltet dann
1. die forward chain für den inbound uni-link mit der ersnifften call-id und dst-ip = pptp-server frei.
2. richtet dann eine weiterleitung für gre mit *der ermittelten* call-id zum pptp-server ein, sehr selektiv also...
unterm strich gibts für die niederungen des alltags eine frohe und eine net so lustige botschaft:
1. wenn das pptp/gre-alg sauber funkt, müssen wir bei pptp *serverseitig* nur den tcp/1723 zum server weiterleiten. gre wird von dem alg automagically erledigt.
2. wenn das pptp/gre-alg net sauber funkt oder die korrekte verarbeitungsreihenfolge durch irgendwelche specials, def. server z.b., gebrochen wird, und es dann am eingesetzten gerät auch noch keine möglichkeit gibt, gre explizit weiterzuleiten, diese situation liegt beim comtrend vor, dann hast du keine chance, pptp/gre zum laufen zu kriegen.
liegt eine derartig unangenehme situation vor, weicht man einfach auf l2tp (=udp/1701) ipsec+nat-t (udp/500 + udp/4500), l2tp/ipsec (ipsec auch mit nat-t, also wieder udp/500 + udp/4500) oder ovpn (default meist udp/1194, manchmal, mikrotik z.b., tcp/1194) aus.
>"...Dort wo man die DMZ setzten kann steht, dass vorher das NAT abgearbeitet wird und dann alles andere an die DMZ IP geht..."
ja gut, das is klar. sonst würde der default server ja auch net als "default server" bezeichnet werden.
zuerst werden dedizierte weiterleitungen abgearbeitet, und für jenen traffic, für den diese weiterleitungsregeln nicht zutreffen, gibts zum schluß eine default weiterleitung, die man der einfachheit halber eben "default server" (manchmal auch "exposed host") nennt.
ich schreib dir jetzt mal das ganze graffl in iptables-jargon auf, sodaß du verstehst, was ich meine:
- Code: Alles auswählen
# zuerst, die verarbeitung erfolgt von oben nach unten, irgendwelche dedizierte nats/"virtual servers", also z.b.:
# http
iptables -t nat -A PREROUTING -i ppp7 -p tcp --dport 80 -j DNAT --to-destination http.ser.ver.ip
# ssh
iptables -t nat -A PREROUTING -i ppp7 -p tcp --dport 22 -j DNAT --to-destination ssh.ser.ver.ip
# ipsec/ike
iptables -t nat -A PREROUTING -i ppp7 -p udp --dport 500 -j DNAT --to-destination ipsec.ser.ver.ip
# ipsec/nat-t
iptables -t nat -A PREROUTING -i ppp7 -p udp --dport 4500 -j DNAT --to-destination ipsec.ser.ver.ip
...usw.
# und zum schluß gibts für den rest, als last resort sozusagen, eine endültige weiterleitung
# zum default server (falls man das unbedingt haben will):
iptables -t nat -A PREROUTING -i ppp7 -j DNAT --to-destination def.ser.ver.ip
das ganze is also gleich wie beim routing. dort werden ja auch zuerst die host- und netzrouten (longest bit zählt bekanntlich) abgearbeitet und für dests, die durch keine host- oder netzroute abgedeckt sind, gibts zum schluß eine endgültige route: die default route.
die ähnlichkeit der bezeichnungen fällt dir auf?
>"...Was kann ich denn jetzt noch machen?..."
nicht viel, und alle optionen fallen eher so in die kategorie abführ- und brechmittel.
1. du verzichtest auf den default server und ähnliche konstruktionen......und leitest nur jene ports weiter, die du wirklich brauchst. ok,, doppel-nat, ich komm noch drauf zurück, hast du dabei, alles andre als appetitlich, aber den ramsch hast du auch mim def server drauf...
aus meiner sicht die einfachste lösung- und im fall des comtrend auch die mit der höchsten erfolgsaussicht.
2. du willst den def server *unpetinckt* haben, das voip aber in irgendeiner form aus dem regelwerk nehmen.dann gibts grundsätzlich mindestens 2 möglichkeiten:
i. overruling- dein ansatz mit:
>"...Könnte ich da vielleicht im NAT die Ports fürs Telefon weiterleiten, damit dieses trotz DMZ noch funktioniert?...ii. exception
ich kann dich "beruhigen", beide ansätze haben ihre nachteile:
ad i.- overruling:
- weitergeleitet wird in dem fall nur sip = udp/5060.
- da du bei den privatzugängen von tele2 keine statische pub-ip hast, kannst du fürs voip keine triviale (dummy-)weiterleitung einrichten und mußt in richtung 127.0.0.1 oder lan-ip comtrend gehen. bei der 127er is halt die frage, ob sie überhaupt als loopback konfiguriert ist, sichtbar is sie jedenfalls nicht, könnte aber durchaus sein, daß sie verdeckt eingerichtet und somit ansprechbar is. gut, dieser harakiri ghört dir...
- so, und wenn du den harakiri erledigt hast, dann bist du nur noch rtp konfrontiert. und das geht ganz einfach mit dem sip-alg. im webgui nach...
Advanced Setup > SIP ALG
...gehen und dort ein kakerl setzen.
- danach den def server setzen.
- schwäche dieses ansatzes:
abgesehen von potentiellen probs bei der weiterleitung selbst (127.0.0.1?), stellt sich die frage, ob das sip-alg bei einem self traffic sauber funkt, weil es ja normalerweise für transit traffic ausgelegt ist.
ad ii.- exception
- du setzt keinen def server, sondern spielst einen ähnlichen ansatz wie früher mit den vrtual servers.
- bei tcp ändert sich nix, alle 65k ports werden wie gehabt zum router weitergeleitet.
- bei udp nimmst du bei der weiterleitung den sip-port und die rtp-ports aus. ich nehm jetzt mal *beispielhaft* an, daß das comtrend für rtp den bereich udp/[10000-10100] verwendet. dann schaute das ganze so aus:
udp-weiterleitung1 = udp/[1-5059]
udp-weiterleitung2 = udp/[5061-9999]
udp-weiterleitung3 = udp/[10101-65535]
ingesamt hast du jetzt 3 weiterleitungen für 3 udp-portbereiche.
- der vorteil dieses ansatzes ist klar:
das voip wird nicht genattet, und du mußt nicht mim sip-alg rummurksen. hab ich schon erwähnt, daß nat shit is?
- es gibt aber auch einen zarten nachteil:
die rtp-bereiche sind nicht normiert- festgelegt is nur, daß sie über udp/1024 sein müssen- und variieren deshalb von gerät zu gerät. idr. reden wie so über 50-100 udp-ports.
beim comtrend sieht man die rtp-ports im webgui nicht, geschweige denn, daß man sie manuell vorgeben könnte (zumindest hab ich als root nix gefunden). du mußt sie also suchen oder, wenns blöd hergeht, erraten.
- die suche erfolgt übers sip debugging. du startest bei den udp-weiterleitungen mit der ausnahme udp/5060, gehst dann nach:
Voice > SIP Debg Setup > Global parameters
und setzt dort das log level "Debug".
Anwenden und sip-ua restarten oder comtrend rebooten.
wenn das comtrend wieder da is, führst du ein paar anrufe durch, die natürlich scheitern werden, weil du ja noch keine ausnahme für rtp gesetzt hast, und schaust dir dann die sip invites in den debug logs an, dort werden ja die rtp-sockets mitgeschickt.
dann ziehst du vom niedrigsten gefundenen port hausnummer 100 ab, zählst zum höchsten 100 dazu und setzt dieses intervall als ausnahme bei den weiterleitungen.
- es könnte aber auch passieren, daß du nicht mal mim debugging was siehst, oder es funkt net bei dir, weil du nur als "USER" unterwegs bist.
in dem fall mußt du den rtp-bereich mit einer klassischen intervallschachtelung eruieren.
ich geh davon aus, daß du weißt, was 'ne intervallschachtelung is. falls doch nein, und falls wirklich bedarf danach entstehen sollte, dann melde dich. ich mal dir einen grund- und aufriß davon...
3. die angekündigte reprise des nervigen themas doppel-/mehrfach-natich frage mich, ob du eine gestaffelte netzstruktur, die du dir mit doppel-nat teuer erkaufst, überhaupt brauchst.
- wenn nein:
dann verwende den nachgeschalteten router einfach als switch/ap, und erledige die paar weiterleitungen, die du wirklich brauchst, mim comtrend. damit hättest du single-nat.
- wenn doch ja:
dann deaktivier am nachgeschalteten router das masquerading, setz am am comtrend unter
Advanced Setup > Routing > Static Route
eine route fürs lan des nachgeschalteten routers, leite die ports für die dienste, die im lan des routers rennen, am comtrend direkt ins lan des routers weiter und schaukle die sicherheitsrichtlinien lan-comtrend <-> lan-router mit der firewall des routers.
damit hättest du wieder single-nat mit einer 2-stufigen firewall- sehr einfach und effizient.
du kennst den begriff "atlantik"?
das is die etwas größer geratene badewanne, die angeblich 2 kontinente trennt.
und um diese badewanne zu überqueren, gibts mindestens 2 möglichkeiten:
1. schwimmflügerl
2. hochseejacht
variante #1 lehn ich ab, weil die mindestens so bescheuert is wie doppel- oder mehrfach-nat.
lg
zid