Một người dùng VPN trên Windows phải đến được HTTPS trên một máy chủ và không đến được SMB trên cùng máy chủ đó, và một tuyến không thể diễn đạt điều đó. Cả hai yêu cầu mang cùng địa chỉ đích, nên tiền tố đưa lưu lượng vào đường hầm cũng mang theo luồng mà bạn muốn loại trừ. Để tách chúng cần một quy tắc xem xét thứ gì đó mịn hơn đích đến.

Hai ý định khác nhau được xây bằng hai cơ chế Windows khác nhau. Trộn chúng tạo ra một chính sách trông đầy đủ nhưng chỉ thực thi một nửa điều bạn muốn.

Một tuyến không thể tách hai dịch vụ trên một địa chỉ

Định tuyến VPN bản địa dựa trên tiền tố: nó quyết định đích nào đi qua đường hầm và đích nào ở ngoài. Đó là công cụ đúng để giữ một mạng con ở trong và mạng khác ở ngoài, và theo cấu tạo nó mù với cổng. Bộ lọc lưu lượng trên hồ sơ VPN thêm một chiều thứ hai: nó khớp giao thức, địa chỉ từ xa và cổng từ xa với thứ có thể đi qua giao diện đó. Quy tắc IPsec làm việc ở chỗ thứ ba và diễn đạt luồng nào cần bảo vệ và xác thực với ai. Ba thứ trả lời các câu hỏi khác nhau và không cái nào thay thế cái khác.

Hãy bắt đầu bằng việc viết câu dự định. Chỉ cho phép HTTPS là câu về truy cập, còn yêu cầu IPsec cho HTTPS là câu về bảo vệ, và hai câu dẫn đến cấu hình khác nhau.

Hạn chế truy cập và yêu cầu bảo vệ tách khỏi nhau

Hạn chế truy cập nói cái gì được dùng giao diện, và được thi hành bằng cách cho phép một tập hợp và từ chối mọi thứ khác. Yêu cầu bảo vệ nói luồng nào phải được mã hóa và xác thực, và được thi hành bằng cách thương lượng các hiệp hội bảo mật khớp với chúng. Cái đầu tạo ra một yêu cầu bị chặn khi có thứ không nằm trong danh sách, còn cái sau tạo ra một kết nối hoặc mang bảo vệ được yêu cầu hoặc không được thiết lập. Coi cái này như cái kia là cách một chính sách cuối cùng không chặn gì hoặc không bảo vệ gì.

Hệ quả thực tế là danh sách lọc là một tập đóng. Khi có danh sách trên hồ sơ, lưu lượng trên giao diện đó không khớp với mục nào sẽ bị từ chối, nên DNS, các trao đổi xác thực và mọi phụ thuộc mà ứng dụng cần đều cần mục riêng. Thêm một quy tắc rộng để dập tắt các lần từ chối sẽ mở lại toàn bộ giao diện và âm thầm hủy hạn chế. Danh sách nên ngắn nhất mức yêu cầu cho phép và đầy đủ nhất mức ứng dụng đòi hỏi.

Xây danh sách lọc như một tập hợp đầy đủ

Hồ sơ VPNv2 mang danh sách lọc tách khỏi danh sách tuyến, và các mục của nó là thuộc tính hồ sơ chứ không phải lệnh. Với ví dụ HTTPS, mục cần giao thức 6, địa chỉ từ xa và cổng từ xa, được triển khai qua kênh quản lý hoặc ProfileXML cho loại hồ sơ đang dùng. Định nghĩa bộ lọc lưu lượng VPNv2 của Microsoft nêu rằng các điều kiện trong một quy tắc kết hợp với nhau trong khi các định danh quy tắc riêng hoạt động như phương án thay thế.

TrafficFilterList/0/Protocol            = 6
TrafficFilterList/0/RemoteAddressRanges = 10.60.4.20/32
TrafficFilterList/0/RemotePortRanges    = 443
RouteList/0/Address                     = 10.60.4.0/24

Các giá trị cổng trong danh sách đó mô tả cổng dịch vụ ở đầu xa, và cổng cục bộ nên để không hạn chế để cổng nguồn tạm thời của máy khách không bị lọc mất. Làm ngược lại tạo ra một quy tắc không khớp với gì và một câu đố tốn cả buổi chiều.

Viết tuyến và bộ lọc như hai quyết định riêng. Tuyến quyết định rằng máy chủ này được đến qua đường hầm, và bộ lọc quyết định dịch vụ nào được dùng con đường đó.

Chứng minh cả hai kết quả bằng hai yêu cầu

Kiểm tra luồng được phép và luồng bị từ chối riêng rẽ, và đọc lỗi thay vì trang bị thiếu. Một lần từ chối đến nhanh là quyết định chính sách, còn hết thời gian nhiều khả năng là tuyến bị thiếu hoặc dịch vụ không lắng nghe. Các lệnh bên dưới chạy cả hai yêu cầu và hiển thị các quy tắc đang hiệu lực.

Test-NetConnection 10.60.4.20 -Port 443
Test-NetConnection 10.60.4.20 -Port 445
Get-NetIPsecRule -DisplayName *Vpn*
Get-VpnConnection -Name Corp

Từ chối nhanh trong bài kiểm tra SMB cùng với bài kiểm tra HTTPS thành công là kết quả mà bộ lọc lẽ ra phải tạo ra. Từ chối trên cả hai cổng nghĩa là danh sách thiếu thứ mà phiên cần, còn hết thời gian trên cả hai chỉ về định tuyến chứ không phải lọc. Nếu các luồng được bảo vệ hiển thị không có hiệp hội bảo mật, yêu cầu bảo vệ không được đáp ứng ngay cả khi kết nối thành công. Đọc cả bốn đầu ra cùng nhau, vì mỗi cái riêng lẻ ủng hộ một câu chuyện khác.

Ghi lại hồ sơ hiệu lực, tập quy tắc và chính sách của phía đối diện cùng với kết quả. Các ghi chú tương thích lịch sử về máy khách Windows cũ không mô tả điều mà các tính năng hồ sơ được quản lý ngày nay hỗ trợ trên một cổng cụ thể. Hành vi phụ thuộc phiên bản thuộc về bản ghi, không phải giả định.

Bài viết liên quan