ASA hairpin: ra internet hay nhánh VPN site-to-site?
Pool máy khách có thể đi ra internet hoặc vào một VPN site. Hãy quyết định nhánh nào bạn cần trước khi viết NAT, rồi kiểm tra tuyến, bộ chọn và đường phản hồi.
Hai người dùng truy cập từ xa sau cùng một ASA có thể gửi lưu lượng ra cùng một giao diện ngoài và nhận cách xử lý hoàn toàn khác nhau. Một người đi đến một trang web công cộng, nên gói cần dịch nguồn và tuyến internet. Người kia đi đến một máy chủ sau đường hầm site-to-site cũng kết thúc trên giao diện đó, nên gói cần danh tính, bộ chọn đường hầm khớp và đường quay về pool máy khách. Quyền cho cùng một giao diện là điều kiện tiên quyết cho cả hai và không là giải pháp cho bên nào.
Hai nhánh, một giao diện
Hãy quyết định bạn đang xây nhánh nào trước khi gõ một quy tắc NAT, vì các quy tắc không thể hoán đổi cho nhau. Nhánh A là máy khách đến internet: địa chỉ pool vào, địa chỉ công cộng đã dịch ra, quay lại qua cùng giao diện. Nhánh B là máy khách đến một tiền tố riêng ở phía bên kia của một đối tác IPsec khác: địa chỉ pool được giữ nguyên, mã hóa lại và chuyển đến một đối tác phải biết cách trả lời pool.
Điều cả hai cần trước tiên là quyền cho cùng một giao diện. Không có nó, ASA từ chối chuyển tiếp một gói ra khỏi giao diện mà nó đã đến, và lỗi trông giống vấn đề định tuyến hơn là vấn đề chính sách:
same-security-traffic permit intra-interface
Dòng duy nhất đó cho phép một bố cục chuyển tiếp, như tài liệu tham chiếu NAT của ASA mô tả cho các đường qua cùng giao diện. Nó không thêm tuyến máy khách, không cấp quyền cho tài nguyên, không dịch địa chỉ và không thương lượng bộ chọn IPsec, nên hãy mong phải thêm ba hoặc bốn thứ nữa sau đó và đừng đọc việc nó được chấp nhận như tiến bộ.
Nhánh A: máy khách muốn internet
Để ra internet, địa chỉ pool phải thôi là riêng tư trước khi gói rời thiết bị. Trong một thiết kế PAT thông thường, quy tắc dịch pool sang địa chỉ giao diện ngoài, và trạng thái quay về khôi phục luồng về phía máy khách:
object network VPN_POOL
subnet 10.80.0.0 255.255.255.0
nat (outside,outside) after-auto source dynamic VPN_POOL interface route-lookup
Sau đó xác nhận máy khách thực sự đã yêu cầu ASA mang lưu lượng đó. Một ngoại lệ đường hầm tách gửi đích công cộng qua kết nối riêng của điện thoại, kết nối này không bao giờ đến ASA, và không quy tắc NAT nào sửa được một gói chưa từng được gửi. So sánh danh sách đường hầm tách của chính sách nhóm với đích bạn đang kiểm tra.
Phần còn lại của nhánh là bình thường: một tuyến mặc định hoặc cụ thể dùng được từ giao diện ngoài, một chính sách truy cập cho phép luồng, và DNS được xử lý theo chính sách trình phân giải bạn đã chọn. Thêm route-lookup ở đây vì lý do tương tự như bên dưới, vì giao diện vào và ra là giống nhau.
Nhánh B: máy khách muốn một site riêng
Nhánh này hỏng ở nhiều chỗ hơn, nên hãy viết theo thứ tự. Trước tiên là tuyến máy khách: tiền tố đích phải có trong danh sách đường hầm tách, nếu không máy khách sẽ không đặt nó vào đường hầm. Tiếp theo là bộ chọn đường hầm: ACL mã hóa site-to-site phải bao phủ địa chỉ pool đến tiền tố từ xa, không chỉ LAN cục bộ đến tiền tố từ xa. Cuối cùng là danh tính, để địa chỉ pool không bị dịch sang PAT internet trên đường đi.
nat (outside,outside) source static VPN_POOL VPN_POOL
destination static SITE_PREFIX SITE_PREFIX route-lookup
Phía xa là phần người ta quên kiểm tra. Đối tác cần một tuyến quay về pool và một bộ chọn bao gồm nó, và chính sách của nó phải cho phép các địa chỉ nguồn mà nó sẽ thấy. Nếu site được dùng qua một góc nhìn đã dịch, đó là thiết kế hợp lệ, nhưng khi đó cả hai đối tác, cả hai bộ chọn và cả hai bảng định tuyến phải thống nhất về các địa chỉ đã dịch.
Cũng hãy kiểm tra thứ tự quy tắc. Một quy tắc PAT rộng phía trên quy tắc danh tính sẽ dịch trao đổi riêng trước khi quy tắc danh tính được đánh giá, và triệu chứng là một đường hầm site không có SA khớp chứ không phải lỗi NAT.
Phép thử cho biết bạn đã xây nhánh nào
Hãy dùng đánh giá tuyến của chính ASA thay vì đọc cấu hình và hy vọng. packet-tracer input outside tcp 10.80.0.25 40000 203.0.113.10 443 detailed hiển thị quyết định NAT, tuyến và kết quả ACL cho một luồng; lặp lại với một đích riêng tư. Nếu giai đoạn NAT ghi lại một luồng riêng tư sang riêng tư, bạn đã xây nhánh A cho một gói cần nhánh B.
Hai lệnh nữa khép lại khoảng trống. show nat detail in ra thứ tự quy tắc mà packet-tracer đã theo, và show crypto ipsec sa cho biết có tồn tại bộ chọn cho cặp mà bạn mong đợi hay không. Một SA thiếu là vấn đề cấu hình bộ chọn hoặc đối tác, không phải thứ mà quy tắc NAT có thể sửa.
Kiểm chứng từng nhánh bằng lưu lượng mà nó phục vụ
Chấp nhận nhánh A bằng một yêu cầu công cộng bình thường từ máy khách, và nhánh B bằng một yêu cầu đến tài nguyên riêng thực sự tồn tại. Sau đó lặp lại từng nhánh với một tài nguyên bị từ chối, vì “được cho phép” và “được chính sách truy cập chấp thuận” không phải cùng một bằng chứng, và một ping xuất phát từ hub không thử được đường nào của máy khách.
Giữ hai bản ghi kiểm tra riêng trong phiếu: địa chỉ nguồn, đích, quy tắc NAT đã khớp và kết quả. Khi báo cáo tiếp theo nói “VPN hỏng”, cặp đó cho bạn biết trong một phút nhánh nào đã thoái lui, và câu trả lời thường là một tuyến hoặc một bộ chọn chứ không phải dòng cùng giao diện mà mọi người nghi ngờ đầu tiên.