Ba thiết kế giải cùng một bài toán phòng thí nghiệm: một LAN nhỏ phải đi ra ngoài qua một đồng đẳng WireGuard trong khi bản thân cổng vẫn giữ đường lên thông thường. Lối tắt hấp dẫn là chuyển tuyến mặc định của bộ định tuyến vào trong đường hầm, nhưng việc đó phá vỡ đường quản trị của chính thiết bị và mọi thứ nó chuyển tiếp. Lựa chọn thú vị là định tuyến theo chính sách giới hạn ở một giao diện và một tiền tố. Hãy chọn giữa chúng bằng cách trả lời ba câu hỏi về cỗ máy bạn thực sự có.

Quyết định nơi lối ra trú ngụ

Câu hỏi đầu tiên: máy chủ này có chuyển tiếp cho thứ gì khác không? Một cổng phòng thí nghiệm chuyên dụng có thể sống với chính sách chuyển tiếp mặc định bỏ tất cả. Một bộ định tuyến có nhiệm vụ sản xuất thì không, và việc đặt một bộ quy tắc đối thủ lên trên tường lửa được quản lý chính là cách các sự cố được lên lịch. Thứ hai: bạn có thể sở hữu hai đối tượng chính sách và thứ tự của chúng qua các lần khởi động lại không? Thứ ba: đồng đẳng bạn có có cấp phép địa chỉ nguồn đường hầm của bạn và cung cấp lối ra internet không? Một đồng đẳng chỉ mở một mạng riêng là sản phẩm khác, và không thay đổi định tuyến cục bộ nào sửa được điều đó. Nếu bất kỳ câu trả lời nào là không, hãy đặt lối ra trong một không gian tên hoặc trong một máy ảo dùng một lần.

Không gian tên hay máy ảo tốn bộ nhớ và cho bạn một bán kính nổ sạch sẽ. Định tuyến theo chính sách tốn hai quy tắc và để lại cho bạn một thiết bị để gỡ lỗi.

Chọn lối ra cấp phép cho nguồn của bạn

Hầu hết các thất bại trong phòng thí nghiệm này xảy ra trước khi có dù chỉ một quy tắc tường lửa. Nhà vận hành lối ra phải chấp nhận địa chỉ nguồn mà các gói của bạn mang sau khi dịch, và trong thiết kế này đó là địa chỉ đường hầm chứ không phải tiền tố LAN. Vì thế việc giả mạo địa chỉ thuộc về thiết kế ngay từ đầu, không phải một bổ sung muộn.

Xác nhận ba điều với nhà vận hành: đồng đẳng cấp phép địa chỉ đường hầm của bạn, nó chuyển tiếp IPv4 thay vì kết thúc tại chính nó, và nó áp dụng NAT ra ngoài. Không có điều đầu, các gói của bạn đến rồi biến mất. Không có điều thứ ba, chúng đi ra với nguồn riêng và chết ở chặng kế tiếp. Sau đó kiểm tra rằng wg-quick không cài tuyến mặc định của riêng nó, điều mà Table = off ngăn chặn; thiết lập đó chặn việc tạo tuyến, không phải các kiểm tra AllowedIPs của đồng đẳng hay cách nó xử lý DNS.

Hai đối tượng chính sách thực hiện việc dẫn hướng

Dẫn hướng cần một bảng và một quy tắc. Bảng giữ hai tuyến: tiền tố LAN đi ra khỏi giao diện LAN và một tuyến mặc định đi ra khỏi đường hầm. Quy tắc gửi lưu lượng đến trên giao diện LAN và mang tiền tố đó vào bảng. Dùng bộ chọn iif cùng với việc khớp nguồn, vì các gói WireGuard của chính cổng phát sinh cục bộ và không bao giờ khớp với giao diện đi vào.

Vệ binh đến trước cuộc tra cứu, không phải sau. Thứ tự đó chính là toàn bộ tính chất an toàn của thiết kế.

Vệ binh là quy tắc thứ hai trên cùng bộ chọn với phán quyết là unreachable. Hãy cho nó ưu tiên số cao hơn để cuộc tra cứu vẫn thắng khi đường hầm còn hoạt động. Khi tuyến đường hầm biến mất, cuộc tra cứu không trả về gì và vệ binh dừng việc tìm kiếm thay vì để nó rơi xuống tuyến mặc định WAN trong bảng chính.

ip rule add from 192.168.50.0/24 iif lan0 lookup 51861 pref 1000
ip rule add from 192.168.50.0/24 iif lan0 unreachable pref 1001
ip route add table 51861 default dev wg0

Đóng khoảng trống dự phòng trước khi mở nó

Cài vệ binh trước và cuộc tra cứu sau. Làm ngược lại sẽ để lại một cửa sổ kéo dài vài giây trong đó lưu lượng của máy khách thử nghiệm có thể chạm tới đường lên.

Bộ lọc hoàn thiện bức tranh. Trong móc forward hãy chấp nhận hướng từ LAN sang đường hầm cho tiền tố thử nghiệm và hướng trả về đã thiết lập, rồi bỏ mọi thứ khác; NAT cho tiền tố đó lên giao diện đường hầm nằm trong postrouting. Chính việc để policy drop trên chuỗi chuyển tiếp là thứ biến một tuyến thiếu thành im lặng thay vì rò rỉ. Lọc đường ngược cần chế độ lỏng trên giao diện đường hầm, vì một nguồn công cộng đến sau khi giải bọc có tuyến ngược tốt nhất ở phía WAN. Linux lấy giá trị cao hơn giữa all và giá trị theo giao diện, nên đặt giao diện đường hầm không giống với việc làm yếu kiểm chứng ở mọi nơi.

Chứng minh bằng trường hợp hỏng

Hỏi nhân một câu hỏi chính xác bằng cách nêu địa chỉ nguồn của máy khách và giao diện mà nó đến. Một cuộc tra cứu thiếu cả hai sẽ trả lời câu hỏi khác và trông vẫn đúng trong cả hai trường hợp. Sau đó xem các bộ đếm tường lửa, trạng thái truyền của đồng đẳng và dịch vụ của chính máy khách.

Kiểm tra việc gỡ bỏ cho đúng cách. Dừng đường hầm trong khi để quy tắc và bộ lọc tại chỗ: máy khách phải khựng lại và lưu lượng của chính cổng phải tiếp tục hoạt động. Sau đó dừng đồng đẳng mà không chạm vào giao diện cục bộ, và đó là trường hợp bắt được những thiết kế chỉ dựa vào sự tồn tại của tuyến. Cuối cùng khởi động lại và kiểm tra lại thứ tự quy tắc, vì một móc tháo dỡ xóa vệ binh sẽ trả toàn bộ thiết kế về bảng chính. Ghi số bảng, các ưu tiên và tên giao diện vào phiếu thay đổi, vì người tiếp theo thêm quy tắc chính là người sẽ phá vỡ điều này.

Bài viết liên quan