Một máy khách WireGuard kết nối và ping một địa chỉ trên một giao diện hoàn toàn khác, và phản hồi quay về. Bản ghi cho thấy yêu cầu chỉ có trên đường hầm. Không có gì hỏng, và thiết lập chuyển tiếp được tắt cẩn thận không liên quan gì. Đây là so sánh giữa hai đường đi trông giống nhau trên sơ đồ và hoàn toàn khác nhau trong nhân.

Một đường chuyển tiếp gói tin cho người khác; đường kia giao chúng cho chính máy chủ.

Gói tin gửi đến máy chủ ở lại trong máy chủ

Máy khách từ xa gửi gói IP đến một địa chỉ mà máy chủ sở hữu. Định tuyến đặt một câu hỏi về gói đó: đích này có phải là cục bộ không? Mọi địa chỉ mà máy chủ giữ đều xuất hiện trong bảng định tuyến cục bộ, và bảng đó được tra trước bảng chính, nên gói tin đi vào ngăn xếp của chính máy chủ thay vì ra ngoài qua giao diện khác. Phản hồi được tạo tại chỗ, và nó quay lại qua đường hầm vì truy vấn đến từ đó.

Đó là toàn bộ cơ chế. Không có chuyển tiếp nào xảy ra, không có thay đổi trạng thái giao diện nào tham gia, và địa chỉ đang nói đến không cần phải truy cập được từ bất kỳ đâu khác.

Vì sao ip_forward không áp dụng

Chuyển tiếp điều khiển những gói phải ra khỏi một giao diện khác với giao diện chúng đi vào. Ping đến chính máy chủ không bao giờ đi con đường đó: gói tin được tiêu thụ tại chỗ và phản hồi được tạo tại chỗ. Vì thế việc đặt net.ipv4.ip_forward=0 không thay đổi gì ở đây, và một quy tắc trong chuỗi chuyển tiếp không bao giờ thấy luồng đó. Kiểm soát đúng nằm trên đường vào, giới hạn bởi giao diện đến hoặc nguồn.

Đó là lý do việc tắt chuyển tiếp và cho rằng máy chủ đã bị cô lập tạo ra cảm giác an toàn sai lầm.

Đọc bảng cục bộ đã quyết định

ip rule show thường báo cáo một quy tắc có ưu tiên bằng không gửi mọi tra cứu đến bảng cục bộ trước, và ip route show table local liệt kê các địa chỉ của chính máy chủ với phạm vi cục bộ. Bảng đó bao gồm cả địa chỉ trên các giao diện đã bị tắt về mặt quản trị nhưng vẫn được cấu hình. Các địa chỉ IPv4 được gán tĩnh thường sống sót sau khi liên kết rớt, và đó là cách một ping đến cây cầu đã tắt vẫn có thể thành công và làm người vận hành bất ngờ.

IPv6 khác đúng ở điểm này. Các địa chỉ của nó thường bị thu hồi khi liên kết rớt, trừ khi keep_addr_on_down được đặt. Hãy so sánh hai họ thay vì cho rằng một quy tắc bao trùm cả hai.

Một peer thực sự đến được đâu

Câu trả lời từ địa chỉ của chính bộ định tuyến trên một phân đoạn không nói gì về các máy phía sau phân đoạn đó. Peer không thể đến một máy chủ phía sau giao diện kia qua đường này; nó chỉ đến những địa chỉ mà chính bộ định tuyến sở hữu. Việc thử một dịch vụ trên một máy chủ LAN riêng, thay vì ping địa chỉ bộ định tuyến, là điều xác định liệu chuyển tiếp có được phép hay không.

Giới hạn một peer vào các dịch vụ gắn với địa chỉ đường hầm là câu hỏi về chính sách đầu vào. Cho phép dịch vụ mong muốn trên giao diện đường hầm và giới hạn các nguồn được dùng nó, vì gói tin thực sự đến đó.

Cũng hãy kiểm tra những địa chỉ bạn định ngừng dùng. Việc xóa một địa chỉ khỏi giao diện đáng tin hơn là chồng các quy tắc tường lửa lên một địa chỉ cũ.

Bài viết liên quan