Giới thiệu
Trong lab này, bạn sẽ học cách sử dụng lệnh ss
trong Linux để khám phá các kết nối mạng, phân tích thống kê socket và hiểu trạng thái của các socket mạng. Lệnh ss
là một công cụ mạnh mẽ cung cấp thông tin chi tiết về các TCP, UDP và Unix domain socket, cho phép bạn khắc phục các sự cố liên quan đến mạng và giám sát hoạt động của hệ thống.
Bạn sẽ bắt đầu bằng cách hiểu mục đích và cú pháp của lệnh ss
, bao gồm các tùy chọn khác nhau có sẵn để lọc và hiển thị các loại socket cụ thể. Sau đó, bạn sẽ khám phá các kết nối mạng bằng lệnh ss
, học cách xác định các kết nối đang hoạt động, địa chỉ cục bộ và từ xa của chúng, và các tiến trình liên quan đến chúng. Cuối cùng, bạn sẽ đi sâu hơn vào việc phân tích thống kê và trạng thái socket, thu được thông tin chi tiết về hiệu suất và hành vi của các kết nối mạng của bạn.
Hiểu Mục Đích và Cú Pháp của Lệnh ss
Trong bước này, bạn sẽ tìm hiểu về mục đích và cú pháp của lệnh ss
trong Linux. Lệnh ss
là một công cụ mạnh mẽ được sử dụng để hiển thị thông tin về các socket mạng, bao gồm TCP, UDP và Unix domain socket.
Để bắt đầu, hãy khám phá cú pháp cơ bản của lệnh ss
:
sudo ss [options]
Các tùy chọn phổ biến nhất được sử dụng với lệnh ss
là:
-t
: Hiển thị TCP socket-u
: Hiển thị UDP socket-x
: Hiển thị Unix domain socket-n
: Không phân giải tên dịch vụ-a
: Hiển thị tất cả socket (đang lắng nghe và không lắng nghe)-l
: Chỉ hiển thị các socket đang lắng nghe-p
: Hiển thị tiến trình đang sử dụng socket
Hãy thử một vài ví dụ để hiểu rõ hơn về lệnh ss
:
sudo ss -t
Ví dụ đầu ra:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:*
ESTAB 0 0 172.17.0.2:36578 172.17.0.1:22
Lệnh này hiển thị thông tin về tất cả TCP socket, bao gồm trạng thái của kết nối, số byte đã nhận và gửi, địa chỉ cục bộ và từ xa và các cổng được sử dụng.
sudo ss -u
Ví dụ đầu ra:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
UNCONN 0 0 172.17.0.2:41378 8.8.8.8:53
Lệnh này hiển thị thông tin về tất cả UDP socket, bao gồm địa chỉ và cổng cục bộ và từ xa.
sudo ss -x
Ví dụ đầu ra:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 4096 /run/dbus/system_bus_socket *:*
LISTEN 0 4096 /run/systemd/journal/stdout *:*
Lệnh này hiển thị thông tin về tất cả Unix domain socket, được sử dụng để giao tiếp giữa các tiến trình trong cùng một hệ thống.
Bằng cách hiểu mục đích và cú pháp của lệnh ss
, bạn có thể phân tích và khắc phục hiệu quả các kết nối mạng trên hệ thống Linux của mình.
Khám Phá Các Kết Nối Mạng Sử Dụng Lệnh ss
Trong bước này, bạn sẽ học cách sử dụng lệnh ss
để khám phá và phân tích các kết nối mạng trên hệ thống Linux của bạn.
Hãy bắt đầu bằng cách hiển thị tất cả các kết nối mạng đang hoạt động:
sudo ss -a
Ví dụ đầu ra:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:*
ESTAB 0 0 172.17.0.2:36578 172.17.0.1:22
UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
UNCONN 0 0 172.17.0.2:41378 8.8.8.8:53
Lệnh này hiển thị tất cả các socket đang hoạt động, bao gồm cả socket đang lắng nghe và không lắng nghe.
Để chỉ hiển thị các socket đang lắng nghe, bạn có thể sử dụng tùy chọn -l
:
sudo ss -l
Ví dụ đầu ra:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:*
LISTEN 0 4096 /run/dbus/system_bus_socket *:*
LISTEN 0 4096 /run/systemd/journal/stdout *:*
Lệnh này hiển thị tất cả các socket đang lắng nghe trên hệ thống của bạn, đang chờ các kết nối đến.
Để hiển thị tiến trình đang sử dụng một socket cụ thể, bạn có thể sử dụng tùy chọn -p
:
sudo ss -ltp
Ví dụ đầu ra:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:* users:(("redis-server",pid=520,fd=6))
LISTEN 0 4096 /run/dbus/system_bus_socket *:* users:(("dbus-daemon",pid=518,fd=10))
LISTEN 0 4096 /run/systemd/journal/stdout *:* users:(("systemd-journal",pid=516,fd=13))
Lệnh này hiển thị ID tiến trình và tên của tiến trình đang sử dụng mỗi socket đang lắng nghe.
Bằng cách khám phá đầu ra của lệnh ss
, bạn có thể thu được thông tin chi tiết có giá trị về các kết nối mạng trên hệ thống Linux của mình, điều này có thể hữu ích cho mục đích khắc phục sự cố và giám sát.
Phân Tích Thống Kê và Trạng Thái Socket bằng Lệnh ss
Trong bước này, bạn sẽ học cách sử dụng lệnh ss
để phân tích thống kê và trạng thái socket trên hệ thống Linux của bạn.
Hãy bắt đầu bằng cách hiển thị thông tin chi tiết về TCP socket:
sudo ss -t -i
Ví dụ đầu ra:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 172.17.0.2:36578 172.17.0.1:22
cubic wscale:7,7 rto:200 rtt:0.025/0.011 ato:40 mss:1460 pmtu:1500 rcvmss:1460 advmss:1460 cwnd:10 bytes_acked:1392 bytes_received:0 segs_out:18 segs_in:1 send 1.00Mbps rcv_space:29200
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:*
cubic wscale:7,7 rto:200 rtt:0.025/0.011 ato:40 mss:536 pmtu:1500 rcvmss:536 advmss:1460 cwnd:10 bytes_acked:1392 bytes_received:0 segs_out:18 segs_in:1 send 1.00Mbps rcv_space:29200
Lệnh này hiển thị thông tin chi tiết về mỗi TCP socket, bao gồm trạng thái socket, kích thước hàng đợi gửi và nhận, địa chỉ cục bộ và từ xa và các thống kê socket khác nhau như thuật toán kiểm soát tắc nghẽn, chia tỷ lệ cửa sổ, thời gian khứ hồi và hơn thế nữa.
Để hiển thị trạng thái của tất cả các socket, bạn có thể sử dụng lệnh ss
với tùy chọn -o
:
sudo ss -o
Ví dụ đầu ra:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Timer
ESTAB 0 0 172.17.0.2:36578 172.17.0.1:22 timer:(keepalive,14sec,0)
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:* timer:(timewait,60.0)
UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* timer:(off,0)
UNCONN 0 0 172.17.0.2:41378 8.8.8.8:53 timer:(off,0)
Lệnh này hiển thị trạng thái của tất cả các socket, bao gồm thông tin hẹn giờ cho mỗi socket.
Bằng cách phân tích đầu ra của lệnh ss
với các tùy chọn -t -i
và -o
, bạn có thể hiểu sâu hơn về các kết nối mạng trên hệ thống Linux của mình, điều này có thể hữu ích cho việc khắc phục sự cố và tối ưu hóa hiệu suất.
Tóm tắt
Trong lab này, trước tiên bạn đã tìm hiểu về mục đích và cú pháp của lệnh ss
trong Linux. Lệnh ss
là một công cụ mạnh mẽ được sử dụng để hiển thị thông tin về các socket mạng, bao gồm TCP, UDP và Unix domain socket. Bạn đã khám phá các tùy chọn phổ biến cho lệnh ss
, chẳng hạn như -t
cho TCP socket, -u
cho UDP socket và -x
cho Unix domain socket. Bạn cũng đã học cách sử dụng lệnh ss
để hiển thị thông tin chi tiết về các kết nối mạng, bao gồm trạng thái của kết nối, số byte đã nhận và gửi, và địa chỉ và cổng cục bộ và từ xa.
Tiếp theo, bạn đã học cách sử dụng lệnh ss
để phân tích thống kê và trạng thái socket. Lệnh ss
cung cấp rất nhiều thông tin về trạng thái hiện tại của các kết nối mạng, có thể hữu ích cho việc khắc phục sự cố và giám sát các sự cố mạng.