Same problem with Proxmox 7.2-11 and a Synology NAS.
I have an up to date Synology NAS behind a router at my office and a Proxmox node on another server, in the cloud.
XX.XX.XX.XX -> NAS public IP address
YY.YY.YY.YY -> Proxmox Node IP address
ZZ.ZZ.ZZ.ZZ -> Other public IP address
192.168.1.190 -> NAS private IP address (In the local network)
Executing
strace -f -e trace=network showmount -e XX.XX.XX.XX on the Proxmox node, we got :
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 4
connect(4, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 4
connect(4, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 4
connect(4, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 4
connect(4, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 4
setsockopt(4, SOL_IP, IP_RECVERR, [1], 4) = 0
connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("ZZ.ZZ.ZZ.ZZ")}, 16) = 0
sendto(4, "\343\343\1\0\0\1\0\0\0\0\0\0\4nas1\fwincom-cloud\3n"..., 39, MSG_NOSIGNAL, NULL, 0) = 39
recvfrom(4, "\343\343\201\200\0\1\0\1\0\0\0\0\4nas1\fwincom-cloud\3n"..., 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("212.227.123.16")}, [28->16]) = 55
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getsockopt(4, SOL_SOCKET, SO_TYPE, [1], [4]) = 0
getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
bind(4, {sa_family=AF_INET, sin_port=htons(708), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0
getpeername(4, 0x7ffc52f90cc0, [128]) = -1 ENOTCONN (Transport endpoint is not connected)
connect(4, {sa_family=AF_INET, sin_port=htons(111), sin_addr=inet_addr("XX.XX.XX.XX")}, 16) = 0
getsockname(4, {sa_family=AF_INET, sin_port=htons(708), sin_addr=inet_addr("YY.YY.YY.YY")}, [128->16]) = 0
getsockopt(4, SOL_SOCKET, SO_TYPE, [1], [4]) = 0
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
getsockopt(4, SOL_SOCKET, SO_TYPE, [1], [4]) = 0
getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [128->16]) = 0
bind(4, {sa_family=AF_INET, sin_port=htons(708), sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use)
bind(4, {sa_family=AF_INET, sin_port=htons(709), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0
getpeername(4, 0x7ffc52f90ea0, [128]) = -1 ENOTCONN (Transport endpoint is not connected)
connect(4, {sa_family=AF_INET, sin_port=htons(892), sin_addr=inet_addr("192.168.1.190")}, 16
Per the latest line, we can see that showmount tries to connect to the NAS local IP address which is in this case unreachable from the Proxmox node. We got a timeout.
There is clearly a problem here which has not been yet fixed.
For time being, I mounted the share on the Proxmox node and added It as a folder.
Updating the following in /usr/share/perl5/PVE/Storage/NFSPlugin.pm works, but I am not keen on updating out of the box files.
Code:
if (my $err = $@) {
# return 0; ### this line needs to be commented out
}
Any idea how to properly fix that and add the fix to the master branch?
Thanks,