Filetransfers schlagen fehl

    Filetransfers schlagen fehl

    Hallo,

    vielleicht kann mir ja jemand von euch weiterhelfen.

    Ich habe hinter einem Router einen Server stehen und leite den TCP Port 30033 an den Ziel-Rechner/Server, worauf der TeamSpeak 3 Server läuft weiter. Wenn ich dann versuche, eine Datei hoch zu laden, erhalte ich folgende Fehlermeldung:
    ​<16:35:56> Transfer "001_Pizza_Flyer.jpg" berichtet: (could not open file transfer connection)


    Laut meiner Firewall ist der Port jedoch weitergeleitet:
    $ iptables -L -n -v -t nat
    Chain PREROUTING (policy ACCEPT 426 packets, 28576 bytes)
    pkts bytes target prot opt in out source destination
    0 0 DNAT tcp -- * * 0.0.0.0/0 1.2.3.4 tcp dpt:2008 /* TeamSpeak Accounting */ to:192.168.178.240
    0 0 DNAT tcp -- * * 0.0.0.0/0 192.168.178.230 tcp dpt:10011 /* TeamSpeak ServerQuery */ to:192.168.178.240
    2 88 DNAT tcp -- * * 0.0.0.0/0 1.2.3.4 tcp dpt:30033 /* TeamSpeak Filetransfers */ to:192.168.178.240
    47 2444 DNAT tcp -- * * 0.0.0.0/0 1.2.3.4 tcp dpt:41144 /* TeamSpeak TSDNS */ to:192.168.178.240
    16 992 DNAT udp -- * * 0.0.0.0/0 1.2.3.4 udp dpts:9987:9996 /* TeamSpeak Voiceports */ to:192.168.178.240​


    Und wenn ich das Remote auch überprüfe, ob der Port offen ist oder nicht, erhalte ich ebenfalls ein OK als Meldung:
    ​$ nmap 1.2.3.4 -p 30033

    Starting Nmap 6.00 ( Nmap - Free Security Scanner For Network Exploration & Security Audits. ) at 2014-06-19 16:34 CEST
    Nmap scan report for example.de (1.2.3.4)
    Host is up (0.00068s latency).
    PORT STATE SERVICE
    30033/tcp open unknown

    Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds


    In der Log-Datei des virtuellen Servers steht folgendes drin:
    ​2014-06-19 14:35:11.650254|INFO |VirtualServer | 2| file upload to (id:30), '/001_Pizza_Flyer.jpg' by client 'Sebbo'(id:8)
    2014-06-19 14:35:55.940286|INFO |VirtualServer | 2| file deleted from (id:30), 'files/virtualserver_2/channel_30//001_Pizza_Flyer.jpg' by client 'Sebbo'(id:8)
    2014-06-19 14:36:11.957084|WARNING |FileTransfer | 2| Failed to remove files/virtualserver_2/channel_30/001_Pizza_Flyer.jpg


    Die Datei wird also angelegt, ist aber leer - Dateigröße 0 Bytes. So... Warum funktioniert der Transfer jetzt nicht? Die Rechte für den Upload sind gesetzt, also liegt es daran nicht.

    Ich nutze für den TeamSpeak Server übrigens eine INI-Datei:
    ​machine_id=1
    default_voice_port=9987
    voice_ip=192.168.178.240
    licensepath=
    filetransfer_port=30033
    filetransfer_ip=192.168.178.240
    query_port=10011
    query_ip=192.168.178.240
    query_ip_whitelist=query_ip_whitelist.txt
    query_ip_blacklist=query_ip_blacklist.txt
    dbplugin=ts3db_mysql
    dbpluginparameter=ts3db_mysql.ini
    dbsqlpath=sql/
    dbsqlcreatepath=create_mysql/
    dblogkeepdays=90
    logpath=logs
    logquerycommands=0
    dbclientkeepdays=30


    Ich dachte erst, es kann daran liegen, dass die IPs in der INI-Datei nicht die öffentlichen, sondern die privaten sind. Einerseits dachte ich mir jedoch auch, dass man dort die IP-Adresse angeben muss, worauf der TS Server lauscht und der lauscht ja auf der lokalen Netzwerkschnittstelle, also auf der privaten IP.

    Ich hoffe, mir kann jemand weiterhelfen.
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    Der Port wird nur dort verwendet, aber selbst mit einem anderen Port schlägt es fehl...

    Und ja, der Port ist freigeschaltet - er wird auch als "offen" angezeigt: Filetransfers schlagen fehl

    Bodyspray schrieb:

    Schau mal ob der Raum als Ordner überhaupt angelegt worden ist.

    Ah, okay. Ja, das existiert und wenn ich über den Client ein Verzeichnis erstelle, wird das auch angelegt. Lediglich der Dateitransfer funktioniert nicht.

    Quellcode

    1. $ find files/ -name test
    2. files/virtualserver_2/channel_30/test
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    Nein, der Upload steht auf -1, also auf unbegrenzt.

    Ah, okay... Wir kommen dem Ziel näher. Es liegt an einer falschen Konfiguration der Firewall/des Routers bzw. der INI-Datei des TeamSpeak 3 Servers, denn mein Client meldet mir eine sehr hilfreiche Meldung:

    Quellcode

    1. 19.06.2014 21:34 FileTransfer Error Failed to open filetransfer tcp connection to 192.168.178.240:30033
    2. 19.06.2014 21:35 ClientUI Error Error getting transfer sender state


    Mein Client wartet also auf eine Antwort von der privaten IP-Adresse. Er sollte jedoch auf eine Antwort von der öffentlichen warten, darum timet er irgendwann aus und der Filetransfer schlägt somit fehl. Jetzt ist die Frage: Wie sag ich dem TeamSpeak Server per INI-File, dass er dem Client die öffentliche mitteilen soll? Wenn ich die öffentliche IP eintrage, bringt der Server die Fehlermeldung, dass er die IP nicht binden kann - ist auch logisch, da sie nicht auf seiner Netzwerkkarte liegt. Wenn ich einfach garkeine IP angebe, startet der Server erst garnicht, weil er dann sagt "converting bind() IP failed".
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    Weder noch.

    Der Server steht im Rechenzentrum, wobei der folgende Aufbau gilt:

    WAN -> Router & Firewall -> Server mit TeamSpeak Server

    Die Firewall maskiert alle privaten IP Adressen nach außen - nach innen verändert sie jedoch nichts. Der Router selbst leitet per NAT den TCP Port 30033 an den Server weiter.

    Die Firewall-Regel für den Filetransfer sieht wie folgt aus:

    Quellcode

    1. ​iptables -t nat -A PREROUTING -d 194.10.20.30 -p tcp --dport 30033 -j DNAT --to-destination 192.168.178.240 -m comment --comment "TeamSpeak Filetransfers"
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    Ja, die Regeln meinte ich ja mit maskieren:

    Quellcode

    1. ​iptables -t nat -A POSTROUTING -o ${RTR_FW_EXT_IFACE} -j MASQUERADE


    Nein, die Maschine aka der Server, worauf der TS Server läuft, hat eine eigene Netzwerk-Schnittstelle, welche direkt mit dem Router verbunden ist.
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu

    Sebbo schrieb:

    Nein, der Upload steht auf -1, also auf unbegrenzt.

    Ah, okay... Wir kommen dem Ziel näher. Es liegt an einer falschen Konfiguration der Firewall/des Routers bzw. der INI-Datei des TeamSpeak 3 Servers, denn mein Client meldet mir eine sehr hilfreiche Meldung:

    Quellcode

    1. 19.06.2014 21:34 FileTransfer Error Failed to open filetransfer tcp connection to 192.168.178.240:30033
    2. 19.06.2014 21:35 ClientUI Error Error getting transfer sender state


    Mein Client wartet also auf eine Antwort von der privaten IP-Adresse. Er sollte jedoch auf eine Antwort von der öffentlichen warten, darum timet er irgendwann aus und der Filetransfer schlägt somit fehl. Jetzt ist die Frage: Wie sag ich dem TeamSpeak Server per INI-File, dass er dem Client die öffentliche mitteilen soll? Wenn ich die öffentliche IP eintrage, bringt der Server die Fehlermeldung, dass er die IP nicht binden kann - ist auch logisch, da sie nicht auf seiner Netzwerkkarte liegt. Wenn ich einfach garkeine IP angebe, startet der Server erst garnicht, weil er dann sagt "converting bind() IP failed".


    evtl. hilft dir Netcat weiter...?

    netcat › Wiki › ubuntuusers.de
    Günstige Domains!

    8o Registriere dich hier und erhalte 20 GB Cloud-Speicher gratis für immer und für jeden weiteren Geworben erhälst du satte 5 GB. :thumbsup:
    Der Port ist offen, wie ich bereits im ersten Post erwähnt hatte. Sonst hilft mit netcat auch nicht weiter.

    Es liegt aber glaub ich an der Firewall. Weis jemand, wie der TeamSpeak Client die FTP Verbindung aufbaut? Also aktiv oder passiv?

    Bei mir funktioniert nämlich aktuell nur eines von beiden.
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu