Skip to content

[1.2.0] NFSv4 xprtsec=mtls breakage #108

@leo9800

Description

@leo9800

after upgrading ktls-utils to 1.2.0, NFSv4 no longer works with xprtsec=mtls

mounting would results in:

$ sudo mount -t nfs4 -o defaults,sec=krb5,xprtsec=none,nosuid,noatime,nofail n.oxlab.org:/ /mnt
mount.nfs4: Operation not permitted for n.oxlab.org:/ on /mnt

$ sudo mount -vvvv -t nfs4 -o defaults,sec=krb5,xprtsec=none,nosuid,noatime,nofail n.oxlab.org:/ /mnt
mount.nfs4: timeout set for Thu Jul 17 22:45:44 2025
mount.nfs4: trying text-based options 'sec=krb5,xprtsec=none,vers=4.2,addr=10.0.0.10,clientaddr=10.0.10.1'
mount.nfs4: mount(2): Operation not permitted
mount.nfs4: Operation not permitted for n.oxlab.org:/ on /mnt

the configuration file (/etc/tlshd.conf) on both server and client remains unchanged, which works properly with 1.1.0

contents of /etc/exports on server is:

/mnt *(rw,no_root_squash,no_subtree_check,sec=krb5,xprtsec=mtls,fsid=0)

by invoking pcap, the NFSv4 server replys NFS4ERR_WRONGSEC when attempted mounting, check pcap file for more: faulty-nfsv4-mtls.pcapng.txt (strip .txt suffix in filename, github does not allow .pcapng, the suffix is just for decepting github)

besides, setting xprtsec=mtls:tls:none in server /etc/exports and mount with xprtsec=none (as control) or xprtsec=tls worked both like a charm, seems it is just the TLS mutual auth (mtls) does not working properly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions