• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Gelöst]portmap & rpcbind Konflikt. pcnfsd startet nicht.

Hallo,

folgende Situation:
Ich habe einen Server mit OpenSuSE 11.1. Dieser stellt über den NFS-Kernel-Server NFS-Freigaben für Windows-Clients bereit.
Dies Funktioniert problemlos.

Zusätzlich dazu gibt es aber noch DOS-Clients, die per XFSTool auf die NFS-Freigaben zugreifen. Damit dies passieren kann, muss auf dem OpenSuSE-Server der Dienst "pcnfsd" laufen.
Dieser wiederum benötigt den portmapper Dienst (portmap).

Ablauf ist also, grob, wie folgt:
DOS-Client -> pcnfsd -> portmap -> nfskernelserver

Die Abhängigkeiten sind wie folgt:
pcnfsd benötigt portmap (Gut und syslogd und network, aber das macht keine Probleme :) )

Nun habe ich folgende Probleme:
1.) Der pcnfsd-Dienst startet nicht automatisch, weil der portmap-Dienst nicht läuft. (Abhängigkeit ist in der /etc/init.d/pcnfsd korrekt definiert.)

2.) Der portmap-Dienst wird ebenfalls nicht automatisch gestartet. Es ist zwar das /etc/init.d/portmap Skript vorhanden, aber keine Symlinks unterhalb von /etc/rc.d/rcX.d/.

3.) Daher schnappt sich der rpcbind-Dienst einen Port, so das auch ein manuelles Starten vom Portmapper fehlschlägt.
Code:
server:/etc # /etc/init.d/portmap start
Starting RPC portmap daemon                             failed

Gehe ich, wie folgt, manuell vor und beende zuerst den rpcbind (Ports freigeben fürt Portmapper). Starte dann den Portmapper und anschließend rpcbind. DANN kommt der pcnfsd problemlos hoch.

Code:
server:/etc # /etc/init.d/rpcbind stop
Shutting down rpcbind                                   done
server:/etc # /etc/init.d/portmap start
Starting RPC portmap daemon                             done
server:/etc # /etc/init.d/rpcbind start
Starting rpcbind                                        done
server:/etc # /etc/init.d/pcnfsd start
Starting PCNFS daemon                                   done
server:/etc #

Nun wollte ich über chkconfig den portmap Dienst einfach für die entsprechenden Runlevel aktivieren. ABER:
Code:
server:/etc # chkconfig --list portmap
portmap                   0:off  1:off  2:off  3:off  4:off  5:off  6:off
server:/etc # chkconfig --level 35 portmap on
insserv: script portmap: service portmap already provided!
insserv: exiting now!
/sbin/insserv failed, exit code 1

rpcbind und pcnfsd sind korrekt angelegt. Diese machen ja auch nur insofern Probleme, als das z.Z. rpcbind VOR portmap gestartet wird.
Was eben nicht sein darf.
Code:
server:/etc # chkconfig --list rpcbind
rpcbind                   0:off  1:off  2:off  3:on   4:off  5:on   6:off
server:/etc # chkconfig --list pcnfsd
pcnfsd                    0:off  1:off  2:off  3:on   4:off  5:on   6:off

portmap und pcnfsd wurden nachträglich über Yast nachinstalliert. Allerdings ZUERST pcnfsd und DANN (nachdem ich gemerkt hatte, das ich portmap vergessen hatte - Dachte der wäre standardmäßig dabei.) habe ich portmap über Yast installiert.
Allerdings sollte die Reihenfolge doch egal sein, oder? Hatte damit jedenfalls nie Probleme unter Debian/Ubuntu oder Cent OS/RedHat.

Nun könnte ich ja auch einfach die Symlinks unterhalb von /etc/rc.d/rcX.d/ anlegen.. Dazu wollte ich mit Midnight Commander (Linux) und 7-Zip (Windows) in das .rpm Paket schauen.
Exakt, dieses hier: http://download.opensuse.org/distri...e/i586/portmap-6.0+git20070716-31.37.i586.rpm
Allerdings kommt beim Öffnen der "portmap-6.0+git20070716-31.37.i586.cpio.gz" der Fehler, das ein unerwartetes Archivende vorliegt.
(Klasse. Wieso hat sich dann das Tool mehr oder weniger korrekt installiert?)

Mein Anliegen ist jetzt folgendes:
1.) Habe ich etwas falsch gemacht?
2.) Wie bringe ich portmap dazu, das er automatisch (in Runlevel 3 und 5) VOR rpcbind startet? (Hauptproblem)
Klar kann ich die Symlinks setzen. Nur sollte das ja eigentlich mittels chkconfig, etc. gehen. Also muss hier doch noch woanders ein Fehler stecken, oder?

Danke und Gruss zu später Stunde,
Khark
 
OP
G

Grumpelmampf

Newbie
Hallo,

ok, heute ging es dann nicht mehr.
Hintergrund war, das der portmap-Dienst nicht mehr auf Port 111 UDP gebunden war. Ergo liefen die Anfragen der DOS-Clients ins leere und diese meldeten brav "unregistered rpc service" beim Versuch sich anzumelden.

Jetzt, nach abschießen von rpcbind und Neustart beider Dienste geht es wieder.
Und das, obwohl mir über rpcinfo nicht angezeigt wird, das portmap auf Port 111 UDP läuft.
Code:
server:~ # rpcinfo -p localhost
   program vers proto   port  service
    100000    2   tcp    111  portmapper
    150001    1   udp    711  pcnfsd
    150001    2   udp    711  pcnfsd
    150001    1   tcp    712  pcnfsd
    150001    2   tcp    712  pcnfsd
    100005    1   udp  34670  mountd
    100005    1   tcp  49346  mountd
    100005    2   udp  34670  mountd
    100005    2   tcp  49346  mountd
    100005    3   udp  34670  mountd
    100005    3   tcp  49346  mountd
    100024    1   udp  35463  status
    100024    1   tcp  59185  status
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100021    1   udp  52263  nlockmgr
    100021    3   udp  52263  nlockmgr
    100021    4   udp  52263  nlockmgr
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100021    1   tcp  57413  nlockmgr
    100021    3   tcp  57413  nlockmgr
    100021    4   tcp  57413  nlockmgr

Anfragen nach dem pcnfsd-Service (UDP und TCP) werden aber korrekt beantwortet:
Code:
server:~ # rpcinfo -u localhost pcnfsd
program 150001 version 1 ready and waiting
program 150001 version 2 ready and waiting
server:~ # rpcinfo -t localhost pcnfsd
program 150001 version 1 ready and waiting
program 150001 version 2 ready and waiting

lsof zeigt, das auf Port 111 UDP auch wirklich portmap läuft:
Code:
server:~ # netstat -tulpan |grep 111
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      15478/portmap
udp        0      0 0.0.0.0:111             0.0.0.0:*                           15478/portmap

Die langfristige Lösung wird wohl sein den NFS-Kernel-Server und den PCNFSD durch den Samba abzulösen.
Sofern die DOS-Clients damit keine Probleme mehr haben.
Ich habe keine Lust auf Konfigurationen die einfach irgendwann aufhören zu funktionieren obwohl nichts an der Konfiguration geändert wurde..
 

pft

Advanced Hacker
Hi,

ahabe auf die Schnlee nur deinen ersten Post gelesen.
Dazu folgendes:
1. portmap sollte unabhängig von pcnfd da sein. Meines wissen läuft ohne den auch nfs nicht
2. die reihenfolge wird über die symlinks in den runlevel directories festgelegt. Für den Stat Sxxservicename, wobie xx eine nummer ist die die Reihenfolge festlegt. wenn dass deinen pcnfs nicht richtig berücksichtigt kann das daran liegen, dass die startdatei die abhängigkeiten nicht richtig spezifiziert.
Probleme beim Start von Diensten hatte ich auch schon mal - meist lag es an übersehenen Fehlermeldungen.
Meiner Meinung nach sollte die Startreihenfolge so sein: portmap - nfsd - pcnfsd

Details wie das aussehen sollte, kann ich dir nur zu portmap und nfs geben, alerdings auch da erst heute Abend, da ich derzeit nicht ein einem Suse System sitze.
 
OP
G

Grumpelmampf

Newbie
Hallo,

danke für das Angebot. Nehme ich gerne an.
Dann kann ich deine Konfig mal mit meiner vergleichen :)

Die Symlinks habe ich jetzt mal manuell mit "ln -s" angelegt.
(K02portmap und S03portmap in /etc/rc.d/rc3.d/, )
Code:
server:/etc/rc.d/rc3.d # ls
K01acpid      K01smb           K02network-remotefs  K06syslog       S02network       S07mysql             S09postfix
K01apache2    K01splash        K02ntp               K07earlysyslog  S03portmap       S07named             S09splash
K01cron       K01splash_early  K02portmap           K07network      S03syslog        S07network-remotefs  S10apache2
K01dhcpd      K01sshd          K02postfix           K08dbus         S04nmb           S07pcnfsd            S11cron
K01gpm        K01stopblktrace  K03haldaemon         S01acpid        S04rpcbind       S07sshd              S11smartd
K01nfsserver  K01xinetd        K03named             S01dbus         S04splash_early  S08ntp               S11smb
K01nscd       K02cups          K04nfs               S01earlysyslog  S05nfs           S09cups              S11xinetd
K01pcnfsd     K02fbset         K04smbfs             S01fbset        S05smbfs         S09dhcpd             S12stopblktrace
K01random     K02kbd           K05nmb               S01random       S06kbd           S09nfsserver
K01smartd     K02mysql         K05rpcbind           S02haldaemon    S07gpm           S09nscd

(K02portmap und S03portmap in /etc/rc.d/rc5.d/)
Code:
server:/etc/rc.d/rc5.d # ls
K01acpid      K01smartd        K02mysql             K05rpcbind      S02haldaemon     S07gpm               S09nfsserver
K01apache2    K01smb           K02network-remotefs  K06syslog       S02network       S07mysql             S09nscd
K01cron       K01splash        K02ntp               K07earlysyslog  S03portmap       S07named             S09postfix
K01dhcpd      K01splash_early  K02portmap           K07network      S03syslog        S07network-remotefs  S09splash
K01earlyxdm   K01sshd          K02postfix           K08dbus         S04nmb           S07pcnfsd            S10apache2
K01gpm        K01stopblktrace  K03haldaemon         S01acpid        S04rpcbind       S07sshd              S11cron
K01nfsserver  K01xinetd        K03named             S01dbus         S04splash_early  S08ntp               S11smartd
K01nscd       K02cups          K04nfs               S01earlysyslog  S05nfs           S09cups              S11smb
K01pcnfsd     K02fbset         K04smbfs             S01fbset        S05smbfs         S09dhcpd             S11xinetd
K01random     K02kbd           K05nmb               S01random       S06kbd           S09earlyxdm          S12stopblktrace

Jetzt sagt mir chkconfig auch das alles ok ist:
Code:
server:/etc/rc.d/rc5.d # chkconfig --list portmap
portmap                   0:off  1:off  2:off  3:on   4:off  5:on   6:off
server:/etc/rc.d/rc5.d # chkconfig --list rpcbind
rpcbind                   0:off  1:off  2:off  3:on   4:off  5:on   6:off
server:/etc/rc.d/rc5.d # chkconfig --list pcnfsd
pcnfsd                    0:off  1:off  2:off  3:on   4:off  5:on   6:off
server:/etc/rc.d/rc5.d # chkconfig --list nfs
nfs                       0:off  1:off  2:off  3:on   4:off  5:on   6:off

Ich werde nochmalnachforschen, ob der rpcbind Service wirklich benötigt wird. Und andernfalls einfach deaktivieren. Dann kommt der nicht mit portmap in die Quere.
Ein Grep zeigt, das nur der nfs und ypbind den rpcbind benötigt.
Code:
server:/etc/init.d # grep -l "rpcbind" *
nfs
rpcbind
ypbind

ABER nfs checkt auch, ob portmap läuft und nimmt dann diesen. ypbind nutzen wir, mangels NIS, nicht.
Code:
check_portmap() {
   # check if either portmap or rpcbind is running
   if test -x /sbin/portmap && checkproc /sbin/portmap
   then true
   elif test -x /sbin/rpcbind && checkproc /sbin/rpcbind
   then true
   else false
   fi
}

Ergo würde bisher nichts dagegensprechen rpcbind abzuschalten.
Aber das schaue ich mir nochmal ganz genau an. Irgendwie traue ich meinem SuSE da nicht :)

Khark
 

pft

Advanced Hacker
Hi,

also ich hab jetzt mal nachgesehen:
im runlevel 3 habe ich unter anderem: S07portmap und S11nfsserver

Das sollte aber durch insserv automatisch so eingerichtet werden wenn die startdatei stimmt:
So steht zum Bsp. in /etc/rc.d/nfsserver ganz vorne
Code:
### BEGIN INIT INFO
# Provides: nfsserver
# Required-Start: $network $remote_fs $named portmap
# Required-Stop: $network portmap
# Should-Start: ypbind svcgssd idmapd
# Should-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start the kernel based NFS daemon
### END INIT INFO

Man beacxhte das Ende der 3. Zeile. Das führt automatisch zur richtigen Nummerierung. Dito sollte dass auch für pcnfs gelten wenn aus dem Suse repository installiert. Bei fremden Quellen / selbstkompiliert kann das anders aussehen
 
OP
G

Grumpelmampf

Newbie
Problem ist gelöst.
Ich hatte überprüft ob ich Dienste laufen haben die explizit den RPCBIND erfordern.
Dies war nicht der Fall. Also habe ich den RPCBIND deinstalliert und den Portmap anschließend über Yast und den Runleveleditor eingebunden.
Dann wurden die Symlinks korrekt erzeugt.

Der PCNFSD kommt jetzt auch immer vernünftig hoch. Dmesg zeigt keine Fehler.
Hatte glatt überlesen, das sich mit OpenSuSE 11.1 der Defaultdienst für RPC-Anfragen von Portmap auf RPCBind geändert hatte.
Anscheinend wird das noch nicht von allen Init-Skripten respektiert :D

Danke für die Hilfe,
Khark
 

pft

Advanced Hacker
Hatte glatt überlesen, das sich mit OpenSuSE 11.1 der Defaultdienst für RPC-Anfragen von Portmap auf RPCBind geändert hatte.
Das war mir auch neu - meine Aussagen bezogen sich noch auf meine 10.2 - so hab' ich auch noch etwas gelernt :)

Setzt Du das Thema dann bitte noch auf erledigt. (Titel im erten post editieren)
Danke!
 

pft

Advanced Hacker
Du hast im ersten posting dieses Themas (oben rechts innerhalb der blauen Box) keinen "ÄNDERN" Button bzw. kannst wenn Du drauf klickst nicht ein "[gelöst]" am Beginn der Betreffzeile einfügen?

Ich glaube da wärst Du der erste hier im Forum - versuch es bitte nochmal :roll:
 
OP
G

Grumpelmampf

Newbie
Doh.. Ja, den Ändern Button hab ich wohl gesehen.. Nur Konnte ich im Betreff keinen Buchstaben hinzufügen.
Bis mir dann eben die Idee gekommen ist, das ich evtl. die maximale Länge ausgeschöpft habe und erstmal ein paar Buchstaben kürzen sollte.

Nun gehts :D
 
Oben