linux socket ์ƒํƒœ๋ฅผ ์กฐํšŒํ•˜๋Š” ss(socket statistics) ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•


ss ๋Š” ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์˜ ์†Œ์ผ“ ์ƒํƒœ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ๋กœ netstat ์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ์€ netstat ๋ณด๋‹ค๋Š” ์ƒˆ๋กœ์šด ๋ช…๋ น์–ด์ธ ss ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


Non listening socket ํ‘œ์‹œ

ss ๋Š” ์˜ต์…˜์—†์ด ์‚ฌ์šฉํ•˜๋ฉด listening socket ์„ ์ œ์™ธํ•˜๊ณ  ํ˜„์žฌ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ์†Œ์ผ“(TCP/UDP/Unix)์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.


non listening socket ํ‘œ์‹œ
$ ss

Netid   State    Recv-Q    Send-Q                                                Local Address:Port             Peer Address:Port      
u_str   ESTAB    0         0                                                                 * 373921                      * 0         
u_str   ESTAB    0         0                                       /run/dbus/system_bus_socket 20655                       * 20654     
u_str   ESTAB    0         0                                                                 * 21525                       * 21526     
u_str   ESTAB    0         0                                                                 * 25002                       * 25003     
u_str   ESTAB    0         0                                       /run/dbus/system_bus_socket 24327                       * 24325     
u_str   ESTAB    0         0                                       /run/systemd/journal/stdout 19086                       * 19038     
u_str   ESTAB    0         0                                       /run/dbus/system_bus_socket 23564                       * 23563 


๋ชจ๋“  ์†Œ์ผ“ ํ‘œ์‹œ

-a ์˜ต์…˜์„ ์ฃผ๋ฉด listening socket ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์†Œ์ผ“์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  socket ํ‘œ์‹œ
$ ss -a

Netid State   Recv-Q  Send-Q                                            Local Address:Port                       Peer Address:Port     
nl    UNCONN  0       0                                                          rtnl:NetworkManager/774                     *         
nl    UNCONN  0       0                                                          rtnl:-192937366                             *         
nl    UNCONN  0       0                                                          rtnl:-192937366                             *         
nl    UNCONN  4352    0                                                       tcpdiag:ss/17032                               *         
nl    UNCONN  768     0                                                       tcpdiag:kernel                                 *


์†Œ์ผ“ ์œ ํ˜• ์ง€์ •

-f FAMILY ์˜ต์…˜์œผ๋กœ ์กฐํšŒํ•  ์†Œ์ผ“ ์œ ํ˜•์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ FAMILY ์—๋Š”ย  unix, inet, inet6, link, netlink,ย vsock ๋ฅผ ์ง€์ •ํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


๋‹ค์Œ ๋ช…๋ น์–ด๋Š” unix ์†Œ์ผ“๊ณผ inet ์†Œ์ผ“์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

unix socket ๊ณผ inet socket ํ‘œ์‹œ
$ ss -f unix -f inet

Netid   State    Recv-Q    Send-Q                                                Local Address:Port             Peer Address:Port      
u_str   ESTAB    0         0                                                                 * 373921                      * 0         
u_str   ESTAB    0         0                                       /run/dbus/system_bus_socket 20655                       * 20654     
u_str   ESTAB    0         0                                                                 * 21525                       * 21526        
tcp     ESTAB    0         96                                                    172.31.23.247:ssh               192.168.1.13:58068


TCP ์œ ํ˜•์˜ ์†Œ์ผ“๋งŒ ํ‘œ์‹œํ•˜๋ ค๋ฉด -t ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

TCP socket ํ‘œ์‹œ
$ ss -t


UDPย ์œ ํ˜•์˜ ์†Œ์ผ“๋งŒ ํ‘œ์‹œํ•˜๋ ค๋ฉด -u ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉฐ -w ๋Š” RAW socket์„ -xย  ๋Š” Unix socket ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ( -xย ์˜ต์…˜์€ย -f unix ์˜ต์…˜๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.)

UDP socket ํ‘œ์‹œ
$ ss -u


listening socket ์„ ์ฐพ๋Š” -l ์˜ต์…˜๊ณผ socket ์œ ํ˜•์„ ํ•ฉ์น˜๋ฉด local ์—์„œ ํŠน์ • ํฌํŠธ๋ฅผ listening ํ•˜๋Š” ์†Œ์ผ“์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์•„๋ž˜๋Š” 80 ํฌํŠธ๋ฅผ listening ํ•˜๋Š” socket ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

TCP 80 ํฌํŠธ ๋ฆฌ์Šค๋‹ socket ํ‘œ์‹œ
$ ss -lt src :80

State            Recv-Q            Send-Q                        Local Address:Port                       Peer Address:Port            
LISTEN           0                 128                                 0.0.0.0:http                            0.0.0.0:*  

source ์™€ destination ์œผ๋กœ ์ฐพ๊ธฐ

์†Œ์ผ“ ์œ ํ˜• ๋’ค์— src :PRTNUM ์˜ต์…˜์„ ์ฃผ๋ฉด ๋กœ์ปฌ ์„œ๋ฒ„์˜ ํŠน์ • ํฌํŠธ์— ์—ฐ๊ฒฐํ•œ ์™ธ๋ถ€ IP ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” HTTPS ์— ์—ฐ๊ฒฐํ•œ remote ip ์˜ ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.


https ์— ์—ฐ๊ฒฐํ•œ ์™ธ๋ถ€ IP
$ ss -t src :443

State              Recv-Q          Send-Q                    Local Address:Port                        Peer Address:Port               
ESTAB              0               3195                       172.31.20.45:https                     1.2.3.4:53988              
ESTAB              0               0                          172.31.20.45:https                      1.1.1.1.2:65392              
ESTAB              0               0                          172.31.20.45:https                      4.3.2.1:39589


dst ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชฉ์ ์ง€ ํฌํŠธ์— ์—ฐ๊ฒฐํ•œ ์†Œ์ผ“ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค์Œ์€ ์™ธ๋ถ€์˜ 443 ํฌํŠธ์— ์—ฐ๊ฒฐํ•œ ์†Œ์ผ“ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

https ์— ์—ฐ๊ฒฐํ•œ ์™ธ๋ถ€ IP
$ ss -t dst :443

State            Recv-Q        Send-Q                          Local Address:Port                            Peer Address:Port         
CLOSE-WAIT       32            0                       [::ffff:172.31.20.45]:58188                 [::ffff:18.136.214.26]:https        
CLOSE-WAIT       32            0                       [::ffff:172.31.20.45]:60696                 [::ffff:18.136.214.25]:https        
CLOSE-WAIT       32            0                       [::ffff:172.31.20.45]:56804                 [::ffff:18.136.214.24]:https

process ์ •๋ณด ์ถœ๋ ฅ


-p ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด socket ์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋ฉฐ ๋‹ค์Œ์€ ์™ธ๋ถ€์˜ 443 ํฌํŠธ์— ์—ฐ๊ฒฐํ•œ ํ”„๋กœ์„ธ์Šค ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์™ธ๋ถ€ https ์— ์—ฐ๊ฒฐํ•œ ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก
$ ss -pt dst :443

State       Recv-Q   Send-Q              Local Address:Port                  Peer Address:Port                                         
CLOSE-WAIT  32       0           [::ffff:172.31.20.45]:58188       [::ffff:18.136.214.26]:https    users:(("java",pid=3773,fd=63))     
CLOSE-WAIT  32       0           [::ffff:172.31.20.45]:60696       [::ffff:18.136.214.25]:https    users:(("java",pid=3773,fd=74))     
CLOSE-WAIT  32       0           [::ffff:172.31.20.45]:56804       [::ffff:18.136.214.24]:https    users:(("java",pid=17608,fd=101))


๊ฐ™์ด ๋ณด๊ธฐ