To clarify the differences you see: 1) on the smb2 session setup requests you see the working client (smbclient) setting the SMB2_FLAGS_PRIORITY flags (this shouldn't make any difference because it is SMB3.1.1 specific flag unless the server negotiated smb3.1.1) 2) you see CAP_DFS (0x00000001) not CAP_EXTENDED_SECURITY (0x80000000) set on the Capabilities field of the session setup response (the negotiate protocol request if you specify vers=3 or vers=3.1 or vers=3.1.1 or vers=3.0 should show these capabilities set on the negotiate protocol request: SMB2_GLOBAL_CAP_DFS | SMB2_GLOBAL_CAP_LEASING | SMB2_GLOBAL_CAP_LARGE_MTU | SMB2_GLOBAL_CAP_PERSISTENT_HANDLES | SMB2_GLOBAL_CAP_ENCRYPTION | SMB2_GLOBAL_CAP_DIRECTORY_LEASING Would also be interesting to see if the signing required difference is related. I could give you a patch that forces the Capabilities field to include more flags on session setup - it is easy enough to change the line (round line 1181 of smb2pdu.c) - see SMB2_sess_alloc_buffer req->Capabilities = 0; to req_capabilities = SMB2_GLOBAL_CAP_DFS; On Thu, Jul 25, 2019 at 9:12 AM Wout Mertens <wout.mertens@xxxxxxxxx> wrote: > > Thank you so much Aurélien, smbcmp was really helpful! > > Is there a way to force mount.cifs to use DFS? (cifs-utils 6.8, kernel 4.19.57) > > It turns out that when smbclient connects, it sends that it supports > DFS, but mount.cifs sends that it does NOT support DFS. Then smbclient > connects to the host and figures out the correct server to talk to, > and connects as needed, but mount.cifs just fails to do that. > > What I did was to sniff the smbclient traffic for the server that has > the path I wanted, and then mount that directly using mount.cifs. That > works, but I'm worried that if they move things around it will break > again, or maybe they'll split the mount in two servers. > > Here's the comparison: (-: smbclient, +: mount.cifs) > ====== > smbclient first has an extra "Negotiate Protocol Request" + Response, > which the mount.cifs doesn't do. Then there's a common "Negotiate > Protocol Request" + Response, > > Session Setup Request, NTLMSSP_NEGOTIATE (same with the subsequent NTLMSSP_AUTH) > Server Component: SMB2 > SMB2Header Length: 64 > - Credit Charge: 1 > + Credit Charge: 0 > Channel Sequence: 0 > Reserved: 0000 > Command: Session Setup (1) > - Credits requested: 8192 > - Flags: 0x00000010, Priority > + Credits requested: 130 > + Flags: 0x00000000 > .... .... .... .... .... .... .... ...0 = Response: This > is a REQUEST > .... .... .... .... .... .... .... ..0. = Async command: > This is a SYNC command > .... .... .... .... .... .... .... .0.. = Chained: This > pdu is NOT a chained command > .... .... .... .... .... .... .... 0... = Signing: This > pdu is NOT signed > - .... .... .... .... .... .... .001 .... = Priority: This > pdu contains a PRIORITY > + .... .... .... .... .... .... .000 .... = Priority: This > pdu does NOT contain a PRIORITY > ...0 .... .... .... .... .... .... .... = DFS operation: > This is a normal operation > ..0. .... .... .... .... .... .... .... = Replay > operation: This is NOT a replay operation > Chain Offset: 0x00000000 > - Message ID: Unknown (2) > - Process Id: 0x00000000 > + Message ID: Unknown (1) > + Process Id: 0x000040fc > [...] > - Security mode: 0x01, Signing enabled > - .... ...1 = Signing enabled: True > - .... ..0. = Signing required: False > - Capabilities: 0x00000001, DFS > - .... .... .... .... .... .... .... ...1 = DFS: This host > supports DFS > + Security mode: 0x02, Signing required > + .... ...0 = Signing enabled: False > + .... ..1. = Signing required: True > + Capabilities: 0x00000000 > + .... .... .... .... .... .... .... ...0 = DFS: This host > does NOT support DFS > > After that, they both do > > > Session Setup Response > > Tree Connect Request Tree: \\corp.local\IPC$ > > Tree Connect Response > > and then smclient does > > Ioctl Request FSCTL_DFS_GET_REFERRALS, File: \corp.local\ib > but mount.cifs does > > Ioctl Request FSCTL_VALIDATE_NEGOTIATE_INFO > ====== > > I saw that there were fixes in 5.0 regarding crediting and DFS > reconnect, would they make a difference? > > Wout. > > On Tue, Jul 9, 2019 at 9:38 AM Aurélien Aptel <aaptel@xxxxxxxx> wrote: > > > > "Wout Mertens" <wout.mertens@xxxxxxxxx> writes: > > > Any suggestions? This is driving me crazy :-/ > > > > If you make a network capture of smbclient connecting and a capture of > > mount.cifs failing you can use smbcmp [1] to compare them. > > > > https://github.com/aaptel/smbcmp > > > > -- > > Aurélien Aptel / SUSE Labs Samba Team > > GPG: 1839 CB5F 9F5B FB9B AA97 8C99 03C8 A49B 521B D5D3 > > SUSE Linux GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany > > GF: Felix Imendörffer, Mary Higgins, Sri Rasiah HRB 21284 (AG Nürnberg) -- Thanks, Steve