Forum: PC-Programmierung Windows - SMB Share, anderer Port


von Daniel A. (daniel-a)


Lesenswert?

Hallo

Ich hatte die Idee, den SMB port zu forwarden. Und zwar mache ich das 
so. Auf dem Client ist https://github.com/jimparis/unwebsockify drauf. 
Das lass ich so laufen, das es TCP traffic von port 8445 nimmt, und an 
meinen Server per TLS+Websocket mit HTTP Basic Auth sendet. Der sendet 
es weiter an meinen NAS server, und dort drauf läuft python3 websockify. 
Das wiederum verbindet sich auf port 445, den SMB Port.

Unter Linux alles kein Problem. Ich gebe im file manager 
smb://127.0.0.1:8445/freigabe/ ein, und komme auf das Share. Das läuft 
erstaunlich gut, viel besser als das webdav zeugs das ich vorher 
genommen hatte.

Nun dachte ich, ok, mach ich das auch auf Windows. Also unwebsockify mit 
pyinstaller in eine standalone exe umgewandelt, und genau wie unter 
linux aufgerufen. Soweit so gut, läuft, und leitet die Daten wie 
gewünscht weiter. Nur, darauf zuzugreifen scheint unmöglich zu sein? 
Andere hatten das Problem wohl auch schon, beim forwarden von SMB über 
SSH.

\\IP:PORT\freigabe\ geht schonmal nicht, verbindet sich nicht zum port. 
\\IP@PORT\freigabe\ verbindet sich zum port, aber versucht WebDav statt 
SMB!?!
Einfach port 445 statt 8445 nehmen geht nicht, den hat sich Windows / 
der lanmanager service, schon geschnappt. Auch auf z.B. 127.0.0.2:445 
kann ich es nicht binden lassen. Forwarding per netsh portproxy ging 
auch nicht, wird zwar in netstat als listening angezeigt, kommt aber 
auch nie was an, geht wohl weiterhin an den lanmanager. Im Internet 
findet man dann noch 2 hacks. Eine Abhänigkeit zwischen dem lanmanager 
und dem port forwarding service herstellen war der erste, brachte keine 
Änderung. Der andere war das Windows Loopback Testinterface zu 
installieren, aber das Ding droppt einfach nur allen traffic, ist 
komplett nutzlos dafür.

Und da bin ich jetzt mit meinem Latein am Ende. Ist das wirklich einfach 
unmöglich? Kann man bei Windows wirklich nicht einmal den SMB Port 
angeben?

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Warum nicht direkt per SFTP?

von DPA (Gast)


Lesenswert?

Weil bei Windows bei Netzlaufwerken SMB einfach am besten funktioniert, 
in punkto Geschwindigkeit und Integration.

von Le X. (lex_91)


Lesenswert?

DPA schrieb:
> Weil bei Windows bei Netzlaufwerken SMB einfach am besten
> funktioniert, in punkto Geschwindigkeit und Integration.

Wenn du die Freigabe zwingend als Netzlaufwerk einhängen möchtest ist 
direktes SMB wohl wirklich das Mittel der Wahl.

Meine Lösung um von unterwegs auf den Share zu kommen ist eine 
zwischengeschaltete Nextcloud-Instanz. Die hat den Share als "externe 
Quelle" eingebunden.
Bringt halt noch so schöne Sachen wie Kalender, Kontakte usw. mit.

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

DPA schrieb:
> Weil bei Windows bei Netzlaufwerken SMB einfach am besten funktioniert,
> in punkto Geschwindigkeit und Integration.

Naja, ich bezweifle das SMB bei der Geschwindigkeit, im vom TE 
beschriebenen Szenario, wirklich am besten funktioniert und einfach ist 
es dabei auch nicht mehr.
Umgekehrt braucht man für SFTP nur einen SFTP Share Mapper (sshfs, 
winsfp, sftp-drive oder irgend einen Anderen).

von (prx) A. K. (prx)


Lesenswert?

Tim T. schrieb:
> Naja, ich bezweifle das SMB bei der Geschwindigkeit, im vom TE
> beschriebenen Szenario, wirklich am besten funktioniert und einfach ist
> es dabei auch nicht mehr.

Microsoft verwendete dafür einstmals den Begriff CIFS = Common Internet 
File System, um zu suggerieren, es sei als weltweit universelles 
Filesystem sinnvoll einsetzbar. Als Reaktion auf Suns WebNFS mit 
ähnlichen Hintergedanken. In dieser Rolle angekommen sind beide Ansätze 
nicht, m.E. zu recht.

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Ich habe selber in der Vergangenheit umfangreiche Tests von Durchsatz 
und Latenz von NFS (3/4), SMB (1/2/3) und SFTP gemacht. Im LAN war da 
die Rangfolge, sowohl unter Linux als auch Windows immer SMB > NFS > 
SFTP. SFTP krankte dabei vorallem an der erhöhten CPU-Last. Sobald man 
jedoch die Verbindung von NFS und SMB durch einen OpenSSH-Tunnel geführt 
hat, der zudem auch kein Gigabit mehr hatte, war der Durchsatz durch 
SFTP etwas höher als bei SMB und bei NFS nochmals etwas unter SMB.

Danach war für mich klar, im LAN benutze ich SMB (v3) sowohl unter 
Windows als auch unter Linux und für Remote Sachen am besten SFTP. Wobei 
ich, wenn ich eh einen Tunnel habe, aus Faulheit manchmal auch da 
einfach SMB benutze.

von (prx) A. K. (prx)


Lesenswert?

Ich fand es unmöglich, mit SMB 1.0 das Lan auch nur ansatzweise 
auszulasten. Erst mit 2.0 war das der Fall, aber schneller als NFS ist 
es auch nicht. Auch mit NFS 2 war das kein Problem. Das legte SMB 1.0 
bzw CIFS als Basis für Internet-Traffic nicht eben nahe.

Verschlüsselung ist im Internet ohnehin Pflicht. Ob als Tunnel oder 
direkt.

: Bearbeitet durch User
von DPA (Gast)


Lesenswert?

Da eigentlich immer alles TLS nutzt, ist das hoch optimiert, von da her 
will ich meinen momentanen Ansatz mit dem Websocket Tunnel und SMB schon 
beibehalten.

Ich brauche ja nur irgend einen Weg, damit Verbindungen an port 445 bei 
irgend einer IP bei meinem Programm ankommen. Oder halt irgend einen 
weg, windows bei zu bringen, für SMB einen anderen Port zu nehmen.

Das muss doch irgendwie gehen. Es kann doch nicht sein, dass das ganze 
an einer simplen Portnummer scheitert...

von c-hater (Gast)


Lesenswert?

(prx) A. K. schrieb:

> Microsoft verwendete dafür einstmals den Begriff CIFS = Common Internet
> File System, um zu suggerieren, es sei als weltweit universelles
> Filesystem sinnvoll einsetzbar. Als Reaktion auf Suns WebNFS mit
> ähnlichen Hintergedanken. In dieser Rolle angekommen sind beide Ansätze
> nicht, m.E. zu recht.

So kann man das wohl zutreffend zusammenfassen. Beide kommen mit packet 
drops ähnlich schlecht klar, beide schleppen Altlasten mit sich, die sie 
entweder unsicher machen oder durch Ausschluss die Kompatibilität zu 
bestehenden Installationen zerstören.

Es ist eben extrem schwierig bis unmöglich, etwas gleichzeitig 
performant, störsicher und sicher über ein Netz zu übertragen, welches 
nicht seinerseits darauf ausgelegt ist, gleichzeitig geringe Latenzen 
und hohe Übertragungssicherheit zu garantieren.

Aber natürlich: Jeglicher Ansatz auf höherer Ebene (z.B. der heute 
übliche völlige Schwachsinn, den Kram über irgendwelche 
"Web-Technologien" abzuhandeln) ist natürlich genauso zum Scheitern 
verurteilt. Der muss entweder wichtige Features der Net-FS wegwerfen 
oder wird noch langsamer und unzuverlässiger sein. Das liegt in der 
Natur der Sache.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.