Nắm vững NAT & Port Forwarding: Hướng dẫn thực hành chuyên sâu

Networking tutorial - IT technology blog
Networking tutorial - IT technology blog

Nắm vững NAT & Port Forwarding: Hướng dẫn thực hành chuyên sâu

Với tư cách là một kỹ sư IT, tôi đã xử lý vô số cấu hình mạng, từ các thiết lập cơ bản tại nhà cho đến kiến trúc doanh nghiệp phức tạp. Hai khái niệm cơ bản thường khiến người mới bối rối nhưng lại không thể thiếu trong các hoạt động hàng ngày là: Dịch địa chỉ mạng (Network Address Translation – NAT) và Chuyển tiếp cổng (Port Forwarding).

Từ kinh nghiệm thực tế của mình, việc nắm vững các kỹ năng này là rất quan trọng, vì chúng trực tiếp điều chỉnh cách các dịch vụ giao tiếp cả bên trong và bên ngoài mạng cục bộ của bạn. Sau khi tích hợp kỹ lưỡng các nguyên tắc này vào nhiều hệ thống sản xuất khác nhau trong sáu tháng qua, tôi rất muốn chia sẻ một góc nhìn thực tế về cách thức hoạt động bên trong, lợi ích và ứng dụng hiệu quả của chúng.

So sánh phương pháp tiếp cận: NAT và Port Forwarding

Mặc dù thường được thảo luận cùng nhau, NAT và Port Forwarding phục vụ các vai trò riêng biệt nhưng bổ trợ cho nhau. Việc hiểu rõ chức năng riêng của từng loại là chìa khóa để đánh giá cao sức mạnh tổng hợp của chúng.

Dịch địa chỉ mạng (Network Address Translation – NAT)

Dịch địa chỉ mạng (Network Address Translation – NAT) định cấu hình lại không gian địa chỉ IP. Nó sửa đổi thông tin địa chỉ mạng trong tiêu đề IP của các gói tin khi chúng đi qua một thiết bị định tuyến. Hình thức phổ biến nhất, Source NAT (SNAT)—hay đơn giản là NAT—cho phép nhiều thiết bị trên một mạng cục bộ (LAN) riêng tư chia sẻ một địa chỉ IP công cộng duy nhất.

Hãy hình dung một bưu điện nhộn nhịp. Mỗi cư dân trong một tòa nhà chung cư (mạng riêng của bạn) gửi thư với số căn hộ duy nhất của họ. Tuy nhiên, bưu điện (router của bạn) đóng dấu tất cả thư gửi đi bằng địa chỉ đường phố chính của tòa nhà (IP công cộng của bạn). Khi thư trả lời đến, bưu điện sẽ tự động biết căn hộ nào nên nhận thư đó.

NAT là nền tảng cho:

  • Bảo tồn địa chỉ IP: Với địa chỉ IPv4 là một tài nguyên hữu hạn, NAT cho phép một IP công cộng duy nhất đại diện cho hàng trăm hoặc thậm chí hàng nghìn IP riêng tư.
  • Bảo mật: Theo mặc định, NAT cung cấp một lớp bảo mật cơ bản, hoạt động như một tường lửa đơn giản. Các thiết bị trong mạng riêng tư phần lớn vẫn vô hình đối với internet bên ngoài, vì địa chỉ IP nội bộ của chúng không được phơi bày trực tiếp.

Chuyển tiếp cổng (Port Forwarding – Destination NAT – DNAT)

Port Forwarding, tuy nhiên, là một ứng dụng cụ thể của Destination NAT (DNAT). Nó liên quan đến việc mở một ‘cửa’ (cổng) chuyên dụng trên địa chỉ IP công cộng của bạn và định tuyến bất kỳ lưu lượng truy cập nào đến qua cửa đó tới một thiết bị và cổng được chỉ định trên mạng riêng của bạn.

Mở rộng phép ẩn dụ về bưu điện của chúng ta: nếu bạn điều hành một doanh nghiệp nhỏ từ căn hộ của mình, bạn sẽ hướng dẫn bưu điện chuyển thư gửi đến ‘Phòng Kinh doanh’ (một cổng cụ thể) trực tiếp đến căn hộ của bạn. Thiết lập này cho phép các bên bên ngoài khởi tạo kết nối đến một dịch vụ được lưu trữ trên một thiết bị nội bộ.

Port Forwarding là cần thiết khi bạn cần:

  • Lưu trữ dịch vụ: Chạy một máy chủ web, máy chủ trò chơi, máy chủ SSH hoặc bất kỳ dịch vụ nào khác trên một máy trong mạng riêng của bạn cần được truy cập từ internet.
  • Cho phép truy cập từ xa: Truy cập máy tính cá nhân hoặc bộ lưu trữ mạng của bạn từ bên ngoài nhà.

Nói một cách đơn giản, NAT quản lý các kết nối đi, cho phép nhiều thiết bị nội bộ truy cập internet thông qua một IP công cộng duy nhất. Ngược lại, Port Forwarding xử lý các kết nối đến, định hướng chính xác lưu lượng truy cập bên ngoài đến một máy chủ nội bộ được chỉ định.

Ưu & Nhược điểm

Cả NAT và Port Forwarding đều là những công cụ không thể thiếu, nhưng chúng đi kèm với những lợi thế và cân nhắc riêng.

NAT

  • Ưu điểm:
    • Bảo tồn địa chỉ IPv4: Kéo dài tuổi thọ của IPv4 bằng cách cho phép nhiều thiết bị riêng tư chia sẻ một IP công cộng.
    • Tăng cường bảo mật bằng cách ẩn danh: Cấu trúc liên kết mạng nội bộ và địa chỉ IP bị ẩn khỏi các mạng bên ngoài, khiến việc tấn công trực tiếp vào các máy chủ nội bộ trở nên khó khăn hơn.
    • Đơn giản: Thường được bật theo mặc định trên hầu hết các bộ định tuyến gia đình và văn phòng nhỏ, không yêu cầu cấu hình để truy cập internet cơ bản.
  • Nhược điểm:
    • Phá vỡ kết nối đầu cuối: Các IP nguồn và đích ban đầu bị thay đổi, điều này có thể làm phức tạp một số ứng dụng nhất định (ví dụ: một số giao thức VoIP, trò chơi ngang hàng) mong đợi giao tiếp trực tiếp, không bị thay đổi.
    • Phức tạp trong khắc phục sự cố: Có thể khiến việc theo dõi nguồn gốc lưu lượng truy cập trong các mạng phức tạp trở nên khó khăn hơn do ánh xạ lại địa chỉ IP.
    • Hạn chế kết nối đến: Theo mặc định, các thiết bị bên ngoài không thể khởi tạo kết nối đến các thiết bị nội bộ nếu không có Port Forwarding.

Port Forwarding

  • Ưu điểm:
    • Khả năng truy cập dịch vụ bên ngoài: Cho phép các máy chủ và dịch vụ nội bộ có thể truy cập được từ internet, điều này rất quan trọng để lưu trữ các trang web, máy tính từ xa, VPN và máy chủ trò chơi.
    • Linh hoạt: Cho phép các ứng dụng cụ thể bỏ qua việc NAT chặn mặc định các kết nối đến không mong muốn.
  • Nhược điểm:
    • Rủi ro bảo mật: Mở cổng trên IP công cộng của bạn vốn dĩ tạo ra các điểm vào tiềm năng cho kẻ tấn công. Nếu dịch vụ hoặc thiết bị được chuyển tiếp không được bảo mật đúng cách, nó có thể bị khai thác.
    • Yêu cầu IP nội bộ tĩnh: Để chuyển tiếp đáng tin cậy, thiết bị nội bộ phải có địa chỉ IP riêng tĩnh, hoặc phải cấu hình dự trữ trong DHCP, để đảm bảo bộ định tuyến luôn chuyển tiếp đến máy chủ chính xác.
    • Phụ thuộc vào IP công cộng: Nếu địa chỉ IP công cộng của bạn thay đổi (phổ biến với các IP động từ ISP), các dịch vụ được chuyển tiếp của bạn sẽ không thể truy cập được trừ khi bạn sử dụng dịch vụ Dynamic DNS (DDNS).

Thiết lập được đề xuất

Một mạng được cấu hình tốt sẽ cân bằng giữa khả năng truy cập và bảo mật. Dưới đây là một phương pháp tiếp cận được đề xuất, đặc biệt dành cho người dùng gia đình hoặc doanh nghiệp nhỏ:

  1. NAT mặc định: Giữ NAT được bật trên bộ định tuyến của bạn. Đây là tiêu chuẩn có lý do chính đáng, cung cấp bảo mật cơ bản và bảo tồn IP cho tất cả các thiết bị nội bộ của bạn khi duyệt web.
  2. Port Forwarding tối thiểu: Chỉ chuyển tiếp các cổng khi thực sự cần thiết cho một dịch vụ cụ thể. Mỗi cổng mở là một lỗ hổng tiềm ẩn.
  3. IP nội bộ chuyên dụng: Gán một địa chỉ IP tĩnh cho bất kỳ máy chủ hoặc thiết bị nội bộ nào mà bạn đang chuyển tiếp cổng. Điều này ngăn IP nội bộ thay đổi và làm hỏng các quy tắc Port Forwarding của bạn. Bạn thường có thể thực hiện việc này thông qua DHCP Reservation trên bộ định tuyến của mình hoặc bằng cách cấu hình thủ công một IP tĩnh trên chính thiết bị đó.
  4. Bảo mật nội bộ mạnh mẽ: Đảm bảo thiết bị nhận lưu lượng được chuyển tiếp được vá đầy đủ, chạy tường lửa và sử dụng xác thực mạnh (ví dụ: mật khẩu phức tạp, khóa SSH).
  5. Cân nhắc sử dụng VPN: Để truy cập từ xa vào nhiều dịch vụ hoặc toàn bộ mạng nội bộ, Mạng riêng ảo (VPN) thường an toàn hơn so với việc chuyển tiếp nhiều cổng riêng lẻ. Bạn chỉ chuyển tiếp cổng VPN, sau đó truy cập an toàn các dịch vụ khác qua đường hầm VPN được mã hóa.
  6. Dynamic DNS (DDNS): Nếu Nhà cung cấp dịch vụ Internet (ISP) của bạn cung cấp địa chỉ IP công cộng động, hãy sử dụng dịch vụ DDNS. Dịch vụ này ánh xạ tên máy chủ tĩnh (ví dụ: myserver.ddns.net) tới IP công cộng động của bạn, do đó các dịch vụ của bạn vẫn có thể truy cập được ngay cả khi IP thay đổi.

Hướng dẫn triển khai: Lưu trữ máy chủ web

Hãy cùng tìm hiểu một kịch bản phổ biến: lưu trữ một máy chủ web đơn giản trên một máy trong mạng riêng của bạn và làm cho nó có thể truy cập được từ internet bằng cách sử dụng Port Forwarding. Tôi sẽ giả định một máy chủ dựa trên Linux và giao diện bộ định tuyến gia đình điển hình, mặc dù các nguyên tắc này áp dụng rộng rãi.

Bước 1: Xác định địa chỉ IP của máy chủ nội bộ của bạn

Đầu tiên, bạn cần biết địa chỉ IP riêng của máy đang chạy máy chủ web của bạn. Trên hầu hết các bản phân phối Linux, bạn có thể tìm thấy điều này bằng cách sử dụng ip addr hoặc ifconfig.


# Ví dụ sử dụng ip addr
ip addr show

Tìm một giao diện như eth0 hoặc enpXsX, và ghi lại địa chỉ IP trong dòng inet (ví dụ: 192.168.1.100).

Bước 2: Đảm bảo máy chủ web của bạn đang chạy và lắng nghe

Xác nhận máy chủ web của bạn (ví dụ: Apache, Nginx) đang hoạt động và lắng nghe trên cổng HTTP mặc định (80) hoặc cổng HTTPS (443).


# Ví dụ cho Nginx
sudo systemctl status nginx

# Kiểm tra các cổng đang lắng nghe
sudo netstat -tuln | grep -E ':80|:443'

Bạn sẽ thấy các mục như 0.0.0.0:80 hoặc :::80, cho biết máy chủ đang lắng nghe trên tất cả các giao diện mạng khả dụng.

Bước 3: Truy cập giao diện cấu hình của bộ định tuyến của bạn

Mở trình duyệt web và điều hướng đến địa chỉ IP của bộ định tuyến của bạn (thường là 192.168.1.1, 192.168.0.1 hoặc tương tự). Đăng nhập bằng thông tin đăng nhập quản trị viên của bạn.

Bước 4: Tìm phần Chuyển tiếp cổng

Giao diện bộ định tuyến khác nhau, nhưng hãy tìm các phần như "Port Forwarding," "Virtual Servers," "NAT/Port Forwarding," hoặc "Firewall."

Bước 5: Tạo quy tắc Port Forwarding mới

Bạn thường cần cung cấp thông tin sau để tạo một quy tắc mới:

  • Tên dịch vụ (Tùy chọn): Một tên mô tả như "Máy chủ web HTTP".
  • Cổng ngoài (hoặc Cổng WAN/Cổng dịch vụ): Đây là số cổng trên địa chỉ IP công cộng của bạn nơi các máy khách bên ngoài sẽ kết nối. Đối với HTTP, cổng 80 là tiêu chuẩn. Bạn có thể sử dụng một cổng ngoài thay thế, như 8080, và ánh xạ nó tới cổng nội bộ 80 để tăng tính ẩn danh. Tuy nhiên, lưu ý rằng đây không phải là một biện pháp bảo mật mạnh mẽ.
  • Địa chỉ IP nội bộ (hoặc IP LAN/IP máy chủ): IP riêng tĩnh của máy chủ web của bạn (ví dụ: 192.168.1.100).
  • Cổng nội bộ (hoặc Cổng thiết bị): Số cổng trên máy chủ nội bộ của bạn mà dịch vụ đang lắng nghe (ví dụ: 80 cho HTTP).
  • Giao thức: Chọn TCP, UDP hoặc Cả hai. Đối với máy chủ web, bạn sẽ cần TCP.
  • Bật/Lưu: Đảm bảo quy tắc được bật và lưu các thay đổi của bạn.

Đối với HTTPS, bạn sẽ tạo một quy tắc tương tự cho Cổng ngoài 443, Cổng nội bộ 443 và Giao thức TCP.

Bước 6: Kiểm tra Port Forwarding của bạn

Bây giờ, hãy kiểm tra xem máy chủ web của bạn có thể truy cập được từ internet hay không. Bạn sẽ cần địa chỉ IP công cộng của mình. Bạn có thể tìm thấy điều này bằng cách truy cập một trang web như whatismyip.com từ một thiết bị trong mạng nội bộ của bạn.


# Sử dụng curl từ mạng bên ngoài (ví dụ: kết nối dữ liệu điện thoại của bạn, mạng của bạn bè)
# Thay thế YOUR_PUBLIC_IP bằng địa chỉ IP công cộng thực của bạn
curl http://YOUR_PUBLIC_IP

Nếu mọi thứ được cấu hình đúng cách, curl sẽ trả về nội dung HTML do máy chủ web của bạn cung cấp. Nếu bạn gặp lỗi hết thời gian chờ hoặc từ chối kết nối, hãy kiểm tra lại cài đặt bộ định tuyến của bạn, các quy tắc tường lửa trên máy chủ của bạn và đảm bảo máy chủ đang thực sự chạy.

Ngoài ra, bạn có thể sử dụng telnet để kiểm tra xem cổng có mở hay không:


# Sử dụng telnet từ mạng bên ngoài
telnet YOUR_PUBLIC_IP 80

Một kết nối thành công sẽ hiển thị màn hình trống hoặc thông báo "Connected to YOUR_PUBLIC_IP". Nếu nó bị treo hoặc nói "Connection refused," thì cổng không mở ra bên ngoài.

Kết luận

NAT và Port Forwarding, mặc dù có vẻ đơn giản, nhưng là xương sống cho cách hầu hết các mạng hiện đại giao tiếp với internet. NAT giải quyết một cách tinh tế vấn đề khan hiếm IPv4 và cung cấp một lớp bảo mật cơ bản theo mặc định.

Port Forwarding, đối tác có mục tiêu của nó, mang lại cho chúng ta sự chính xác để phơi bày các dịch vụ cụ thể trong khi vẫn giữ phần còn lại của mạng nội bộ của chúng ta được ẩn. Nắm vững các khái niệm này mang lại sức mạnh to lớn trong việc quản lý quyền truy cập mạng và bảo mật tài sản kỹ thuật số của bạn. Kinh nghiệm của tôi xác nhận rằng việc hiểu các cơ chế này không chỉ là kiến thức lý thuyết mà còn là một kỹ năng thực tế mà bạn sẽ sử dụng liên tục trong bất kỳ vai trò IT nào.

Share: