TranslateProject/sources/tech/20170725 ss another way to get socket statistics.md
2017-07-26 14:40:57 +08:00

68 lines
3.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

ss: another way to get socket statistics
============================================================
### Share or save
In an earlier blog post I mentioned **ss**, another tool that comes with the  _iproute2_  package and allows you to query statistics about sockets. The same thing that can be done with **netstat**, with the added benefit that it is typically a little bit faster, and shorter to type.
Just **ss **by default will display much the same thing as netstat, and can be similarly passed options to limit the output to just what you want. For instance:
```
$ ss -t
State       Recv-Q Send-Q       Local Address:Port                        Peer Address:Port
ESTAB       0      0                127.0.0.1:postgresql                     127.0.0.1:48154
ESTAB       0      0            192.168.0.136:35296                      192.168.0.120:8009
ESTAB       0      0            192.168.0.136:47574                     173.194.74.189:https
```
[…]
**ss -t **shows just TCP connections. **ss -u **can be used to show UDP connections, **-l **will show only listening ports, and things can be further filtered to just the information you want.
I have not tested all the possible options, but you can even forcibly close sockets with **-K**.
One place where **ss** really shines though is in its filtering capabilities. Lets list all connections with a source port of 22 (ssh):
```
$ ss state all sport = :ssh
Netid State      Recv-Q Send-Q     Local Address:Port                      Peer Address:Port
tcp   LISTEN     0      128                    *:ssh                                  *:*
tcp   ESTAB      0      0          192.168.0.136:ssh                      192.168.0.102:46540
tcp   LISTEN     0      128                   :::ssh                                 :::*
```
And if I want to show only connected sockets (everything but  _listening_  or  _closed_ ):
```
$ ss state connected sport = :ssh
Netid State      Recv-Q Send-Q     Local Address:Port                      Peer Address:Port
tcp   ESTAB      0      0          192.168.0.136:ssh                      192.168.0.102:46540
```
Similarly, you can have it list all connections to a specific host or range; in this case, using the 74.125.0.0/16 subnet, which apparently belongs to Google:
```
$ ss state all dst 74.125.0.0/16
Netid State      Recv-Q Send-Q     Local Address:Port                      Peer Address:Port
tcp   ESTAB      0      0          192.168.0.136:33616                   74.125.142.189:https
tcp   ESTAB      0      0          192.168.0.136:42034                    74.125.70.189:https
tcp   ESTAB      0      0          192.168.0.136:57408                   74.125.202.189:https
```
This is very much the same syntax as for  _iptables_ , so if youre familiar with that already, it will be quite easy to pick up. You can also install the  _iproute2-doc_  package, and look in  _/usr/share/doc/iproute2-doc/ss.html_  for the full documentation.
Try it for yourself! Youll see how well it works. If anything, Im glad for the fewer characters this makes me type.
--------------------------------------------------------------------------------
via: https://insights.ubuntu.com/2017/07/25/ss-another-way-to-get-socket-statistics/
作者:[ Mathieu Trudel-Lapierre ][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://insights.ubuntu.com/author/mathieu-trudel-lapierre/
[1]:https://insights.ubuntu.com/author/mathieu-trudel-lapierre/