Trang chủTin tứcHướng dẫn chi tiết cách sử dụng lệnh “nc” trong Linux
Hướng dẫn chi tiết cách sử dụng lệnh “nc” trong Linux
Tìm hiểu cách sử dụng lệnh “nc” trong Linux để thiết lập kết nối mạng, chuyển tiếp cổng và thực hiện các tác vụ liên quan đến mạng khác ngay sau đây.

Hiện nay, có rất nhiều các giải pháp phần mềm giúp chuyển file qua lại giữa các máy tính. Tuy nhiên, nếu không thường xuyên phải làm việc này thì các giải pháp điển hình như FTP , SFTP, NFS có thể hơi quá mức cần thiết. Netcat có thể được coi là một giải pháp đặc biệt để truyền file qua mạng cục bộ hoặc qua Internet. Hãy cùng khám phá lệnh nc trong Linux và cách sử dụng nó trong bài viết dưới đây nhé.

Lệnh nc và cách sử dụng trong Linux
Lệnh nc và cách sử dụng trong Linux

I. Lệnh nc là gì?

Trong quá trình quản lý và thao tác với mạng trên hệ điều hành Linux, lệnh nc hay netcat là một công cụ không thể thiếu. Lệnh này không chỉ đơn thuần là một công cụ thiết lập kết nối mạng và truyền dữ liệu, mà nó còn là một công cụ đa năng có thể được sử dụng cho nhiều mục đích khác nhau. Từ việc kiểm tra tính sẵn sàng của các máy chủ đến việc thực hiện các thử nghiệm và debug mạng. 

II. Cách sử dụng lệnh nc trong Linux

Trước khi có thể sử dụng câu lệnh, chúng ta cần hiểu về câu lệnh này.

1. Cài đặt lệnh nc

Trên hầu hết các bản phân phối Linux, lệnh nc đã được cài đặt mặc định. Tuy nhiên nếu phiên bản của bạn không có sẵn, bạn hãy cài đặt gói chứa Netcat như sau:

- Đối với Ubuntu hoặc Debian:

sudo apt update

sudo apt install -y netcat

- Đối với CentOS hoặc RHEL, họ RedHat không bao gồm các biến thể BSD hoặc GNU của Netcat. Vì một lý do nào đó mà RedHat này đi kèm với “nmap-ncat”. Tuy nhiên “nmap-ncat” cũng tương tự như “netcat”, chỉ có vài khác biệt nhỏ trong việc sử dụng câu lệnh nên bạn không cần quá lo về điều này. Để cài đặt, các bạn làm theo sau:

sudo yum update -y

sudo yum install -y nc

2. Cú pháp và các tùy chọn của lệnh nc trong Linux

Netcat có cú pháp đơn giản và dễ hiểu, dễ sử dụng.

nc [options] [destination] [port]

Trong đó, options là các tùy chọn của lệnh. Có một số tùy chọn phổ biến như sau:

  • -l: Lắng nghe trên một cổng cụ thể
  • -p: Xác định cổng sử dụng cụ thể
  • -u: Sử dụng giao thức UDP để kết nối thay vì TCP
  • -v: Hiển thị thông tin chi tiết hơn
  • -o: Ghi nhật kí log vào file
  • -z: Chế độ zero I/O, thường được sử dụng khi quét cổng

Và còn rất nhiều tùy chọn khác để bạn sử dụng. Để biết thêm về các tùy chọn này, bạn có thể tham khảo trong "nc -h" để biết rõ hơn.

Destination và port chính là địa chỉ IP đích để kết nối và cổng port mà bạn muốn sử dụng.

sử dụng lệnh nc trong Linux
Sử dụng lệnh nc trong Linux

>>> Xem thêm: Hướng dẫn sử dụng lệnh “ss” giám sát kết nối mạng trên Linux

III. Thao tác cơ bản với lệnh nc trong Linux

1. Thiết lập kết nối TCP hoặc UDP

Để thiết lập kết nối TCP đến một máy chủ, bạn có thể sử dụng

nc <địa chỉ máy chủ> <cổng>

Bạn hãy thay thế địa chỉ máy chủ bằng Ip máy chủ mà bạn muốn kết nối và cổng mà bạn muốn sử dụng.

Lưu ý: Hãy kiểm tra tường lửa xem cổng mà bạn muốn kết nối đã được mở hay chưa. Nếu cổng mà bạn muốn kết nối chưa được mở, bạn có thể thực hiện mở như sau:

# Nếu tường lửa bạn sử dụng là ufw

sudo ufw allow <port>

# Nếu tường lửa bạn sử dụng là firewalld

sudo firewall-cmd --zone=public --add-port=<port>/tcp --permanent

sudo systemctl reload firewalld

#Nếu tường lửa bạn sử dụng là iptables

sudo iptables -A INPUT -p tcp –dport <port> -j ACCEPT

sudo iptables-save > /etc/sysconfig/iptables

Đối với kết nối UDP chúng ta sử dụng tùy chọn -u:

nc -u <địa chỉ máy chủ> <cổng>

2. Truyền và nhận dữ liệu

Để thực hiện truyền và nhận dữ liệu, chúng ta cần hai thiết bị đầu cuối. Một máy sẽ đóng vai trò là thiết bị gửi và một máy đóng vai trò là thiết bị nhận. Bạn có thể tham khảo mô hình sau để nhìn nhận về quá trình

Mô hình truyền-nhận dữ liệu sử dụng lệnh nc
Mô hình truyền-nhận dữ liệu sử dụng lệnh nc

Đối với máy nhận, bạn thực hiện mở cổng port và thực hiện lệnh sau để lắng nghe dữ liệu trên cổng:

ducmanh287@ubuntusv:~$ nc -l -p 1234

Đối với máy gửi, các bạn làm như sau:

[ducmanh287@localhost ~]$ echo "Heloo Server" | nc 192.168.217.128 1234

Và đây sẽ là kết quả từ máy nhận:

Kết quả của việc truyền-nhận dữ liệu
Kết quả của việc truyền-nhận dữ liệu

Lưu ý: Nếu bạn gặp lỗi như sau thì hãy thực hiện lắng nghe trên máy chủ trước. Lỗi phát sinh do máy chủ chưa lắng nghe mà máy khách đã gửi yêu cầu kết nối khiến cho việc kết nối bị lỗi

[ducmanh287@localhost ~]$ echo "This is messenger" | nc 192.168.217.128 12345

Ncat: Connection refused.

# Sau khi đã lắng nghe trên máy chủ

[ducmanh287@localhost ~]$ echo "This is messenger" | nc 192.168.217.128 1234

3. Kiểm tra kết nối

Để kiểm tra các kết nối chúng ta sẽ sử dụng

nc -z <địa chỉ> <cổng>

Một vài ví dụ:

- Kiểm tra kết nối SSH qua Port 22 

[ducmanh287@localhost ~]$ nc -zv 192.168.217.132 22

Connection to 192.168.217.132 22 port [tcp/ssh] succeeded!

- Kiểm tra kết nối Http qua Port 80

[ducmanh287@localhost ~]$ nc -zv myweb.com 80

Connection to myweb.com (50.6.160.97) 80 port [tcp/http] succeeded!

- Kiểm tra kết nối tới một máy local khác qua port bất kỳ

[ducmanh287@localhost ~]$ nc -zv 192.168.217.128 1234

Ncat: Version 7.92 ( https://nmap.org/ncat )

Ncat: Connected to 192.168.217.128:1234.

Ncat: 0 bytes sent, 0 bytes received in 0.08 seconds.

4. Gửi file sử dụng lệnh nc

Mô hình thực hiện cần hai thiết bị đầu cuối, một máy để gửi file và một máy để nhận file. Qúa trình thực hiện sẽ được làm như sau:

Đối với bên nhận file:

nc -l -p <cổng> > tên_tệp_tin_nhận

Đối với bên gửi file:

nc <địa chỉ máy chủ> <cổng> < tên_tệp_tin_gửi

Lưu ý: Tên tệp tin gửi và nhận phải trùng nhau. Tệp tin gửi sẽ được lấy ở trong thư mục hiện tại của bên gửi và tương tự tệp tin nhận sẽ được lưu ở trong thư mục hiện tại của bên nhận. Bạn cần lắng nghe bên nhận trước sau đó bên gửi mới thực hiện gửi tập tin đi

Kết quả:

Kết quả của việc gửi file bằng lệnh nc
Kết quả của việc gửi file bằng lệnh nc

IV. Một số lưu ý khi sử dụng lệnh nc trong Linux

Khi sử dụng lệnh nc, có một số điểm cần lưu ý để đảm bảo an toàn và hiệu quả trong quản lý mạng:

  • Bảo mật và Rủi ro: Việc sử dụng lệnh nc có thể tạo ra các lỗ hổng bảo mật nếu không được thực hiện cẩn thận. Do đó, khi cài đặt và cấu hình lệnh nc cần tuân thủ quy tắc bảo an toàn để bảo vệ hệ thống khỏi các cuộc tấn công và xâm nhập không mong muốn.
  • Sự cần thiết của quyền truy cập: Một số tùy chọn của lệnh nc yêu cầu quyền truy cập đặc biệt, bao gồm quyền truy cập vào các cổng mạng và các tùy chọn liên quan đến quản lý kết nối. Quản trị viên hệ thống cần phải chú ý và xác minh quyền truy cập trước khi thực hiện các thao tác sử dụng lệnh nc để tránh gặp phải các vấn đề liên quan đến quyền hạn.
  • Thực hành an toàn khi sử dụng: Đảm bảo rằng bạn hiểu rõ về tác động của các lệnh và tùy chọn mà bạn sử dụng, tuân thủ các nguyên tắc an toàn mạng cơ bản như không mở các cổng mạng không cần thiết, không chia sẻ thông tin quan trọng qua mạng một cách không an toàn và thực hiện các biện pháp bảo vệ đối với các kết nối mạng một cách kỹ lưỡng.

V. Tổng kết

Qua bài viết trên, có lẽ bạn cũng đã phần nào hiểu về câu lệnh nc và biết cách sử dụng cơ bản của lệnh nc trong Linux. Lệnh nc là một công cụ mạnh mẽ trong quản lý mạng trên hệ điều hành Linux, cung cấp nhiều tính năng hữu ích cho việc thiết lập kết nối mạng và truyền dữ liệu. Để hiểu rõ hơn về cách sử dụng lệnh này, việc thực hành là rất quan trọng. Thành thạo sử dụng lệnh nc sẽ giúp ích cho bạn rất nhiều trong việc quản lý mạng ở trên hệ điều hành Linux. 

>>> Có thể bạn quan tâm: Lệnh netstat là gì? Cách sử dụng lệnh netstat trên Linux

Tác giả:
author avatar
Mình là Huy, hiện mình đang là kỹ sư hệ thống tại SunCloud. Mình có nhiều năm kinh nghiệm, kiến thức chuyên môn về mạng, hệ thống, điện toán mây và an ninh bảo mật. Mình đã triển khai và vận hành rất nhiều dự án thực tế cho doanh nghiệp, cơ quan. Mình đã đạt được một số chứng chỉ quốc tế như CCNP, LPI, VCP, đồng thời mình vẫn đang tiếp tục học tập để trau dồi kiến thức mỗi ngày. Mình rất yêu thích công nghệ, đam mê chia sẻ những kiến thức, thông tin hữu ích cho mọi người.

Tin tức nổi bật