The sys admin's daily grind: socket statistics

Short Cut

Article from Issue 192/2016

Most sys admins use netstat to find out about the status of network sockets, but Charly knows a good shortcut.

A bunch of parameters control the behavior of netstat. Administrators can also happily combine options so that some netstat calls look like an armadillo has rolled across the keyboard. With ss (like socket statistics), there is an even more specific tool for this purpose. It comes from the iproute2 package [1] – just like its siblings bridge, rtacct, rtmon, tc, ctstat, lnstat, nstat, routef, routel, rtstat, and ip.

Because a running Linux uses several hundred or more ports, ss comes with plenty of filters. I mostly need the -t and -u parameters, which restrict the results to TCP or UDP sockets. Other parameters limit the list to raw, Datagram Congestion Control Protocol (DCCP), package, and Unix domain sockets.

Caution: The tool only displays TCP sockets for existing connections by default (established or close_wait). If I also want to see sockets in the lists status – as I usually do – I have to type ss -ta. If I only want the tool to pay attention to listening TCP sockets and suppress all others, I use ss -lt. If I add -p here, I can also see which process opened the socket. I need to use root privileges for this; otherwise, -p has no effect.

Numbers, Please!

A further default is that ss translates the port numbers from the /etc/services file into names. I can switch this off using -n (for numeric). If I want the tool to resolve the IP addresses concerned into names, I just add an -r. Using -4 and -6, I can limit it to one of the two TCP/IP versions.

I find it useful to filter by source (sport) and destination port (dport). For example,

# ss -natp6 sport = :25
LISTEN   0   100   :::25   :::*   users:(("master",27452,13))

shows whether the mail server is listening via IPv6 (yes) and which process is on port 25. Logical links are also okay:

# ss -t4 dport = :443 or dport = :80

ccze [2] sorted the coloration in Figure 1, but grc [3] or rainbow [4] would have managed it, too.

Figure 1: The socket collector ss, color-supported here, too, provides a good overview.

Charly Kühnast

Charly Kühnast manages Unix systems in the data center in the Lower Rhine region of Germany. His responsibilities include ensuring the security and availability of firewalls and the DMZ.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Querying Sockets with ss

    The unassuming ss utility is easy to understand and easy to type, but it adds some powerful options to your admin toolkit.

  • Charly's Column

    Without Network Address Translation (NAT) on many LANs, the IPv4 Internet address space would have been exhausted years ago. Still, it’s probably a good idea to check what comes through your NAT connections.

  • Charly's Column: lsof

    The shorter a command, the longer the list of support parameters. This rule applies to lsof, one of Charly’s favorite commands.

  • Charly's Column

    Horror stories are full of scary characters knocking on doors at night. On Linux, we just call this port knocking, and it can actually be quite useful.

  • Tempus Fugit

    Charly Kühnast, sys admin columnist for 15 years, is searching for lost microseconds.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More