Phiếu hỗ trợ thường đến khi thay đổi tường lửa đã được phê duyệt và đường hầm vẫn từ chối khởi lên. Đó là kết quả mong đợi khi chỉ một đầu có tính năng: đóng gói TCP theo RFC 9329 phải được triển khai và cấu hình ở cả hai đầu, và thỏa thuận diễn ra bên trong kết nối trước khi bất kỳ lưu lượng được bảo vệ nào di chuyển. Mở một cổng là quảng bá một trình lắng nghe có thể không tồn tại, và trình lắng nghe không có cấu hình khớp ở phía bên kia sẽ chấp nhận kết nối rồi im lặng. Thứ tự dưới đây đặt các kiểm tra rẻ tiền lên trước.

Biết tùy chọn thực sự thêm gì

IPsec gốc vận chuyển các tải trọng đã mã hóa dưới dạng giao thức IP 50, không có số cổng nào cần cho phép. NAT traversal bọc các gói đó trong UDP tới cổng 4500, và đó là lý do rất nhiều quy tắc tường lửa nhắc đến cổng đó. RFC 9329 thêm một biểu diễn luồng: các gói IKE và IPsec đều đi trong một kết nối TCP, thường tới cổng 4500.

Luồng không phải dịch vụ web. Kết nối TCP tới 4500 không nói gì về HTTP, TLS hay sự thân thiện với proxy, và proxy HTTP trên đường đi thường sẽ làm hỏng việc đóng khung thay vì mang nó.

Kiểm tra trước khi chạm vào tường lửa

Tiêu chuẩn đặt TCP làm phương án dự phòng cho các mạng loại bỏ đường UDP, không phải để thay thế nó. Lấy hai sự thật từ mỗi nhà cung cấp: tên chính xác của tính năng và phiên bản triển khai RFC 9329 thay vì một biến thể độc quyền. Các nhãn như IPsec over TCP đã được dùng cho những thiết kế không liên quan, nên hãy yêu cầu tham chiếu tài liệu và khóa cấu hình bật nó. Không có cả hai câu trả lời, đừng giả định gì về khả năng tương thích trên dây.

Chứng minh điều đó trong phòng thí nghiệm nơi cả hai đầu là của bạn. Một cổng kết nối trả lời trên TCP 4500 nhưng không bao giờ hoàn tất IKE là dấu hiệu của trình lắng nghe thiếu phần đóng gói khớp ở phía bên kia, và phát hiện điều đó ở đó rẻ hơn nhiều so với trong một cửa sổ thay đổi.

Phía bên trả lời: có gì đang lắng nghe

Bắt đầu với socket. ss -ltnp | grep 4500 cho biết có trình lắng nghe TCP hay không và tiến trình nào sở hữu nó. Việc không có dòng nào kết thúc cuộc điều tra ở cấu hình cổng chứ không phải ở mạng.

Nếu socket có đó, hãy quan sát bắt tay thay vì đoán từ phía máy khách: tcpdump -ni any 'tcp port 4500'. Bắt tay ba bước hoàn tất rồi im lặng nghĩa là luồng đã được chấp nhận và trao đổi IKE bên trong nó thất bại, trong khi SYN không có trả lời chỉ ra việc lọc hoặc địa chỉ sai.

So sánh với đường UDP trong cùng cửa sổ bắt gói để hai thứ không bị nhầm lẫn: tcpdump -ni any 'udp port 4500 or proto 50'. Lưu lượng trên giao thức 50 hoặc cổng UDP 4500 trong khi bạn tin rằng TCP đang được dùng nghĩa là hai đầu chưa bao giờ thống nhất về phương án dự phòng. Hãy bắt gói cả ở cổng nếu có thể, vì bắt gói phía máy khách không thể cho thấy đầu xa đã gửi gì.

Chấp nhận trong bốn giai đoạn riêng biệt

Coi việc khởi lên là bốn kết quả. Mỗi kết quả có thể thất bại vì lý do khác nhau, và một lần đạt hay trượt duy nhất che giấu cái nào, nên hãy dừng ở giai đoạn đầu tiên thất bại và bắt đầu lại từ trên.

StageWhat you checkWhat it proves
1TCP connection established to 4500A listener exists and the path permits it
2IKE_SA authenticated in the gateway logBoth peers agreed on the encapsulation
3CHILD_SA installed, visible with ip xfrm stateKeys exist for the protected traffic
4A new application exchange succeedsThe data path works, not just the control path

Giai đoạn thứ tư là giai đoạn bị bỏ qua. Một phiên hiện có có thể tiếp tục chạy trên trạng thái đã lưu trong bộ nhớ đệm, nên hãy mở một kết nối mới tới máy chủ sau cổng trước khi đóng thay đổi. Nếu giai đoạn hai thất bại trong khi giai đoạn một đạt, sự bất đồng nằm ở đề xuất hoặc ở thiết lập đóng gói, không phải ở tường lửa.

Quay lui và cái giá của việc để nó bật

Hãy lên kế hoạch hoàn tác trước khi thay đổi: tắt tùy chọn đóng gói ở cả hai đầu và xác nhận đường hầm trở lại qua UDP. Giữ quy tắc TCP trong một chu kỳ đánh giá nếu phương án dự phòng lại cần đến, sau đó gỡ bỏ. Một trình lắng nghe không dùng trên 4500 là bề mặt tấn công không có giá trị vận hành.

Chú ý dấu hiệu hiệu năng khi nó mang công việc thật. TCP trong TCP thêm các lớp xác nhận bị tắc khi mất một gói, và các luồng chia sẻ một kết nối có thể chặn nhau, nên hãy đo ứng dụng sẽ dùng đường hầm thay vì ping.

Danh sách chấp nhận

Xác nhận tên và phiên bản của tính năng ở cả hai đầu, trình lắng nghe ở phía bên trả lời, bản bắt gói cho thấy bắt tay hoàn tất, và bốn giai đoạn được ghi lại với dấu thời gian. Thêm lý do của phương án dự phòng vào bản ghi thay đổi để kỹ sư tiếp theo biết vì sao TCP ở đó. Hãy tập quay lui trước khi cần đến.

Nếu bất kỳ giai đoạn nào thất bại, chỉ sửa giai đoạn đó. Việc đổi bộ mã hóa hoặc thiết lập danh tính để đuổi theo một vấn đề vận chuyển thường thêm một lỗi thứ hai không liên quan lên trên lỗi đầu tiên.

Bài viết liên quan