Chính sách IPsec đang nuốt lưu lượng cục bộ của bạn: cách nhận biết
Một selector bao trùm cả một dải riêng tư cũng bao trùm máy in của bạn. Đọc chính sách đã cài đặt, rồi thu hẹp ngoại lệ ở nơi kết nối sống.
Máy in trên bàn ngừng phản hồi ngay khi đường hầm được dựng lên, và không có gì trong cấu hình đường hầm nhắc đến máy in. Điều thường xảy ra là một dải được bảo vệ đã được viết đủ rộng để bao gồm nó, nên máy giờ cố mã hóa lưu lượng lẽ ra phải ở lại trên phân đoạn cục bộ. Đọc chính sách đã cài đặt giải thích việc bắt giữ; thu hẹp nó ở đúng chỗ giữ cho lưu lượng từ xa được bảo vệ. Hành trình từ yêu cầu thất bại đến chính sách khớp mất vài phút.
Theo dõi luồng trước khi đổi một selector
Bắt đầu từ yêu cầu thất bại và ghi lại bốn giá trị: địa chỉ nguồn mà máy dùng, đích chính xác, tuyến mà kernel chọn và chính sách khớp với cặp đó.
Bốn sự thật này quyết định việc bắt giữ là cố ý hay tình cờ. Một đích nằm trong selector từ xa đang được bảo vệ theo thiết kế, kể cả khi thiết kế đó sai. Một đích nằm ngoài nó mà vẫn bị bắt nghĩa là thứ khác đang khớp, và đổi selector sẽ không giúp gì. Cả hai trường hợp đều phổ biến, và một lệnh phân biệt chúng.
Làm điều này trước khi sửa bất cứ thứ gì, vì trường hợp thú vị là subnet cục bộ chồng lấn với một dải riêng tư mà kết nối bảo vệ. Những tiền tố quen thuộc như 192.168.0.0/16 xuất hiện trong nhiều mạng, và một selector viết cho một trong số chúng có thể lặng lẽ bao trùm của bạn.
Ba kiểu cục bộ hành xử khác nhau
Một đích được gán cho host này, một đích trên cùng liên kết và một đích phía sau một giao diện khác là ba trường hợp khác nhau. Kernel xử lý mỗi trường hợp theo cách khác khi quyết định lưu lượng có cần bảo vệ hay không.
Lưu lượng do chính gateway tạo ra cũng không giống lưu lượng được chuyển tiếp từ client. Một chính sách trông đúng cho lưu lượng chuyển tiếp có thể bắt chính phiên quản trị của gateway, và đó là cách một quản trị viên mất truy cập trong lúc sửa đường hầm.
Thói quen hữu ích là gọi tên trường hợp thành tiếng: gói này đến từ tôi, đi tới liên kết của tôi hay đi xuyên qua tôi? Mỗi câu trả lời chỉ tới một chỗ khác nhau để thu hẹp. Việc ghi lại trường hợp cũng ngăn người kế tiếp lặp lại công việc đó.
Khi dải được bảo vệ là toàn bộ một không gian riêng tư, cả ba trường hợp có thể rơi vào đó cùng lúc, và triệu chứng trở thành một máy không tới được gì ngoài điểm cuối đường hầm.
Đọc chính sách đã cài đặt, không phải tệp
Các tệp cấu hình mô tả ý định; kernel giữ những chính sách thực sự khớp. Hiển thị cả hai và coi sự khác biệt là phát hiện đầu tiên.
Các lệnh này hiển thị tuyến đã chọn cho đích và các chính sách đã cài đặt theo mỗi hướng:
ip route get 192.168.50.20
ip xfrm policy list
sudo swanctl --list-connsTuyến cho bạn biết gói sẽ dùng giao diện nào. Danh sách chính sách cho bạn biết liệu sau đó có áp dụng một mẫu cho gói đó không, và danh sách kết nối hiển thị những selector mà daemon tin rằng đã cài đặt. Nếu đích xuất hiện trong một selector từ xa, bạn đã tìm ra việc bắt giữ mà không cần đoán.
Thu hẹp selector hoặc bỏ qua đích
Có hai cách sửa được hỗ trợ và chúng trả lời những câu hỏi khác nhau. Thu hẹp selector nói rằng kết nối này chỉ bảo vệ một dải nhỏ hơn, điều đúng khi dải rộng hơn là một sai sót. Thêm một ngoại lệ nói rằng đích cụ thể này không bao giờ được bảo vệ, điều đúng khi dải được bảo vệ thực sự rộng và một đích là ngoại lệ.
Chọn cách đầu khi có thể, vì một selector nhỏ hơn dễ lý luận hơn và xuất hiện trong định nghĩa kết nối. Chọn cách thứ hai khi dải rộng là có chủ ý và ngoại lệ là một host hoặc subnet mà bạn có thể gọi tên.
Cả hai đều thuộc về cấu hình sở hữu kết nối. Một quy tắc thời gian chạy được thêm bằng tay sẽ biến mất ở lần kết nối lại tiếp theo, và lỗi quay lại vào lúc không ai còn nhớ cách lách.
Ngoại lệ an toàn qua lần cài lại
Sau khi thay đổi, lặp lại yêu cầu vô hại đó và xem cùng những bộ đếm. Đích cục bộ phải trả lời, và đích từ xa dự định vẫn phải hiển thị lưu lượng được mã hóa.
Hai kiểm tra này xác nhận ngoại lệ vẫn còn và việc bảo vệ thì không:
ip xfrm policy list | grep -c out
ping -c 3 192.168.50.20Sau đó cố ý ngắt và kết nối lại đường hầm, và lặp lại cả hai. Một ngoại lệ hoạt động trước khi kết nối lại và thất bại sau đó đã được áp dụng ở lớp sai, và đó là cách phổ biến nhất khiến vấn đề này quay lại.