NFS4 uses port 2049, it is RPC service, but does not use portmapper. So
port detection based on RPC portmapper does not work for this RPC service
because there is no portmapper traffic.
And if traffic is between some SSL service port (e.g. 993) and NFS4 port
2049 then the packet is decoded as SSL. Note that for NFS traffic it common
that client port is below 1024, and so there is a high chance to choose
some SSL service port.
Fix this problem and explicitly register also TCP port 2049 for RPC
dissector, like it is already done for TCP port 111 (used by RCP portmapper
service).
With this change TCP traffic between ports 993 and 2049 is decoded as NFS4.
---
epan/dissectors/packet-rpc.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/epan/dissectors/packet-rpc.c b/epan/dissectors/packet-rpc.c
index c798d19bb47f..777a041125ce 100644
--- a/epan/dissectors/packet-rpc.c
+++ b/epan/dissectors/packet-rpc.c
@@ -59,6 +59,7 @@ void proto_register_rpc(void);
void proto_reg_handoff_rpc(void);
#define RPC_TCP_PORT 111
+#define NFS4_TCP_PORT 2049
#define RPC_UDP 0
#define RPC_TCP 1
@@ -4476,6 +4477,9 @@ proto_reg_handoff_rpc(void)
dissector_add_uint_with_preference("udp.port", RPC_TCP_PORT, rpc_handle);
dissector_add_string("tls.alpn", "sunrpc", rpc_tls_handle);
+ /* tcp port 2049 is used by NFS4, it is onc-rpc service, but does not use portmapper */
+ dissector_add_uint_with_preference("tcp.port", NFS4_TCP_PORT, rpc_tcp_handle);
+
heur_dissector_add("tcp", dissect_rpc_tcp_heur, "RPC over TCP", "rpc_tcp", proto_rpc, HEURISTIC_ENABLE);
heur_dissector_add("udp", dissect_rpc_heur, "RPC over UDP", "rpc_udp", proto_rpc, HEURISTIC_ENABLE);
heur_dissector_add("tls", dissect_rpc_tls_heur, "RPC with TLS", "rpc_tls", proto_rpc, HEURISTIC_ENABLE);
--
2.20.1