Bốn thứ phải khớp nhau trước khi một máy chủ Linux chỉ gửi SMTP của chính nó qua đường hầm: một tuyến trong bảng riêng, một quy tắc chính sách chọn lưu lượng, một địa chỉ nguồn mà peer sẽ chấp nhận, và một đường quay về chịu được sự bất đối xứng. Mỗi thứ là một cấu hình riêng với kiểu hỏng riêng. Thứ tự dưới đây là thứ tự khiến một lỗi chỉ đúng vào phần thực sự sai. Đây là công việc định tuyến dành riêng cho cổng, không phải yêu cầu một tuyến mặc định VPN.

Quy tắc cổng không phải tuyến mặc định

Một quy tắc khớp TCP sinh ra cục bộ với cổng đích 25 sẽ gửi lưu lượng đó vào bảng mà bạn đặt tên. Quy tắc tự nó không tạo ra gì: nó chọn, và bảng phải chứa một tuyến có thể mang gói tin. Kết hợp cả hai chỉ bao phủ chiều đi ra của một giao thức, nên việc chuyển tiếp cho máy chủ khác, các kết nối thư đến và IPv6 nằm ngoài bố cục này. Gọi đây là chính sách dành riêng cho cổng thay vì mặc định VPN giữ cho ranh giới đó trung thực.

Hai thiết lập của wg-quick là điều kiện tiên quyết, không phải phần của chính sách. AllowedIPs = 0.0.0.0/0 cho phép peer mang các đích IPv4 tùy ý, và Table = off ngăn wg-quick cài tuyến mặc định của riêng nó cho tiền tố đó. Đừng trộn các hướng dẫn này với một trình quản lý áp dụng chính sách tuyến riêng, vì hai bên sẽ không đồng ý ai sở hữu bảng chính.

Viết tuyến, bộ chọn và lớp bảo vệ

Chọn một số bảng và một cặp độ ưu tiên mà không gì khác dùng, rồi áp dụng tuyến, bộ chọn và lớp bảo vệ theo thứ tự đó. Các con số dưới đây là ví dụ, không phải giá trị được bảo lưu:

ip -4 route add default dev wg0 src 10.77.0.2 table 51825
ip -4 rule add priority 10000 iif lo ipproto tcp dport 25 lookup 51825
ip -4 rule add priority 10001 iif lo ipproto tcp dport 25 unreachable

iif lo giới hạn quy tắc cho lưu lượng khởi phát cục bộ, và ipproto tcp dport 25 xác định chiều của kết nối; tài liệu tham chiếu ip-rule mô tả cả hai bộ chọn. Chúng có trong các nhân và bản phát hành iproute2 hiện tại, và trên hệ thống cũ hơn quy tắc bị từ chối thẳng, đó là lỗi rõ ràng hơn một quy tắc được nạp mà không khớp với gì.

Quy tắc unreachable ở độ ưu tiên kế tiếp là lớp bảo vệ. Không có nó, một tuyến thiếu trong bảng 51825 sẽ rơi xuống tuyến mặc định thông thường, và thư sẽ ra ngoài qua liên kết vật lý trong lúc đường hầm gián đoạn, đúng trường hợp mà chính sách được dựng ra để ngăn.

Địa chỉ nguồn phải khớp

Tùy chọn src của tuyến chỉ điền nguồn cho những kết nối chưa tự gắn nguồn. Đây không phải dịch địa chỉ, và nó không ghi đè một ràng buộc rõ ràng, nên một daemon gắn với địa chỉ vật lý vẫn gửi từ địa chỉ đó. Nếu gặp đúng điều này, hãy đổi thiết lập của chính daemon hoặc thiết kế một chính sách dịch có chủ đích, vì masquerade toàn cục muộn là giải pháp khác với hậu quả khác.

Tại cổng vào, peer của máy khách phải cho phép nguồn mà nó thực sự nhận, tức là 10.77.0.2/32 chứ không phải một tiền tố đích rộng. Sao chép 0.0.0.0/0 của máy khách vào mọi peer của cổng vào làm lẫn lộn peer nào sở hữu lưu lượng nào. Cổng vào cũng cần chuyển tiếp, một chính sách tường lửa cho phép luồng, và một đường quay về, bao gồm dịch lúc ra khi phía trên không thể định tuyến một địa chỉ đường hầm riêng.

Kiểm tra đường quay về, rồi đến tính bền vững

Đọc các tra cứu trước khi tin bất cứ điều gì, vì chúng cho thấy mỗi chiều nhận bảng nào và nguồn nào. Một đích trên cổng 25 và cùng đích đó trên cổng 443 là đủ:

ip -4 route get 198.51.100.25 ipproto tcp dport 25
ip -4 route get 198.51.100.25 ipproto tcp dport 443

Tra cứu đầu tiên nên nêu wg0 và nguồn dự định, và tra cứu thứ hai nên giữ liên kết thượng nguồn thông thường. Khi ứng dụng gắn địa chỉ của riêng nó, thêm from với địa chỉ đó vào tra cứu. Chiều phản hồi đến wg0 rồi bị bỏ tại chỗ cho thấy lọc đường ngược IPv4, vì một quy tắc chỉ cho cổng ra không khiến tra cứu ngược chọn đường hầm.

Ở nơi định tuyến bất đối xứng được cho phép, chế độ lỏng giới hạn theo giao diện qua net.ipv4.conf.wg0.rp_filter=2 có thể phù hợp, và nên kiểm tra trước mức tối đa hiệu dụng của all và của giao diện. Đừng tắt kiểm chứng trên toàn cục như một lối tắt. Sau đó giao bảng, các độ ưu tiên và lớp bảo vệ cho chủ sở hữu cấu hình, và mở kết nối mới sau khi kết nối lại để xác nhận lựa chọn vẫn đứng. Hãy nhớ rằng phản hồi từ một trình lắng nghe SMTP cục bộ mang cổng nguồn 25 chứ không phải cổng đích 25, đó là một câu hỏi chính sách riêng.

Bài viết liên quan