Linux Kernel 2.4.x, 2.6.x, iptables

exim

Admin a.D.
Mitglied seit
27 Apr 2004
Beiträge
1,013
Punkte für Reaktionen
0
Punkte
0
Hallo eiq: Fragment aus meiner Konfig, das Skript ist universell gehalten, deswegen die diversen Variablen welche am Anfang des Skripts festgelegt bzw. automatisch gesetzt werden ...
Code:
~~~snip~~~
# VoIP
echo "             - VoIP an $PORTFWVOIP"
# Port 5004-5007 UDP (Grandstream RTP)
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -p udp --dport 5004:5007 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A PREROUTING -t nat -p udp -d $EXTIP --dport 5004:5007 -j DNAT --to $PORTFWVOIP
# Ports 5060 u. 5061 UDP (SIP, Port 5061 nur SPA-2000)
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -p udp --dport 5060:5061 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A PREROUTING -t nat -p udp -d $EXTIP --dport 5060:5061 -j DNAT --to $PORTFWVOIP
# Ports 16384-16482 UDP (Sipura RTP)
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -p udp --dport 16384:16482 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A PREROUTING -t nat -p udp -d $EXTIP --dport 16384:16482 -j DNAT --to $PORTFWVOIP
~~~snip~~~


Und Masquerading dürfte ja klar sein:
Code:
~~~snip~~~
# Catch all rule, all other forwarding is denied and logged.
#
$IPTABLES -A FORWARD -j drop-and-log-it

echo "     - NAT: Aktiviere SNAT (MASQUERADE)-Funktionalität auf $EXTIF"
#
#more liberal form
#$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
#
#stricter form
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j SNAT --to $EXTIP
~~~snip~~~


Gruß,
exim
 
Die Ports stehen in den Grandstream Handbüchern

Port 5060 für die Kommunikation mit dem SIP Server
Ports 5004-5007 für RTP / RTCP
Port 10000 für den STUN-Server

Diese Ports sind alles UDP Ports

Zusätzlich wird für NTP noch der Port 123 (TCP&UDP) gebraucht
Und für die DNS-Auflösung der Port 53.

Aber die Ports 53 und 123 sind normalerweise in jedem Netzwerk ohnehin freigegeben, weil ansonsten eine Verbindung ins Internet (vor allem ohne Port 53) ziemlich unwahrscheinlich wäre :D
 
Es geht um das Portforwarding von außen (I-Net) nach innen zum Adapter! Dass von innen nach aussen alles offen ist davon gehe ich mal aus. Und der SPA-2000 bietet zwei Leitungen i.S.v. zwei SIP-User-Accounts.

Ports 5004 u. 5005 UDP: RT(c)P 1. Gespräch (Grandstream)
Ports 5006 u. 5007 UDP: RT(c)P 2. Gespräch (Grandstream)
Die 5005 und 5007 werden bei Bedarf automatisch benutzt. Was das "Bedarfs-Entscheidungskriterum" ist - keine Ahnung :)
Port 5060 UDP: SIP-Protokoll 1. Account SPA-2000/Grandstream
Port 5061 UDP: SIP-Protokoll 2. Account SPA-2000
Ports 16384 bis 16482 UDP. SPA-2000 Standard-RTP-Ports
Die Ports stehen in den Handbüchern und auch im Webinterface des SPA. Die Default-RTP-Ports sind änderbar.

Welche Ports nun genau genutzt werden ist vom Endgerät bzw. der End-Software abhängig, SIPPS nutzt z.B. andere Bereiche für RTP und auch einen eigenen SIP-Port (5062) für den eingebauten Anrufbeantworter.

Das Posting sollte auch eher das Portforwarding mit Kernel 2.4.x/2.6.x allgemein verdeutlichen.

Gruß,
Exim
 
Moin exim (und der Rest des Forums)!

Ich mal wieder...
Nachdem meine iptables nun quasi genauso aussieht, wie Deine (bis aufs Masquerading, da hab ich die 'more liberal form', wie sie in Deinem Posting zu sehen ist), und auch einiges mehr funktioniert als vorher. Zwischendurch hab ich noch einen Asterisk installiert, bei dessen Konfiguration ich dann gemerkt hab, daß mein Telefon ein paar Parameter aus seiner Config durcheinander bringt, sodaß es so, wie es war, gar nicht mit sipgate gehen konnte...

Wie dem auch sei, ich kann jetzt angerufen werden (endlich!), wenn mir auch gesagt wurde, daß ich mich nicht so toll anhöre (ich höre den Gesprächspartner hingegen wie mit einem normalen Telefon), wenn ich jedoch von meinem Cisco 7940 jemanden anrufe, höre ich kein Klingelzeichen und auch keine Stimme des Gegenübers, der mich jedoch hören kann.

Ich habe zwischendurch die Firewall mal komplett ausgeschaltet (alles auf ACCEPT) und selbst da ging es nicht, auch wenn ich da noch eine leicht andere Konfiguration am Telefon hatte, aber daran hätte es eigentlich nicht liegen dürfen.

Nun frage ich mich: woran kann das liegen? Der Provider ist QSC, der dürfte nicht stören, bei anderen gehts ja auch.
Die iptables sind genau wie bei Dir, da funzt es, und ich finde keine Ports mehr, die mein Telefon benutzen will aber nicht kann.
Die Config des Telefons habe ich einem anderen Benutzer eines 7940 geschickt, bei ihm gehts Problemlos, aber hinter einem dieser komischen Kästchen-Router.

Mir fällt dazu nichts mehr ein, trotzdem schiebe ich es am ehesten noch auf die Firewall, wobei ich natürlich durchaus komplett falsch liegen kann.
Meine Mobil-Rechnung steigt ins unermessliche, und wird das wohl auch weiterhin tun, wenn ich keine Lösung für mein SIP-Problem finde.

Wer weiß Rat? :cry:

Gruß,

eiq
 
Lässt Du Deine iptables-Firewall mitloggen, welche Pakete sie verwirft? Fall nicht dann aktiviere das mal. Ist bei iptables etwas blöde im Gegensatz zum ipchains des 2.2.x-Kernels, aber dafür weitreichender konfigurierbar. Man erstellt eine User-Chain, welche die an sie übergebenen Pakete loggt und danach verwirft:

Code:
[blabla...]

# Flush the user chain.. if it exists
if [ -n "`$IPTABLES -L | $GREP drop-and-log-it`" ]; then
   $IPTABLES -F drop-and-log-it
fi
#
# Delete all User-specified chains
$IPTABLES -X
#

[blabla...]

echo "  Erstelle eine DROP Regelkette.."
$IPTABLES -N drop-and-log-it
$IPTABLES -A drop-and-log-it -j LOG --log-level info
$IPTABLES -A drop-and-log-it -j DROP

[blabla...]

(Beispiele Benutzung)
# remote interface, claiming to be local machines, IP spoofing, get lost
#
$IPTABLES -A INPUT -i $EXTIF -s $INTNET -d $UNIVERSE -j drop-and-log-it

...

# Catch all rule, all other incoming is denied and logged.
#
$IPTABLES -A INPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it

Am besten alles was per iptables gesperrt wird an die drop-and-log-it schicken. tcpdump oder 'was Komfortableres wie etherreal oder so ähnlich leisten auch gute Dienste.

Gruß,
exim
 
So, habs mal ausprobiert, und es wurden ein paar Pakete zu einem britischen Sipgate-Server geblockt (217.10.66.69).
Allerdings hat es leider nichts gebracht, da auch dann, wenn die Pakete durchkommen, kein Klingeln oder der Gesprächspartner zu hören ist.

Nun werden eigentlich keinerlei Pakete mehr geblockt, und trotzdem höre ich, wenn ich jemanden anrufe, nichts...
Sehr seltsam... vielleicht sollte ich das Telefon mal irgendwo ohne Firewall bzw. mit einer durchlässigeren Firewall testen, obs da geht. Nur bisher fällt mir noch nichts ein, wo ich das machen könnte...

Gruß & vielen Dank!

eiq
 
$IPTABLES -A PREROUTING -t nat -p udp -d $EXTIP --dport 5060:5061 -j DNAT --to $PORTFWVOIP

Das schreibt man eigentlich anders:

$IPTABLES -A PREROUTING -t nat -i ppp0 -p udp --dport 5060:5061 -j DNAT --to $PORTFWVOIP

Mir ist gerade folgendes passiert:
$IPTABLES -A PREROUTING -t nat -p udp --dport 5060:5061 -j DNAT --to $PORTFWVOIP

Das gibt einen echt geilen Backloop, naja, was soll ich sagen, Asterisk ging zu 250 % nicht mehr :)
 
Bei mir hats geholfen das maquerading richtig einzustellen.
Ich hab ne forward regel direckt auf das Telefon, den der Router weiß ja nichts damit anzufangen.
 
Hallo, ich hol hab da noch ne kleine Frage zu deinem Skript.

die variable $extip wie generierst du die?
 
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.