NFS Mount problems

2007-03-28 Thread Tom Judge

Hi,


I have a HA NFS server setup,  but I am having some problems with 
mounting the NFS shares.  I have had to patch mountd to allow it to be 
configured with an IP to bind to,  its a bit of quick hack (no docs, 
ipv6 etc...) but solves the problem for us where mountd sends the 
packets from the wrong ip. (See patch bellow).



The NFS server IP is 172.31.0.200 and we have the following flags set in 
rc.conf:


nfs_server_flags=-u -t -n 4 -h 172.31.0.200
rpcbind_flags=-h 172.31.0.200
mountd_flags=-r -p 832 -h 172.31.0.200

When I try and mount the share I get the following error the command:

maverick# mount nfs-server:/usr/home /usr/home
[udp] nfs-server:/usr/home: RPCPROG_MNT: RPC: Timed out
[udp] nfs-server:/usr/home: RPCPROG_MNT: RPC: Timed out

And the following data from tcpdump on the server:

[EMAIL PROTECTED] /usr/home/mintel]# tcpdump -n 'ip host 172.31.0.2 and ip 
host 172.31.0.200'

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em0, link-type EN10MB (Ethernet), capture size 68 bytes
17:10:58.321858 IP 172.31.0.2.906  172.31.0.200.111: UDP, length 56
17:10:58.322018 IP 172.31.0.200.111  172.31.0.2.906: UDP, length 28
17:10:58.322231 IP 172.31.0.2.1175084341  172.31.0.200.2049: 40 null
17:10:58.322280 IP 172.31.0.200.2049  172.31.0.2.1175084341: reply ok 
24 null

17:10:58.322481 IP 172.31.0.2.921  172.31.0.200.111: [|lwres]
17:10:58.322560 IP 172.31.0.200.111  172.31.0.2.921: [|lwres]
17:10:58.322731 IP 172.31.0.2.854  172.31.0.200.832: UDP, length 112
17:11:13.324547 IP 172.31.0.200.832  172.31.0.2.854: UDP, length 68
17:11:13.324652 IP 172.31.0.2  172.31.0.200: ICMP 172.31.0.2 udp port 
854 unreachable, length 36



I can reproduce the problem on a number 6.2 Release systems (i386/amd64).

Has anyone seen this before,  or know of a fix?

Thanks

Tom



/usr/src/sys/usr.sbin/mountd/
Index: mountd.c
===
--- mountd.c(revision 37)
+++ mountd.c(working copy)
@@ -257,7 +257,7 @@
fd_set readfds;
struct sockaddr_in sin;
struct sockaddr_in6 sin6;
-   char *endptr;
+   char *endptr, *svcaddr;
SVCXPRT *udptransp, *tcptransp, *udp6transp, *tcp6transp;
struct netconfig *udpconf, *tcpconf, *udp6conf, *tcp6conf;
pid_t otherpid;
@@ -290,7 +290,7 @@
errx(1, NFS server is not available or loadable);
}

-   while ((c = getopt(argc, argv, 2dlnp:r)) != -1)
+   while ((c = getopt(argc, argv, 2dlnp:rh:)) != -1)
switch (c) {
case '2':
force_v2 = 1;
@@ -307,6 +307,9 @@
case 'l':
dolog = 1;
break;
+case 'h':
+svcaddr = optarg;
+break;
case 'p':
endptr = NULL;
svcport = (in_port_t)strtoul(optarg, endptr, 10);
@@ -392,6 +395,7 @@
sin.sin_len = sizeof(struct sockaddr_in);
sin.sin_family = AF_INET;
sin.sin_port = htons(svcport);
+sin.sin_addr.s_addr = inet_addr(svcaddr);

bzero(sin6, sizeof(struct sockaddr_in6));
sin6.sin6_len = sizeof(struct sockaddr_in6);
___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: [SOLVED] NFS Mount problems

2007-03-28 Thread Tom Judge

Tom Judge wrote:

Hi,


I have a HA NFS server setup,  but I am having some problems with 
mounting the NFS shares.  I have had to patch mountd to allow it to be 
configured with an IP to bind to,  its a bit of quick hack (no docs, 
ipv6 etc...) but solves the problem for us where mountd sends the 
packets from the wrong ip. (See patch bellow).



The NFS server IP is 172.31.0.200 and we have the following flags set in 
rc.conf:


nfs_server_flags=-u -t -n 4 -h 172.31.0.200
rpcbind_flags=-h 172.31.0.200
mountd_flags=-r -p 832 -h 172.31.0.200

When I try and mount the share I get the following error the command:

maverick# mount nfs-server:/usr/home /usr/home
[udp] nfs-server:/usr/home: RPCPROG_MNT: RPC: Timed out
[udp] nfs-server:/usr/home: RPCPROG_MNT: RPC: Timed out

And the following data from tcpdump on the server:

[EMAIL PROTECTED] /usr/home/mintel]# tcpdump -n 'ip host 172.31.0.2 and ip 
host 172.31.0.200'

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em0, link-type EN10MB (Ethernet), capture size 68 bytes
17:10:58.321858 IP 172.31.0.2.906  172.31.0.200.111: UDP, length 56
17:10:58.322018 IP 172.31.0.200.111  172.31.0.2.906: UDP, length 28
17:10:58.322231 IP 172.31.0.2.1175084341  172.31.0.200.2049: 40 null
17:10:58.322280 IP 172.31.0.200.2049  172.31.0.2.1175084341: reply ok 
24 null

17:10:58.322481 IP 172.31.0.2.921  172.31.0.200.111: [|lwres]
17:10:58.322560 IP 172.31.0.200.111  172.31.0.2.921: [|lwres]
17:10:58.322731 IP 172.31.0.2.854  172.31.0.200.832: UDP, length 112
17:11:13.324547 IP 172.31.0.200.832  172.31.0.2.854: UDP, length 68
17:11:13.324652 IP 172.31.0.2  172.31.0.200: ICMP 172.31.0.2 udp port 
854 unreachable, length 36



I can reproduce the problem on a number 6.2 Release systems (i386/amd64).

Has anyone seen this before,  or know of a fix?

After running ktrace on the mountd process during the mount process, I 
noticed that mountd was trying to do a reverse DNS lookup on the 
address.  The problem was that the DNS server was incorrectly configured 
and not responding to the request.


Adding the client to the server hosts file fixed the problem.

Sorry for the noise.

Tom
___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to [EMAIL PROTECTED]