GNU/Linux >> Belajar Linux >  >> Linux

10 contoh perintah ss Linux untuk memantau koneksi jaringan

ss - statistik soket

Dalam tutorial sebelumnya kita melihat bagaimana menggunakan perintah netstat untuk mendapatkan detail tentang koneksi jaringan/socket. Namun perintah netstat telah lama tidak digunakan lagi dan digantikan oleh perintah ss dari rangkaian alat iproute.

Perintah ss mampu menampilkan detail tentang koneksi jaringan dengan lebih banyak informasi daripada perintah netstat dan lebih cepat. Perintah netstat membaca berbagai file /proc untuk mengumpulkan informasi. Namun pendekatan ini lebih lambat ketika ada banyak koneksi untuk ditampilkan.

Perintah ss mendapatkan informasinya langsung dari ruang kernel. Opsi yang digunakan dengan perintah ss sangat mirip dengan netstat sehingga mudah diganti.

Jadi dalam tutorial ini kita akan melihat beberapa contoh bagaimana menggunakan perintah ss untuk memeriksa koneksi jaringan dan statistik soket.

1. Daftar semua koneksi

Perintah paling sederhana adalah membuat daftar semua koneksi.

$ ss | less
Netid  State      Recv-Q Send-Q   Local Address:Port       Peer Address:Port
u_str  ESTAB      0      0                    * 15545                 * 15544
u_str  ESTAB      0      0                    * 12240                 * 12241
u_str  ESTAB      0      0      @/tmp/dbus-2hQdRvvg49 12726                 * 12159
u_str  ESTAB      0      0                    * 11808                 * 11256
u_str  ESTAB      0      0                    * 15204                 * 15205
.....

Kami menyalurkan output ke less sehingga output dapat digulir. Outputnya akan berisi semua detail koneksi soket tcp, udp, dan unix.

2. Saring koneksi tcp, udp atau unix

Untuk hanya melihat koneksi tcp atau udp atau unix gunakan opsi t, u atau x.

$ ss -t
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port
ESTAB      0      0           192.168.1.2:43839     108.160.162.37:http
ESTAB      0      0           192.168.1.2:43622     199.59.149.201:https
ESTAB      0      0           192.168.1.2:33141      83.170.73.249:ircd
ESTAB      0      0           192.168.1.2:54028     74.125.135.125:xmpp-client
$ ss -t
OR
$ ss -A tcp

Secara default opsi "t" saja yang akan melaporkan hanya koneksi yang "dibuat" atau TERHUBUNG". Opsi ini tidak melaporkan soket tcp yang "MENDENGARKAN". Gunakan opsi '-a' bersama dengan t, untuk melaporkan semuanya sekaligus.

Daftar semua koneksi udp

$ ss -ua
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port
UNCONN     0      0           192.168.1.2:48268                  *:*
UNCONN     0      0           192.168.1.2:56575                  *:*
UNCONN     0      0                     *:40309                  *:*
UNCONN     0      0           192.168.1.2:56879                  *:*
UNCONN     0      0                     *:49014                  *:*
UNCONN     0      0           192.168.1.2:53124                  *:*
UNCONN     0      0             127.0.1.1:domain                 *:*
$ ss -a -A udp
The a option tells ss to report both "CONNECTED" and "LISTENING" sockets. Since UDP is a connection-less protocol, just "ss -u" will not report anything in most cases. Therefore we use the "a" option report all UDP connections (connected and listening).

Demikian pula, gunakan opsi x untuk membuat daftar semua koneksi soket unix.

3. Jangan selesaikan nama host

Untuk mendapatkan output lebih cepat, gunakan opsi "n" untuk mencegah ss menyelesaikan alamat ip ke nama host. Tapi ini akan mencegah resolusi nomor port juga.

$ ss -nt
State      Recv-Q Send-Q      Local Address:Port        Peer Address:Port
ESTAB      0      0             192.168.1.2:43839     108.160.162.37:80
ESTAB      0      0             192.168.1.2:51350      74.125.200.84:443
ESTAB      0      0             192.168.1.2:33141      83.170.73.249:6667
ESTAB      0      0             192.168.1.2:54028     74.125.135.125:5222
ESTAB      0      0             192.168.1.2:48156      66.196.120.44:5050

4. Hanya tampilkan soket pendengar

Ini akan mencantumkan semua soket pendengar. Misalnya server web apache membuka koneksi soket pada port 80 untuk mendengarkan koneksi masuk.

$ ss -ltn
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port
LISTEN     0      5                 127.0.1.1:53                       *:*
LISTEN     0      128               127.0.0.1:631                      *:*
LISTEN     0      128                     ::1:631                     :::*

Perintah di atas mencantumkan semua koneksi "mendengarkan" "tcp". Opsi n menonaktifkan resolusi nama host dari alamat ip yang memberikan output lebih cepat.

Untuk membuat daftar semua koneksi udp yang mendengarkan, ganti t dengan u

$ ss -lun
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port
UNCONN     0      0                 127.0.1.1:53                       *:*
UNCONN     0      0                         *:68                       *:*
UNCONN     0      0               192.168.1.2:123                      *:*
UNCONN     0      0                 127.0.0.1:123                      *:*
UNCONN     0      0                         *:123                      *:*
UNCONN     0      0                         *:5353                     *:*
UNCONN     0      0                         *:47799                    *:*
UNCONN     0      0                         *:25322                    *:*
UNCONN     0      0                        :::54310                   :::*
.....

5. Cetak nama proses dan pid

Untuk mencetak nama proses/pid yang memiliki koneksi, gunakan opsi p

$ ss -ltp
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port
LISTEN     0      100           127.0.0.1:smtp                   *:*
LISTEN     0      128           127.0.0.1:9050                   *:*
LISTEN     0      128                   *:90                     *:*
LISTEN     0      128                   *:db-lsp                 *:*        users:(("dropbox",3566,32))
LISTEN     0      5             127.0.0.1:6600                   *:*
LISTEN     0      128           127.0.0.1:9000                   *:*        users:(("php5-fpm",1620,0),("php5-fpm",1619,0))

Pada output di atas, kolom terakhir berisi nama proses dan pid. Dalam contoh ini dnsmasq adalah nama proses dan 1299 adalah pidnya.

$ sudo ss -ltp
[sudo] password for enlightened:
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port
LISTEN     0      100           127.0.0.1:smtp                   *:*        users:(("master",2051,12))
LISTEN     0      128                   *:90                     *:*        users:(("nginx",1701,6),("nginx",1700,6),("nginx",1699,6),("nginx",1697,6),("nginx",1696,6))
LISTEN     0      5             127.0.0.1:6600                   *:*        users:(("mpd",2392,5))
LISTEN     0      128           127.0.0.1:9000                   *:*        users:(("php5-fpm",1620,0),("php5-fpm",1619,0),("php5-fpm",1616,7))
LISTEN     0      16                    *:2633                   *:*        users:(("oned",1853,16))
LISTEN     0      50            127.0.0.1:mysql                  *:*        users:(("mysqld",1095,10))
LISTEN     0      5             127.0.1.1:domain                 *:*        users:(("dnsmasq",1347,5))
LISTEN     0      32                    *:ftp                    *:*        users:(("vsftpd",1051,3))
LISTEN     0      128                   *:ssh                    *:*        users:(("sshd",1015,3))
LISTEN     0      128           127.0.0.1:ipp                    *:*        users:(("cupsd",688,11))
LISTEN     0      128                  :::http                  :::*        users:(("apache2",5322,4),("apache2",5321,4),("apache2",5317,4),("apache2",5316,4),("apache2",5313,4),("apache2",2505,4))
LISTEN     0      128                  :::ssh                   :::*        users:(("sshd",1015,4))
LISTEN     0      128                 ::1:ipp                   :::*        users:(("cupsd",688,10))

6. Cetak ringkasan statistik

Opsi s mencetak statistik.

$ ss -s
Total: 526 (kernel 0)
TCP:   10 (estab 7, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0
Transport Total     IP        IPv6
*	  0         -         -
RAW	  0         0         0
UDP	  15        9         6
TCP	  10        9         1
INET	  25        18        7
FRAG	  0         0         0

7. Tampilkan informasi pengatur waktu

Dengan opsi '-o', informasi waktu dari setiap koneksi akan ditampilkan. Informasi pengatur waktu memberi tahu berapa lama dengan

$ ss -tn -o
State      Recv-Q Send-Q      Local Address:Port        Peer Address:Port
ESTAB      0      0             192.168.1.2:43839     108.160.162.37:80
ESTAB      0      0             192.168.1.2:36335     204.144.140.26:80     timer:(keepalive,26sec,0)
ESTAB      0      0             192.168.1.2:33141      83.170.73.249:6667
ESTAB      0      0             192.168.1.2:58857      74.121.141.84:80     timer:(keepalive,23sec,0)
ESTAB      0      0             192.168.1.2:42794     173.194.40.239:80     timer:(keepalive,32sec,0)

8. Hanya tampilkan koneksi soket IPv4 atau IPv6

Untuk hanya menampilkan koneksi soket IPv4 gunakan opsi '-f inet' atau '-4'.

$ ss -tl -f inet
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port
LISTEN     0      100           127.0.0.1:smtp                   *:*
LISTEN     0      128           127.0.0.1:9050                   *:*
LISTEN     0      128                   *:90                     *:*
LISTEN     0      128                   *:db-lsp                 *:*
LISTEN     0      5             127.0.0.1:6600                   *:*

Untuk hanya menampilkan koneksi IPv6 gunakan opsi '-f inet6' atau '-6'.

$ ss -tl6
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port
LISTEN     0      100                 ::1:smtp                  :::*
LISTEN     0      128                  :::12865                 :::*
LISTEN     0      128                  :::http                  :::*
LISTEN     0      128                  :::ssh                   :::*
LISTEN     0      128                 ::1:ipp                   :::*

9. Memfilter koneksi menurut status tcp

Perintah ss mendukung filter yang dapat digunakan untuk menampilkan koneksi tertentu saja. Ekspresi filter harus diberi akhiran setelah semua opsi. Perintah ss menerima filter dalam format berikut.

$ ss [ OPTIONS ] [ STATE-FILTER ] [ ADDRESS-FILTER ]

Berikut adalah beberapa contoh cara memfilter koneksi soket berdasarkan status soket.
Untuk menampilkan semua soket tcp IPv4 yang berada dalam status "terhubung".

$ ss -t4 state established
Recv-Q Send-Q         Local Address:Port             Peer Address:Port
0      0                192.168.1.2:54436          165.193.246.23:https
0      0                192.168.1.2:43386          173.194.72.125:xmpp-client
0      0                192.168.1.2:38355           199.59.150.46:https
0      0                192.168.1.2:56198          108.160.162.37:http

Tampilkan soket dengan status waktu tunggu

$ ss -t4 state time-wait
Recv-Q Send-Q         Local Address:Port             Peer Address:Port
0      0                192.168.1.2:42261           199.59.150.39:https
0      0                  127.0.0.1:43541               127.0.0.1:2633

Status dapat berupa salah satu dari berikut

1. established
2. syn-sent
3. syn-recv
4. fin-wait-1
5. fin-wait-2
6. time-wait
7. closed
8. close-wait
9. last-ack
10. closing
11. all - All of the above states
12. connected - All the states except for listen and closed
13. synchronized - All the connected states except for syn-sent
14. bucket - Show states, which are maintained as minisockets, i.e. time-wait and syn-recv.
15. big - Opposite to bucket state.

Perhatikan bahwa sebagian besar status seperti syn-sent, syn-recv tidak akan menampilkan soket apa pun, karena soket tetap dalam status tersebut untuk waktu yang sangat singkat. Sebaiknya gunakan perintah watch untuk mendeteksi status soket seperti itu secara real time.

Ini contohnya

$ watch -n 1 "ss -t4 state syn-sent"

Setelah menjalankan perintah di atas, coba buka beberapa situs web di browser atau unduh sesuatu dari beberapa url. Segera Anda akan melihat koneksi soket muncul di output, tetapi untuk waktu yang sangat singkat.

Every 1.0s: ss -t4 state syn-sent                   Tue Apr  1 10:07:33 2014
Recv-Q Send-Q           Local Address:Port               Peer Address:Port
0      1                  192.168.1.2:55089            202.79.210.121:https
0      1                  192.168.1.2:33733             203.84.220.80:https
0      1                  192.168.1.2:36240             106.10.198.33:https

10. Filter koneksi berdasarkan alamat dan nomor port

Selain status soket tcp, perintah ss juga mendukung pemfilteran berdasarkan alamat dan nomor port soket. Contoh berikut menunjukkan hal itu.

Tampilkan semua koneksi soket dengan sumber atau port tujuan ssh.

$ ss -at '( dport = :ssh or sport = :ssh )'
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port
LISTEN     0      128                   *:ssh                    *:*
LISTEN     0      128                  :::ssh                   :::*

Soket dengan port tujuan 443 atau 80

$ ss -nt '( dst :443 or dst :80 )'
State      Recv-Q Send-Q      Local Address:Port        Peer Address:Port
ESTAB      0      0             192.168.1.2:58844      199.59.148.82:443
ESTAB      0      0             192.168.1.2:55320     165.193.246.23:443
ESTAB      0      0             192.168.1.2:56198     108.160.162.37:80
ESTAB      0      0             192.168.1.2:54889    192.241.177.148:443
ESTAB      0      0             192.168.1.2:39893      173.255.230.5:80
ESTAB      0      0             192.168.1.2:33440      38.127.167.38:443

Sintaks berikut juga akan berfungsi

$ ss -nt dst :443 or dst :80

Contoh lainnya

# Filter by address
$ ss -nt dst 74.125.236.178
# CIDR notation is also supported
$ ss -nt dst 74.125.236.178/16
# Address and Port combined
$ ss -nt dst 74.125.236.178:80

Port juga dapat difilter dengan opsi dport/sport. Nomor port harus diawali dengan ":".

$ ss -nt dport = :80
State      Recv-Q Send-Q      Local Address:Port        Peer Address:Port
ESTAB      0      0             192.168.1.2:56198     108.160.162.37:80
ESTAB      0      0             192.168.1.2:39893      173.255.230.5:80
ESTAB      0      0             192.168.1.2:55043     74.125.236.178:80

Di atas sama dengan> ss -nt dst :80

Beberapa contoh pemfilteran lainnya

# source address is 127.0.0.1 and source port is greater than 5000
$ ss -nt src 127.0.0.1 sport gt :5000
# local smtp (port 25) sockets
$ sudo ss -ntlp sport eq :smtp
# port numbers greater than 25
$ sudo ss -nt sport gt :1024
# sockets with remote ports less than 100
$ sudo ss -nt dport \< :100
# connections to remote port 80
$ sudo ss -nt state connected dport = :80

Operator berikut didukung saat membandingkan nomor port

<= or le : Less than or equal to port
>= or ge : Greater than or equal to port
== or eq : Equal to port
!= or ne : Not equal to port
< or gt : Less than to port
> or lt : Greater than to port

Ringkasan

Contoh di atas mencakup sebagian besar dari apa yang didukung oleh perintah ss. Untuk informasi lebih lanjut, periksa halaman manual.

Dokumentasi sintaks filter dapat ditemukan dalam paket iproute2-doc yang dapat diinstal pada sistem debian/ubuntu

$ sudo apt-get install iproute2-doc

File /usr/share/doc/iproute2-doc/ss.html berisi detail tentang sintaks filter perintah ss.


Linux
  1. sa Contoh Perintah di Linux

  2. w Contoh Perintah di Linux

  3. Contoh Perintah ac di Linux

  1. 7 Contoh Perintah Linux df

  2. Contoh Perintah df di Linux

  3. du Contoh Perintah di Linux

  1. Contoh Perintah rm di Linux

  2. Contoh Perintah ps di Linux

  3. Contoh Perintah dsniff di Linux