Comment forcer l'utilisation de tcp au lieu de udp pour rpcbind?

J'essaie d'utiliser tcp / 111 pour rpcbind sous Debian Wheezy au lieu de udp / 111. Le portmap dans Squeeze utilise tcp / 111 sans configuration spéciale, mais Wheezy échoue.

Même de nombreux sites (ainsi que RFC) indiquent que TCP ou UDP est sélectionné de manière dynamic, ou parfois ce TCP est utilisé si UDP échoue … – lorsque je rejette udp / 111 (avec iptables ) sur le client Wheezy avec rpcbind , j'ai des erreurs. ..

 # showmount -e server Export list for server: .... # iptables -I OUTPUT -j REJECT -d server -p udp --dport 111 --reject-with icmp-port-unreachable # showmount -e server clnt_create: RPC: Port mapper failure - Unable to send: errno 1 (Operation not permitted) # rpcinfo -p program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper # 

Comment puis-je configurer rpcbind pour utiliser TCP uniquement?

Si vous montez avec vers=3,proto=tcp , TCP est utilisé lors de l'interrogation de rpcbind pour le assembly réel:

 $ tshark -nr nfs.pcap "tcp.stream eq 0" 2 192.168.1.89 36200 192.168.1.60 111 TCP 74 [SYN] 3 192.168.1.60 111 192.168.1.89 36200 TCP 74 [SYN, ACK] 4 192.168.1.89 36200 192.168.1.60 111 TCP 66 [ACK] 5 192.168.1.89 36200 192.168.1.60 111 Portmap 126 V2 GETPORT Call 6 192.168.1.60 111 192.168.1.89 36200 TCP 66 [ACK] 7 192.168.1.60 111 192.168.1.89 36200 Portmap 98 V2 GETPORT Reply (Call In 5) 8 192.168.1.89 36200 192.168.1.60 111 TCP 66 [ACK] 9 192.168.1.89 36200 192.168.1.60 111 TCP 66 [FIN, ACK] 10 192.168.1.60 111 192.168.1.89 36200 TCP 66 [FIN, ACK] 11 192.168.1.89 36200 192.168.1.60 111 TCP 66 [ACK] 

Je peux seulement supposer que showmount est codé pour utiliser UDP. J'ai essayé de lire la source de nfs-utils mais j'ai perdu dans showmount.c après clnt_call() , désolé.