$ rpcinfo
program version netid address service owner
100000 4 tcp6 ::.0.111 portmapper superuser
100000 3 tcp6 ::.0.111 portmapper superuser
100000 4 udp6 ::.0.111 portmapper superuser
100000 3 udp6 ::.0.111 portmapper superuser
100000 4 tcp 0.0.0.0.0.111 portmapper superuser
100000 3 tcp 0.0.0.0.0.111 portmapper superuser
100000 2 tcp 0.0.0.0.0.111 portmapper superuser
100000 4 udp 0.0.0.0.0.111 portmapper superuser
100000 3 udp 0.0.0.0.0.111 portmapper superuser
100000 2 udp 0.0.0.0.0.111 portmapper superuser
100000 4 local /run/rpcbind.sock portmapper superuser
100000 3 local /run/rpcbind.sock portmapper superuser
我认为“地址”显示了 RPC 服务的 IPv6 地址,根据https://unix.stackexchange.com/a/234158/674。
是否rpcinfo
列出 RPC 服务的端口号?我怎样才能找到它?
答案1
这个版本的rpcinfo
实现似乎有点仓促,因为端口号显示为两个单独的字节而不是单个 16 位数字。
该portmapper
服务始终预计位于端口 111 中,因为它用于查找所有其他 RPC 服务,而其端口号可能会有所不同。 (由于 ONC RPC 协议是在防火墙如此普遍之前开发的,因此现代实现越来越多地使用静态端口号;例如 NFS 现在预计将使用端口 2049 作为标准。)
在 IPv6 方面,这一点最为清晰可见:全零 IPv6 地址显示为::
,然后端口号表示为.0.111
。在这种情况下,这意味着端口号的最高有效字节为 0,最低有效字节为 111。
IPv4 方面使用相同的语法:地址字段具有全零 IPv4 地址 (INADDR_ANY)和连接在一起的0.0.0.0
端口号的两字节表示形式。.0.111
您可以通过将端口号的 MSB 乘以 256,然后加上 LSB 的值来获得实际端口号。因此,例如,端口号 2049 将按此.8.1
语法显示 ( 8
* 256 + 1
= 2049)