How to know if the server application is listening on ipv6

In a VPS (webfaction) I opened a port 14152 and I am running an application which is listening connections on that port, this is the output of netstat -putan | grep 14152

udp6       0      0 :::14152         :::*        79238/./server.x86_

So is this server.86 (.net code) listening on 0.0.0.0:14152? on ipv6 port type udp? I am not sure how to confirm it.

If I have a client application which is trying to connect to this port would it work with ipv4? or it has to be ipv6?

I cannot find anything to configure webfaction to listen through ipv4 which is strange.


Solution 1:

So is this server.86 (.net code) listening on 0.0.0.0:14152?

If you have provided the complete output from that command, then no. Twice over if being overly technical.

First, in a technical sense, UDP doesn't have a "listen" system call, so UDP will never listen, it will only receive. However you are likely asking in a more general sense, so...

Second, two pieces of information in the output you provide show that this is an IPv6 socket. The udp6 that starts the line signifies this is IPv6 UDP socket as opposed to an IPv4 UDP socket.

Is UDP different between IPv4 and IPv6? No. So why the difference? The socket is tied to both L3 and L4 addressing; this simply helps the user to more easily distinguish IPv4 and IPv6 sockets when viewing the output (or using sort, grep, etc).

Then you have :::14152 which clearly shows an IPv6 address. How so? Well, with both IPv4 and IPv6 the trailing :<port> indicates the port portion of the socket and removing this section of the socket leaves the IP address. In this case you get :: which is the "undefined" IPv6 address of all zeroes.

If you aren't familiar with IPv6 addressing, there are several rules that are allowed to make them more humanly readable when possible. The one in play here is called "Zero Compression" and allows the use of "::" to represent "one or more groups of 16 bits of zeros" (RFC 5952 - although section 4.2.2 further specifies it should only apply to more than one group). So an address of just :: as indicated in the output is the address of all zeroes.

on ipv6 port type udp?

Exactly.

If I have a client application which is trying to connect to this port would it work with ipv4? or it has to be ipv6?

Again, if the output you gave is complete, there is no socket for 0.0.0.0:14152. Therefore nothing set to receive IPv4 UDP on port 14152. So no, IPv4 should not work. The only way it might work if there was some sort of 6-to-4 translation (i.e. NAT-PT/NAT64) in play somewhere converting the IPv4 traffic to IPv6 traffic.