linux socket ์ํ๋ฅผ ์กฐํํ๋ ss(socket statistics) ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ
ss ๋ ๋ฆฌ๋ ์ค ์์คํ ์ ์์ผ ์ํ๋ฅผ ์กฐํํ ์ ์๋ ์ ํธ๋ฆฌํฐ๋ก netstat ์ ๋น์ทํ ์ญํ ์ ์ํํฉ๋๋ค. ์ต๊ทผ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ์ netstat ๋ณด๋ค๋ ์๋ก์ด ๋ช ๋ น์ด์ธ ss ์ฌ์ฉ์ ๊ถ์ฅํ๊ณ ์์ต๋๋ค.
Non listening socket ํ์
ss ๋ ์ต์ ์์ด ์ฌ์ฉํ๋ฉด listening socket ์ ์ ์ธํ๊ณ ํ์ฌ ์ฐ๊ฒฐ๋์ด ์๋ ๋ชจ๋ ์์ผ(TCP/UDP/Unix)์ ํ์ํฉ๋๋ค.
$ 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 ์ ํฌํจํ ๋ชจ๋ ์์ผ์ ํ์ํฉ๋๋ค.
$ 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 ์์ผ์ ํ์ํฉ๋๋ค.
$ 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 ์ต์ ์ ์ฌ์ฉํฉ๋๋ค.
$ ss -t
UDPย ์ ํ์ ์์ผ๋ง ํ์ํ๋ ค๋ฉด -u ์ต์ ์ ์ฌ์ฉํ๋ฉฐ -w ๋ RAW socket์ -xย ๋ Unix socket ์ ํ์ํฉ๋๋ค. ( -xย ์ต์ ์ย -f unix ์ต์ ๊ณผ ๋์ผํฉ๋๋ค.)
$ ss -u
listening socket ์ ์ฐพ๋ -l ์ต์ ๊ณผ socket ์ ํ์ ํฉ์น๋ฉด local ์์ ํน์ ํฌํธ๋ฅผ listening ํ๋ ์์ผ์ ํ์ธํ ์ ์์ผ๋ฉฐ ์๋๋ 80 ํฌํธ๋ฅผ listening ํ๋ 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 ์ ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค.
$ 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 ํฌํธ์ ์ฐ๊ฒฐํ ์์ผ ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
$ 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 ํฌํธ์ ์ฐ๊ฒฐํ ํ๋ก์ธ์ค ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
$ 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))