NAT Traversal – Giải pháp cho IPsec Tunnel đi qua các thiết bị NAT (modem, firewall)

Để thiết lập 1 VPN tunnel thì cần trải qua 2 phase:

Phase 1: Sử dụng giao thức ISAKMP (nằm trên L4, luôn sử dụng giao thức truyền tải bên dưới là UDP port 500)

Phase 2: Sử dụng giao thức IPsec có 2 phiên bản là ESP và AH. Trong đó AH không sử dụng được nếu có NAT/PAT device ở giữa vì nó check integrity dựa vào IP header mà các trường như địa chỉ sẽ chắn chắn bị thay đổi khi có NAT/PAT.

ESP sẽ đóng gói toàn bộ TCP/UDP bên trong.  Tuy nhiên, trong ESP header lại không có port giống như TCP/UDP. Đây là điểm khác biệt của ESP với ISAKMP và gây ra vấn đề khi thiết lập IPsec tunnel đi qua thiết bị thực hiện NAT overload (PAT), do không có port để map trong bảng NAT.

Giải quyết với NAT-T.

1. Hai đầu thiết bị kiểm tra xem có hỗ trợ NAT-T không thông qua 2 bản tin số 1 và 2  trong ISAKMP Main Mode.

2. Nếu cả 2 đều hỗ trợ NAT-T, 2 thiết bị kiểm tra trên đường truyền có tồn tại thiết bị NAT không. Quá trình này được gọi là NAT-D (NAT Discovery), cụ thể có 2 bản tin NAT-D được gửi, nội dung là giá trị hash của ip và port (bản tin đầu chưa thông tin src.ip + src.port, bản tin sau chứa dst.ip + dst.port). Thiết bị phía nhận kiểm tra hash xem có tồn tại thiết bị NAT ở giữa không.

3. Nếu có thiết bị PAT ở giữa, NAT-T thông qua các bản tin ISAKMP Main Mode  số 5 và 6, mục đích để ISAKMP chuyển từ dùng UDP port 500 sang dùng UDP port 4500, đồng thời cũng đóng gói Quick Mode (Phase 2 Ipsec) vào trong UDP port 4500 (cả src.port và dst.port đều là 4500).

4. Khi đi qua thiết bị PAT, src.port 4500 được đổi thành random high port, dst.port giữ nguyên.

Điểm khác biệt của NAT-T so với IPsec over UDP:

– NAT-T: chỉ đóng gói bản tin ESP vào UDP 4500 khi gặp phải PAT. NAT-T luôn luôn dùng port 4500, không cấu hình thay đổi được.

– IPsec over UDP: luôn đóng gói vào UDP 10000, giá trị port 10000 có thể thay đổi được.

Tham khảo:

https://supportforums.cisco.com/document/64281/how-does-nat-t-work-ipsec

https://supportforums.cisco.com/discussion/11028366/how-nat-t-works-ipsec

Leave a comment