Lệnh telnet trong Linux — Kiểm tra kết nối cổng mạng

Bạn đã bao giờ rơi vào tình huống đang quản trị một hệ thống VPS quan trọng mà bỗng nhiên kết nối mạng giữa các server bị gián đoạn, khiến việc kiểm tra cổng dịch vụ trở nên vô cùng khó khăn chưa nhỉ? Với kinh nghiệm của một Senior System Admin, mình hiểu rằng việc xác định nhanh một port có đang mở hay không là cực kỳ quan trọng để xử lý sự cố kịp thời, đúng không? Đó chính là lúc bạn cần đến telnet. Thực tế, telnet là một giao thức mạng được sử dụng để thiết lập kết nối văn bản giữa các máy chủ. Vậy telnet là gì và cách dùng telnet như thế nào để tối ưu hóa công việc quản trị? Trong bài viết này, mình sẽ hướng dẫn bạn chi tiết về telnet Linux cũng như cách kiểm tra cổng kết nối cực kỳ đơn giản. Chắc chắn bạn có thể làm chủ công cụ này chỉ trong vài phút thôi!

Cần chuẩn bị gì trước khi dùng lệnh telnet?

  • Quyền người dùng: Yêu cầu quyền user thường để thực hiện các kết nối kiểm tra cổng (port). Quyền sudo hoặc root chỉ cần thiết khi bạn thực hiện cấu hình dịch vụ telnet server trên hệ thống.
  • Hệ điều hành hỗ trợ: Hỗ trợ hầu hết các bản phân phối Linux (Ubuntu, Debian, CentOS, RHEL, Fedora), macOS và Windows (thông qua Command Prompt hoặc PowerShell).
  • Gói phần mềm cần thiết: Lệnh telnet thường không được cài đặt sẵn trên các phiên bản Linux hiện đại. Bạn cần cài đặt gói telnet bằng các lệnh sau:
    • Đối với Ubuntu, Debian, Kali Linux: sudo apt update && sudo apt install telnet
    • Đối với CentOS, RHEL, Fedora: sudo yum install telnet hoặc sudo dnf install telnet
    • Đối với macOS: Cài đặt thông qua Homebrew bằng lệnh brew install telnet

Cú pháp lệnh telnet là gì?

Lệnh telnet hỗ trợ các dạng cú pháp cơ bản sau trên hệ thống Linux/Unix:

telnet [OPTIONS] HOST [PORT]
telnet [OPTIONS] HOST
# Tài liệu về lệnh telnet

Các tùy chọn của lệnh telnet là gì?

Lệnh telnet cung cấp các tùy chọn để điều chỉnh hành vi kết nối, xác thực và xử lý dữ liệu trong quá trình giao tiếp với máy chủ từ xa.

Tùy chọn ngắn Tùy chọn dài Mô tả
-4 telnet -4 buộc sử dụng IPv4 cho kết nối.
-6 telnet -6 buộc sử dụng IPv6 cho kết nối.
-8 telnet -8 cho phép truyền dữ liệu 8 bit (binary mode).
-E telnet -E tắt tính năng escape character, không cho phép kích hoạt lệnh telnet bằng ký tự đặc biệt.
-K telnet -K tắt việc gửi cookie xác thực Kerberos.
-L telnet -L cho phép truyền tên người dùng từ biến môi trường USER.
-a telnet -a thực hiện xác thực tự động sử dụng thông tin đăng nhập hiện tại.
-b telnet -b địa_chỉ_cục_bộ chỉ định địa chỉ IP cục bộ để sử dụng làm nguồn kết nối.
-d telnet -d bật chế độ debug để hiển thị thông tin chẩn đoán chi tiết.
-e telnet -e ký_tự_thoát đặt ký tự thoát khỏi chế độ telnet (mặc định là Ctrl+]).
-f telnet -f cho phép xác thực bằng Kerberos và chuyển tiếp thông tin xác thực.
-k telnet -k miền chỉ định miền (realm) cho xác thực Kerberos.
-l telnet -l tên_người_dùng chỉ định tên người dùng để gửi tới máy chủ từ xa.
-n telnet -n tệp_lịch_sử ghi lịch sử phiên kết nối vào tệp được chỉ định.
-r telnet -r kích hoạt xác thực Kerberos với chế độ người dùng thô.
-x telnet -x bật mã hóa cho phiên telnet (nếu máy chủ hỗ trợ).

xem thêm: Networking and Communication

Lệnh telnet được sử dụng như thế nào trong thực tế?

Phần dưới đây trình bày các kịch bản kiểm tra kết nối mạng và dịch vụ phổ biến mà quản trị viên hệ thống thường xuyên thực hiện.

telnet là gì? [Kiểm tra kết nối đến một host]

telnet google.com
Trying 142.250.204.46...
Connected to google.com.
Escape character is '^]'.

Lệnh này kiểm tra khả năng phản hồi cơ bản của host qua giao thức mặc định. Trong thực tế, việc này giúp xác nhận máy chủ đích đang hoạt động và có thể nhận kết nối mạng.

telnet {IP} {PORT} là gì? [Kiểm tra cổng dịch vụ cụ thể]

telnet 192.168.1.10 80
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.

Lệnh cho phép kiểm tra xem một cổng (port) cụ thể trên máy chủ đích có đang mở hay không. Trên môi trường production, kỹ thuật này thường dùng để xác minh các dịch vụ như HTTP (80), HTTPS (443) hoặc SSH (22) đã sẵn sàng tiếp nhận kết nối.

telnet {IP} {PORT} báo lỗi Connection refused là gì? [Xác định dịch vụ chưa chạy]

telnet 10.0.0.5 3306
telnet: Unable to connect to remote host: Connection refused

Kết quả này xuất hiện khi kết nối bị từ chối bởi máy chủ đích. Trong thực tế, điều này thường chỉ ra rằng dịch vụ (ví dụ MySQL tại cổng 3306) chưa được khởi chạy hoặc đang bị chặn bởi tường lửa (firewall).

telnet {IP} {PORT} kết hợp timeout là gì? [Kiểm tra độ trễ và firewall]

telnet -w 5 172.16.0.1 22
Trying 172.16.0.1...
Connection timed out.

Tham số -w cho phép thiết lập thời gian chờ tối đa trước khi ngắt kết nối. Trong các tình huống troubleshooting mạng phức tạp, việc sử dụng timeout giúp phân biệt giữa lỗi dịch vụ không phản hồi và lỗi mất gói tin do cấu hình routing hoặc chặn bởi ACL.

telnet kết hợp với echo và pipe là gì? [Gửi dữ liệu thô đến dịch vụ]

echo "GET / HTTP/1.1" | telnet google.com 80
Trying 142.250.204.46...
Connected to google.com.
GET / HTTP/1.1

HTTP/1.1 200 OK
Content-Type: text/html
...

Cách tiếp cận này cho phép gửi một chuỗi dữ liệu thô trực tiếp đến một cổng dịch vụ thông qua pipe. Đây là kỹ thuật nâng cao thường dùng trong script automation để kiểm tra nhanh phản hồi của các giao thức text-based như HTTP hoặc SMTP mà không cần trình duyệt hay công cụ chuyên dụng.

Tại sao lệnh telnet không kết nối được tới máy chủ đích?

Dưới đây là các tình huống lỗi phổ biến phát sinh trong quá trình kiểm tra kết nối mạng thực tế qua giao thức telnet.

Máy chủ đích không phản hồi (Connection timed out)

telnet 192.168.1.50 80
telnet: connect to address 192.168.1.50 port 80: Connection timed out

Lỗi này xảy ra khi gói tin không thể tới được máy chủ đích, thường do tường lửa (firewall) chặn kết nối hoặc địa chỉ IP không tồn tại trong mạng.

Cổng dịch vụ chưa được mở (Connection refused)

telnet 192.168.1.10 3306
telnet: Unable to connect to remote host: Connection refused

Kết nối bị từ chối khi máy chủ đích đã phản hồi nhưng không có dịch vụ nào đang lắng nghe (listening) trên cổng được chỉ định.

telnet google.com 80
-bash: telnet: command not found

Lỗi này xuất hiện khi gói phần mềm telnet client chưa được cài đặt trên bản phân phối Linux đang sử dụng.

Sai lệch về giao thức và độ trễ kết nối

telnet 10.0.0.5 22
Trying 10.0.0.5...

Khi lệnh dừng lại ở trạng thái "Trying", điều này cho thấy gói tin đang bị thất lạc (packet loss) hoặc có sự cố định tuyến trên đường truyền.

Quy trình thực tế dùng telnet để kiểm tra kết nối mạng trong dự án Linux?

Trong kịch bản triển khai ứng dụng web, telnet thường được sử dụng như một công cụ chẩn đoán nhanh để xác định xem các cổng dịch vụ (port) trên server đích có đang mở và sẵn sàng tiếp nhận kết nối hay không.

Bước 1: Kiểm tra khả năng kết nối cơ bản giữa các máy chủ

telnet 192.168.1.10 80

Lệnh này cho phép bạn kiểm tra xem cổng 80 (HTTP) trên máy chủ có đích có đang hoạt động hay không. Nếu kết nối thành công, màn hình sẽ hiển thị trạng thái "Connected to 192.168.1.10".

Bước 2: Xác định lỗi chặn kết nối bởi tường lửa hoặc dịch vụ chưa khởi động

telnet 192.168.1.10 22
Connection refused

Trong trường hợp nhận được thông báo "Connection refused", điều này cho biết máy chủ đích đã từ chối kết nối, có thể do dịch vụ SSH chưa chạy hoặc được cấu hình chặn bởi tường lửa cục bộ.

Bước 3: Kiểm tra phản hồi giao thức từ dịch vụ đích

telnet google.com 80
Trying 142.250.204.46...
Connected to google.com.
GET / HTTP/1.1

Sau khi thiết lập được kết nối thành công, bạn có thể nhập trực tiếp các lệnh giao thức (như HTTP request) để kiểm tra cách dịch vụ phản hồi dữ liệu thực tế.

Việc sử dụng telnet để kiểm tra kết nối trên VPS đòi hỏi sự lưu ý về giao thức bảo mật. Lệnh telnet chỉ hoạt động trên các cổng đang mở và không hỗ trợ mã hóa dữ liệu, dẫn đến rủi ro lộ thông tin nếu dùng để quản trị trực tiếp. Trong các trường hợp kiểm tra dịch vụ, cú pháp telnet [IP_ADDRESS] [PORT] cho phép xác nhận trạng thái lắng nghe của cổng. Ví dụ, lệnh telnet 1.2.3.4 80 sẽ trả về kết nối thành công nếu dịch vụ web đang chạy. Một lỗi phổ biến khi vận hành VPS là nhầm lẫn giữa lỗi kết nối mạng và lỗi do tường lửa chặn cổng. Khi thực hiện telnet mà nhận thông báo "Connection refused", nguyên nhân thường do dịch vụ chưa khởi chạy hoặc quy tắc iptables/ufw trên VPS đang chặn truy cập. Người dùng cần kiểm tra cấu hình dịch vụ trước khi kết luận lỗi hạ tầng mạng.

Những câu hỏi thường gặp về lệnh telnet?

Dưới đây là tổng hợp các tình huống và thắc mắc phổ biến nhất khi người dùng sử dụng lệnh telnet để kiểm tra kết nối mạng.

Làm thế nào để kiểm tra một cổng (port) cụ thể trên máy chủ từ xa?

Bạn có thể sử dụng telnet kết hợp với số cổng để xác định xem cổng đó có đang mở và chấp nhận kết nối hay không.

telnet google.com 80
Connected to google.com.
Escape character is '^]'.

Làm sao để thoát khỏi phiên làm việc telnet đang hoạt động?

Để đóng một kết nối telnet đang chạy, bạn cần sử dụng tổ hợp phím thoát đặc biệt là Ctrl + ] sau đó nhập lệnh exit.

telnet google.com 80
Trying 142.250.190.3:80...
Connected to google.com.
^]
telnet> exit
Connection closed.

Điều gì xảy ra khi cổng mục tiêu đang đóng hoặc bị chặn bởi tường lửa?

Trong trường hợp cổng không mở hoặc bị chặn, lệnh telnet sẽ không thể thiết lập kết nối và thông báo lỗi kết nối hoặc hết thời gian chờ.

telnet 192.168.1.100 22
telnet: Unable to connect to remote host: Connection refused

Lệnh telnet có thể dùng để kiểm tra giao thức HTTP không?

Sau khi kết nối thành công qua telnet, bạn có thể gửi các yêu cầu văn bản thuần túy như lệnh GET để kiểm tra phản hồi từ máy chủ web.

telnet google.com 80
Connected to google.com.
GET / HTTP/1.1
Host: google.com

HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/

Làm thế nào để xem hướng dẫn sử dụng đầy đủ của lệnh telnet?

Bạn có thể sử dụng tham số --help hoặc truy cập trang hướng dẫn manual để xem tất cả các tùy chọn và tham số hỗ trợ.

telnet --help
Usage: telnet [options] [host] [port]
...

Tại sao tôi không tìm thấy lệnh telnet trong hệ thống?

Trên nhiều bản phân phối Linux hiện đại, telnet không được cài đặt mặc định vì lý do bảo mật, bạn cần cài đặt thông qua trình quản lý gói.

sudo apt update
sudo apt install telnet

Telnet là một giao thức mạng cho phép bạn thiết lập kết nối điều khiển từ xa để truy cập và quản lý các máy chủ trong hệ thống. Bạn có thể vô cùng dễ dàng kiểm tra trạng thái hoạt động của một cổng dịch vụ cụ thể thông qua tham số cổng kết nối, hoặc sử dụng các tùy chọn thiết lập để thực hiện chẩn đoán mạng nhanh chóng, đúng không nhỉ? Tất nhiên, việc nắm vững công cụ này sẽ giúp bạn xử lý các sự cố kết nối một cách hiệu quả và chuyên nghiệp hơn rất nhiều. Hy vọng những chia sẻ trên sẽ giúp ích cho quá trình làm việc của bạn. Chúc bạn thành công!