google / samba-documents-provider

Access network file shares directly from the Android Downloads/Files app
GNU General Public License v3.0
638 stars 125 forks source link

Access file shares via VPN #46

Open TheBestPessimist opened 6 years ago

TheBestPessimist commented 6 years ago

Hello, Need a little help on this one: I have an openvpn connection to my router (asus rt ac87u), which has connected a hdd via usb. In solid explorer i can see the smb share, navigate, edit it, etc. with this app i cannot mount it no matter what. Tried both smb://192.168.87.1/hdd and \\192.168.87.1\hdd and user&password. nothing works.

Is there anything i can to help you find/fix this issue?

Thanks.

aldasa commented 6 years ago

Your router is running an old version of samba. You need to change the protocol to SMBv1.

TheBestPessimist commented 6 years ago

SMB v1 should not be used anymore. Just like WEP, or CVS. (https://blogs.technet.microsoft.com/filecab/2016/09/16/stop-using-smb1/) I am using smb v3.

aldasa commented 6 years ago

Is your router running custom firmware?

My Asus RT-AC51U, is running the latest official firmware and runs samba 3.0.37 Samba 3.6+ Is the first branch to include SMB2 support.

TheBestPessimist commented 6 years ago

Using asuswrt.

Here: https://asuswrt.lostrealm.ca/features, you can find this: Updated Samba version (3.6), with SMB2.0 support.

So it seems that i was wrong, and i am using v2, not v3.

aldasa commented 6 years ago

Maybe this won't help you, but when I VPN in, I get an IP in the 10.x.x.x range. The asus samba server is configured to accept connections in the 192.168.x.x range only, and will reject the connection. Again this is for the stock firmware.

ubergeek77 commented 6 years ago

I don't think this issue has anything to do with SMB version or IP address conflicts. I'm trying to do the same thing - use Samba Documents Provider to mount a SMB share through a VPN connection. It only works sometimes, and it doesn't appear to be very consistent. When it fails, it pops up with the mount failure message immediately after pressing the mount button, so it doesn't appear as though a connection is even being attempted. Definitely some weirdness here.

I was only able to get it to mount through a VPN twice out of the \~10 attempts, clearing the app data of this app each time to unmount the share. For whatever reason, this app doesn't like VPN connections. Even when I am able to mount it, disconnecting then reconnecting to the VPN causes the mount to fail permanently, and visiting the share via the system default file manager (accessible through "Storage" in settings) will simply show "No items," followed by "Can't load the content at the moment." Any app that is trying to use the mounted share as storage will crash when this happens, for example Titanium Backup which for some asinine reason does not have native SMB support after years of paid development.

I'm disappointed, because I wanted a way to use a single share at a single mount point, regardless of whether or not I'm on my home Wi-Fi connection, or my VPN. I have my own host redirection that will point to the appropriate IP address for clients on Wi-Fi and the VPN. For instance, samba.share will point to 192.168.1.100 for clients on Wi-Fi, and 172.17.0.21 for clients connected through the VPN, automatically allowing clients to access the share without needing to remember to change the IP.

That's not necessarily related to this issue, as the Samba Documents Provider SMB mount will fail permanently after a single VPN disconnect-reconnect (assuming you could even get it mounted in the first place), even if you manually specify the IP address of the share!

I'd love to fix this myself, but I don't even know what's going on here. Does the app establish a session that it only considers "valid" until the first disconnect? Does it apply some complicated hash to a connection? Is it an issue dealing with latency? No idea.

But I would like a solution (via this app or otherwise) that can give apps without SMB support access to my SMB share at a single mount point, and have it work no matter how many times the VPN is disconnected and reconnected. I can't be the only one wanting a solution like this.

I do have a rooted phone, and I've looked in to manual CIFS mounting, but unfortunately that requires a kernel module that I do not have (cifs.ko). My kernel doesn't have a config.gz file in /proc, so I can't compile one myself either. That would be the best solution for me, though, as I could easily mount and unmount the share via Tasker depending on which network I am connected to.

If anyone has insights on how to patch Samba Documents Provider to be more stable, and solve all these issues, I would personally greatly appreciate it, along with any other alternative solutions.

Edit:

I was looking through the forks of this repository to see if anyone had made any fixes. Interestingly, I found a commit that seemed at least somewhat related, being an address issue:

https://github.com/jmue/samba-documents-provider/commit/300c4f577edbae6dbc6c2eefdc21d1413ff50263

And this indeed went unfixed in this official repository, and is still present in the final 1.1 .apk made available online:

https://github.com/google/samba-documents-provider/blob/d211ab6e01acdde6d9c604d71da1964f2708f5cb/sambapatch.diff#L366

I wonder if this is responsible?

jmue commented 5 years ago

I just saw your comment. I don't know if my commit is related to your problem. If I remember correctly there were a compiler warning about this line. But did you try to build it with my commit?

andrew-phi commented 5 years ago

if (ifa->ifa.ifa_addr = NULL) { WHAT THE HECK is this supposed to do!?! Fix the "=="!

MaciejMalczyk commented 4 years ago

Have same problems with mounting Samba remote by using ZeroTierOne VPN. The remote mounts fine once, but opening it again in Android DocumentsUi app (default file manager) is impossible.
The remote works fine when i mount it in local network. Have no problems with opening it by using VPN in KDE Dolphin file manager on PC.