Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Giao thức FTP

    Rất nhiều anh em kỹ sư mạng từng gặp tình huống trớ trêu: ping tới được FTP server, login thành công, nhưng khi chuyển sang tải file hoặc list thư mục thì… treo luôn. Nguyên nhân thường không phải do cấu hình sai user/pass hay DNS, mà nằm ở chỗ ít ai để ý: chế độ hoạt động của FTP – chủ động (active) hay bị động (passive).
    FTP (File Transfer Protocol) là một giao thức truyền file hoạt động theo mô hình client-server. Điều đặc biệt của FTP là nó sử dụng hai kết nối TCP riêng biệt: một cho kênh điều khiển (control) và một cho kênh dữ liệu (data). Máy khách luôn chủ động mở kết nối điều khiển tới cổng 21 của FTP server, nơi server lắng nghe để nhận lệnh như USER, PASS, LIST, RETR, v.v.
    Tuy nhiên, khi đến lúc truyền dữ liệu – chẳng hạn khi list thư mục hay tải một file – thì FTP phải tạo một kết nối TCP thứ hai hoàn toàn riêng biệt, gọi là kết nối dữ liệu. Đây là lúc câu chuyện “active” và “passive” xuất hiện.
    🎯 FTP Passive Mode – Chế độ Bị Động: Máy khách là người khởi tạo kết nối dữ liệu

    Trong chế độ bị động, server sẽ không tự kết nối về máy khách, mà thay vào đó:
    • Server sẽ chọn một cổng TCP chưa dùng, bắt đầu lắng nghe trên đó.
    • Server gửi lại thông tin về cổng đó cho client thông qua lệnh PORT.
    • Máy khách sẽ dùng cổng bất kỳ đang rảnh của mình để chủ động thiết lập kết nối TCP tới cổng mà server đã cung cấp.
    • Server xác nhận kết nối đến từ đúng client ban đầu và tiến hành truyền dữ liệu.
    Đây là chế độ phổ biến hơn trong môi trường thực tế, vì phù hợp với các hệ thống có tường lửa hoặc thiết bị NAT. Máy khách là bên chủ động thiết lập kết nối, nên từ phía firewall không cần phải cho phép kết nối từ ngoài vào.
    Tuy nhiên, để FTP passive hoạt động tốt, server cần mở sẵn một dải cổng động, ví dụ từ 1024 đến 65535 hoặc một dải cụ thể hơn như 50000-51000, và firewall cần cho phép các cổng này. Nếu không, client sẽ không thể thiết lập được kết nối dữ liệu – dù đăng nhập FTP thành công.
    ⚡ FTP Active Mode – Chế độ Chủ Động: Server là người chủ động mở kết nối về máy khách

    Ngược lại với chế độ passive, trong chế độ chủ động:
    • Máy khách mở một cổng ngẫu nhiên và bắt đầu lắng nghe.
    • Máy khách gửi lệnh PORT để thông báo cho server biết đang lắng nghe trên cổng nào.
    • Server sử dụng cổng 20 (đã cố định theo chuẩn) để tự mở một kết nối TCP trở lại địa chỉ IP và cổng mà client cung cấp.
    • Nếu kết nối thành công, dữ liệu sẽ được truyền.
    Nghe thì có vẻ đơn giản, nhưng đây là ác mộng khi máy khách nằm sau firewall hoặc NAT. Hầu hết các thiết bị bảo mật không cho phép các kết nối “inbound” (từ ngoài vào trong) trừ khi có stateful rule hoặc ALG (Application Layer Gateway) chuyên xử lý FTP. Do đó, FTP active thường bị lỗi trong môi trường doanh nghiệp hoặc khi client đang ở sau modem/router NAT.
    💡 Ví dụ thực tế từ kinh nghiệm triển khai
    • Bạn dựng một FTP server bằng FileZilla hoặc vsftpd cho công ty, nếu không bật chế độ passive và mở đúng dải cổng, người dùng ở ngoài sẽ không thể list thư mục hoặc tải file – dù login thành công.
    • Các firewall như Cisco ASA, FortiGate, hoặc Palo Alto đều có tùy chọn bật FTP inspection/ALG để giúp xử lý tự động lệnh PORT và mở luồng phù hợp. Nhưng nếu tắt tính năng này, bạn sẽ phải cấu hình tường lửa rất thủ công.
    • Khi dùng Wireshark để bắt gói, bạn sẽ thấy lệnh PORT hoặc PASV được gửi qua lại giữa client và server để thông báo thông tin kết nối dữ liệu – đây chính là chìa khóa giúp bạn xác định chế độ nào đang được dùng và vì sao truyền file bị lỗi.

    🔐 Vì sao hiểu rõ hai chế độ này lại quan trọng?

    Nếu bạn đang làm kỹ sư mạng, bảo mật, hoặc quản trị server, việc hiểu cách FTP thiết lập kết nối dữ liệu là bắt buộc:
    • Khi mở cổng firewall, bạn phải biết cần mở cổng nào – 20, 21, hay cả dải passive?
    • Khi cấu hình NAT, bạn cần biết bên nào chủ động, bên nào bị động để đặt đúng quy tắc DNAT/SNAT.
    • Khi debug FTP, bạn phải hiểu là lỗi do user/pass hay do “không mở được cổng dữ liệu”.

    🎯 Kết luận

    FTP là giao thức tưởng chừng như cũ kỹ, nhưng vẫn rất phổ biến – nhất là trong các hệ thống upload ảnh, hệ thống camera, máy CNC, hay giải pháp backup. Hiểu rõ sự khác biệt giữa chế độ chủ động và bị động không chỉ giúp bạn cấu hình đúng, mà còn là cách để thể hiện đẳng cấp troubleshooting chuyên nghiệp của một kỹ sư mạng.
    Nếu bạn đang gặp lỗi FTP, hãy bật Wireshark lên, xem ai đang mở kết nối đến ai – từ đó sẽ hiểu được ngay bạn đang ở chế độ nào và cần cấu hình gì tiếp theo.
    Bạn đã từng "gãy" vì FTP chưa? Dùng chế độ nào là mặc định trong hệ thống của bạn? Comment để anh em VnPro cùng chia sẻ kinh nghiệm nhé!
    ftp #Passive active firewall nat ccna ccnp #NetworkTips vnpro #KỹSưMạng
    Click image for larger version

Name:	FTP.png
Views:	32
Size:	40.6 KB
ID:	431988
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X