Tại sao cần quản lý các kết nối đến máy chủ Linux?
Việc giám sát các kết nối mạng đến máy chủ Linux là một trong những nhiệm vụ quan trọng nhất của system admin. Việc này giúp kiểm soát bảo mật máy chủ, phát hiện các kết nối bất thường và tối ưu hóa hiệu suất hệ thống Linux.
Bài viết này sẽ cung cấp các bạn hướng dẫn chi tiết về 3 lệnh mạnh mẽ nhất để quản lý các kết nối mạng:
- netstat
- ss
- lsof
Chúng ta sẽ tìm hiểu:
- Các trường hợp sử dụng thực tế.
- Lệnh và tùy chọn của các lệnh.
- Cách phân tích dữ liệu đầu ra của mỗi lệnh.
Contents
1. Lệnh netstat: Quản lý kết nối mạng truyền thống
1.1. netstat là gì?
netstat (network statistics) là công cụ dòng lệnh hiển thị thông tin về các kết nối mạng, bảng định tuyến, thống kê network interface, và các socket mở.
1.2. Lệnh cơ bản của netstat
| Lệnh | Chức năng |
| netstat -a | Hiển thị tất cả các kết nối mạng |
| netstat -t | Hiển thị các kết nối TCP |
| netstat -u | Hiển thị các kết nối UDP |
| netstat -p | Hiển thị tiến trình và PID liên quan |
| netstat -lt | Liệt kê các kết nối TCP đang lắng nghe |
| netstat -lu | Liệt kê các kết nối UDP đang lắng nghe |
| netstat -s | Hiển thị thống kê mạng |
| netstat -r | Hiển thị bảng định tuyến |
1.3. Ví dụ thực tế với netstat
1. Hiển thị tất cả các kết nối mạng đang hoạt động
netstat -a
Giải thích: Hiển thị danh sách tất cả các kết nối TCP và UDP đang hoạt động, bao gồm cả các socket lắng nghe.

2. Hiển thị thông tin về các kết nối TCP đang lắng nghe
netstat -lt
Giải thích: Hiển thị thông tin về tất cả các cổng TCP đang lắng nghe trên máy chủ.

3. Hiển thị PID và tên tiến trình của các kết nối
netstat -p
Giải thích: Giúp xác định chính xác ứng dụng nào đang sử dụng một cổng cụ thể.

4. Để kiểm tra trạng thái của tất cả các network interface và các thông tin liên quan (như số lượng gói tin đã nhận, đã gửi, bị mất, lỗi, v.v.), bạn có thể sử dụng lệnh:
netstat -i

2. Lệnh ss: Công cụ mạnh mẽ thay thế netstat
2.1. ss là gì?
ss (socket statistics) là phiên bản nâng cấp của netstat, có khả năng hiển thị thông tin về các socket nhanh hơn, chi tiết hơn và không yêu cầu quyền root.
2.2. Lệnh cơ bản của ss
| Lệnh | Chức năng |
| ss -t | Hiển thị các kết nối TCP |
| ss -u | Hiển thị các kết nối UDP |
| ss -l | Liệt kê các kết nối đang lắng nghe |
| ss -p | Hiển thị thông tin tiến trình (PID) |
| ss -n | Hiển thị địa chỉ IP dạng số thay vì tên |
| ss -s | Thống kê tóm tắt về các kết nối |
| ss -t state established | Hiển thị các kết nối TCP đã thiết lập |
2.3. Ví dụ thực tế với ss
1. Hiển thị tất cả các kết nối TCP đang hoạt động
ss -t
2. Hiển thị tất cả các kết nối UDP đang hoạt động
ss -u
3. Hiển thị các socket đang lắng nghe
ss -l
Giải thích: Liệt kê tất cả các cổng mà máy chủ đang lắng nghe.

4. Hiển thị các socket với thông tin tiến trình liên quan
ss -p

3. Lệnh lsof: Xem các files và socket đang mở bởi các tiến trình
3.1. lsof là gì?
lsof (list open files) là công cụ hiển thị danh sách các files và socket đang được mở bởi các tiến trình trên máy chủ.
3.2. Lệnh cơ bản của lsof
| Lệnh | Chức năng |
| lsof -i | Liệt kê tất cả các kết nối mạng |
| lsof -i :80 | Hiển thị các kết nối trên cổng 80 |
| lsof -i tcp | Liệt kê các kết nối TCP |
| lsof -i udp | Liệt kê các kết nối UDP |
| lsof -p <PID> | Hiển thị các tệp và socket của một PID |
| lsof +D /var/log | Liệt kê các files trong thư mục /var/log |
3.3. Ví dụ thực tế với lsof
1. Hiển thị các kết nối đến cổng 80
lsof -i :80
Giải thích: Hiển thị danh sách tất cả các kết nối đến cổng HTTP (80) đang được sử dụng bởi các tiến trình.

2. Liệt kê tất cả các kết nối TCP
lsof -i tcp
Giải thích: Hiển thị các kết nối TCP đang mở.

3. Hiển thị tất cả các kết nối của một tiến trình cụ thể
lsof -p <PID>
Giải thích: Hiển thị các kết nối của một PID cụ thể.

Khi nào sử dụng netstat, ss và lsof?
| Tình huống | Sử dụng lệnh nào? |
| Liệt kê tất cả các kết nối | ss -t hoặc netstat -a |
| Xem thông tin về cổng cụ thể | lsof -i :80 |
| Xem PID của tiến trình | netstat -p hoặc ss -p |
| Liệt kê các socket đang lắng nghe | ss -l hoặc netstat -lt |
| Xác định tệp nào đang mở | lsof |
| Xem thống kê giao diện mạng | netstat -i hoặc ss -s |
Kết luận
- netstat: Công cụ cơ bản, dễ sử dụng để liệt kê các kết nối mạng.
- ss: Công cụ nhanh hơn, mạnh mẽ hơn netstat, với nhiều tính năng tiên tiến hơn.
- lsof: Công cụ mạnh mẽ nhất để hiển thị các kết nối mạng và các tệp được mở bởi các tiến trình.
Bằng cách thành thạo các lệnh này, bạn có thể:
- Xác định tiến trình nào đang sử dụng cổng nào.
- Phát hiện kết nối bất thường.
- Giám sát lưu lượng mạng.
Bạn đã sẵn sàng sử dụng các lệnh này trong máy chủ Linux của bạn chưa?
Bạn hãy làm thực hành với các ví dụ trong bài viết này. Nếu bạn gặp khó khăn, hãy để lại bình luận để được hỗ trợ, nếu bạn thấy bài viết hữu ích, hãy chia sẻ bài viết với mọi người nhé!


