.titleBar { margin-bottom: 5px!important; }

Linux Kernel 2.4.x, 2.6.x, iptables

Dieses Thema im Forum "Linux Software-Router" wurde erstellt von exim, 28 Mai 2004.

  1. exim

    exim Admin a.D.

    Registriert seit:
    27 Apr. 2004
    Beiträge:
    1,013
    Zustimmungen:
    0
    Punkte für Erfolge:
    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
     
  2. prof.inti

    prof.inti Neuer User

    Registriert seit:
    2 März 2004
    Beiträge:
    74
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    wie kommst du auf diese ports und ranges ?
     
  3. Anonymous

    Anonymous Mitglied

    Registriert seit:
    20 Feb. 2004
    Beiträge:
    701
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  4. exim

    exim Admin a.D.

    Registriert seit:
    27 Apr. 2004
    Beiträge:
    1,013
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  5. eiq

    eiq Neuer User

    Registriert seit:
    27 März 2004
    Beiträge:
    30
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  6. exim

    exim Admin a.D.

    Registriert seit:
    27 Apr. 2004
    Beiträge:
    1,013
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  7. eiq

    eiq Neuer User

    Registriert seit:
    27 März 2004
    Beiträge:
    30
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  8. Blackvel

    Blackvel Mitglied

    Registriert seit:
    4 Mai 2004
    Beiträge:
    624
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    selbständig als IT-Consultant (VoIP, Asterisk, J2E
    Ort:
    Nürnberg, Einsatzorte Schwerpunkt D6-D9 (MCH, STG,
    $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 :)
     
  9. Ryven

    Ryven Neuer User

    Registriert seit:
    20 Okt. 2004
    Beiträge:
    7
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  10. Daimonion

    Daimonion Neuer User

    Registriert seit:
    27 Jan. 2006
    Beiträge:
    28
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Hallo, ich hol hab da noch ne kleine Frage zu deinem Skript.

    die variable $extip wie generierst du die?