mldonkey Ports freischalten

SpecialAgent

BSD Trainee
Hey comunity,

hab ein kleines Problem mit der pf (so glaube ich),

und zwar möchte ich den mldonkey auf meinem OpenBSD 3.6 Router laufen lassen, sprich die pf muss die Ports 4662 TCP und 4666 UDP durchlassen. Weiterleiten ist ja eigentlich nicht notwendig!
Oder doch? vom tun0(tdsl) zu rl0(externeNK) oder ne3(interneNK) oder sogar zum localhost?? Hmm... keine Ahnung... auf jeden Fall hab ich mir folgendes pf Skript ausgedacht!
pf.conf
(weiter unten ist der mldonkey teil)

(Die ports in den Kommentaren sind meine alten... hab jetzt die std. ports benutzt.)

Meiner Meinung nach müsste doch so alles funktionieren?!

Oder nicht?

Wäre um gute Vorschläge sehr dankbar!

Gruss SA
 
Ja, ppp hat sich wieder neu eingewählt... ich poste die mal... :

Code:
### VARIABLEN ###

    Ext = "tun0" 	           # Device an dem das Internet angeschlossen ist 
    Int = "ne3"		           # Device an dem das interne Netz haengt
    IntNet = "192.168.0.0/24"      # Adressraum des internen Netzes
    RouterIP = "192.168.0.1"       # IP Adresse des Routers
    Loop = "lo0"                   # Loopback Device

    # Adressen die auf dem externen Device nicht geroutet werden
    # (Adressbereich des internen Netzes muss man wegen der Weiterleitungen zulassen)
    table <NoRoute> { 127.0.0.1/8, 172.16.0.0/12, 192.168.0.0/16, !$IntNet, 10.0.0.0/8, 255.255.255.255/32 }

    # Ports die geoeffnet werden sollen
    InServicesTCP = "{ ssh, ftp, auth }"


    ### OPTIONS ###

    # Macht Statistiken fuer die DSL-Verbindung (pfctl -s info)
    set loginterface $Ext

    # Beendet inaktive Verbindungen schneller - geringerer Speicherverbrauch.
    set optimization aggressive

    # Fragmentierte Pakete saeubern
    scrub on $Ext all fragment reassemble random-id

    # Queueing 
    # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    # !! Achtung: Der unten stehende Wert von 100Kb (Kilobit) macht natuerlich
    # !! nur fuer den Standard DSL Anschluss mit 128kb upstream Sinn. Hat man
    # !! eine Verbindung mit groesserer Bandbreite beim upload, dann muss 
    # !! dieser Wert entsprechend angepasst werden. 
    # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    altq on $Ext priq bandwidth 100Kb queue { q_pri, q_def }
    queue q_pri priority 7
    queue q_def priority 1 priq(default)


    ### NAT & FORWARD ###

    # NAT aktivieren (unter Linux als Masquerading bekannt)
    nat on $Ext from $IntNet to any -> $Ext static-port

    # Active FTP - Umleitung zu unserem ftp-proxy
    rdr on $Int proto tcp from !$RouterIP to !$IntNet port 21 -> 127.0.0.1 port 8021

    rdr-anchor redirect


    ### FILTER ###

    # Zum Debuggen....
    # pass quick all             # Alles durchlassen

    # Generelle Block Regel
    block on $Ext

    # Freiwillig machen wir keinen mucks ;)
    block return log on $Ext

    # Wir wollen kein IPv6.0
    block quick inet6

    # Loopback Device darf alles
    pass quick on $Loop

    # Erschwert scannen mit nmap und co.
    block in log quick on $Ext inet proto tcp from any to any flags FUP/FUP
    block in log quick on $Ext inet proto tcp from any to any flags SF/SFRA
    block in log quick on $Ext inet proto tcp from any to any flags /SFRA
    block in log quick on $Ext os NMAP

    # IP Spoofing verhindern
    block in log quick on $Ext inet from <NoRoute> to any
    block in log quick on $Ext inet from any to <NoRoute>

    # Active FTP erlauben
    pass in quick on $Ext inet proto tcp from any to any port > 49151 user proxy flags S/SAFR keep state

    # Ping akzeptieren (ablehnen ist uebrigends wenig sinnvoll)
    pass in quick on $Ext inet proto icmp all icmp-type 8 code 0 keep state

    # Ports nach aussen oeffnen
    pass in quick on $Ext inet proto tcp from any to any port $InServicesTCP flags S/SAFR keep state label ServicesTCP
   
    # Edonkey Ports:
    # TCP: 3756    UDP: 3760
    # Overnet Ports:
    # TCP: 3898    UDP: 3902
 
    mldonkeyTCPports="{ 3756, 6881, 6882, 4594 }"
    mldonkeyUDPports="{ 3760, 4672,       4598 }"

    pass in quick on $Ext inet proto tcp from any to any port $mldonkeyTCPports flags S/SAFR keep state label mldonkeyTCP
    pass in quick on $Ext inet proto udp from any to any port $mldonkeyUDPports keep state label mldonkeyUDP
 
#    anchor passin

    # Raus darf (fast) alles
    pass out quick on $Ext keep state queue (q_def,q_pri)
 
Ich habe die Regeln bezüglich Port Forwarding mit Hilfe von Anchors festgelegt, die ich dynamisch laden bzw. entladen kann.

Dennoch habe ich das gleiche Problem wie Du - das Portforwarding funktioniert bei mir seit OpenBSD 3.6 nicht, obwohl ich an meinen PF Einstellungen nichts verändert habe.

Bei OpenBSD 3.5 funktionierte alles problemlos.
Der Bug sitzt bestimmt irgendwo im Detail, gefunden habe ich ihn bisher aber nicht..
 
Hey, also ich habs jetzt raus...
obwohl sich viele EDonkey Server mir hin und wieder ne LOWID geben, habe ich das Problem mit der pf - Konfiguration oben aber hinbekommen. Anscheinend ist es doch richtig...
Auf jeden fall muss man, wenn man mldonkey unter OpenBSD startet ulimit -n 1024 setzen! Sonst kannst es vergessen!

Also für die Nachwelt:

obiges Skript, was ursprünglich von hier ist übernehmen, wie oben anpassen und dann mldonkey so starten:

(am besten über einen extra Benutzer ohne wheel rechte)

Code:
ulimit -n 1024
./mlnet -daemon

Danach brauch der mldonkey sehr lange bevor in Fahrt bekommen (ca. 2h)!

am besten hier mal schauen:
Deutsche mldonkey Comunity
und hier die sources ziehen:
http://savannah.nongnu.org/download/mldonkey/
und hier die Patches:
http://ftp.berlios.de/pub/mldonkey/spiralvoice/

Gruss SA
 
Hm,
ich beziehe das bei mir eher auf Port Forwarding im Allgemeinen. Das funktioniert konsequent nicht richtig. :-) Dabei spielt es keine Rolle, um welches Protokoll oder welchen Client es sich handelt.

Vielleicht spiele ich auch einfach wieder OpenBSD 3.5 samt Patches auf, was mich erneut daran erinnert, ein funktionierendes System nicht einfach so aufzugeben..
 
Zurück
Oben