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é.
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.
>>> 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
Đố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:
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ả:
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