Ứng dụng VPN xóa tuyến bạn đã thêm? Hãy dùng bảng chính sách
Ứng dụng liên tục khẳng định lại các tuyến nó sở hữu, nên mục thêm tay sẽ biến mất trong vài giây. Đặt ngoại lệ vào bảng chính sách với mức ưu tiên quy tắc giành thắng lợi.
Một /24 cho máy in phòng thí nghiệm biến mất giữa hai lần gọi ip route show, và nhật ký ứng dụng chỉ nói rằng mạng đã thay đổi. Không có gì sai với lệnh, tiền tố hay quyền của bạn. Ứng dụng doanh nghiệp sở hữu mô hình định tuyến của máy chủ sẽ khẳng định lại mô hình đó mỗi khi ai khác chỉnh sửa nó, nên mục bạn thêm bị loại bỏ như kẻ xâm nhập. Chống lại nó trong cùng bảng là thế thua. Giải pháp là ngừng cạnh tranh cho bảng đó hoàn toàn và đặt ngoại lệ ở nơi trình giám sát không bao giờ nhìn.
Trình giám sát giải thích tuyến bị mất
Hãy chứng minh điều này trước khi thiết kế lại bất cứ thứ gì: đọc bảng, thêm tiền tố, đợi vài giây, đọc lại. Nếu mục không có và bạn không gõ gì để xóa nó, thì có một tác nhân đang theo dõi. Tìm tiến trình sở hữu hành vi đó và đọc nhật ký của nó quanh thời điểm tuyến biến mất, vì cùng dịch vụ đó thường duy trì đường hầm, bộ lọc gói và cấu hình trình phân giải. Giết nó để tuyến của bạn tồn tại là một sự đánh đổi bạn sẽ hối tiếc ở lần kết nối lại tiếp theo.
ip route show
ip route add 192.168.2.0/24 dev enp0s31f6
sleep 5; ip route showTiền tố và giao diện ở trên là chỗ giữ chỗ. Sao chép tên giao diện từ một ví dụ đang chạy trên máy khác là lý do phổ biến nhất khiến bản trình diễn này không tạo ra gì cả.
Bảng thứ hai vô hình với trình giám sát
Tác nhân chỉ dựng lại bảng nó sở hữu. Cho ngoại lệ một bảng riêng cộng với quy tắc gửi các đích khớp đến đó, và bảng chính không bao giờ thay đổi, nên tác nhân không có gì để sửa. Đó là toàn bộ ý tưởng: một không gian tên tuyến do người khác duy trì, và một không gian chỉ bạn chạm vào.
Sự đánh đổi là bảo trì. Hai đối tượng có thể trôi xa nhau, và vị trí của quy tắc trong danh sách quan trọng ngang với tuyến bên trong bảng mà nó chọn.
Xây dựng ngoại lệ rồi làm cho nó thắng
Tạo bảng, cài tuyến và thêm quy tắc chọn bảng cho đích đó. Mức ưu tiên quyết định quy tắc của bạn được xét trước hay sau các quy tắc ứng dụng đã chèn, và quy tắc xếp sau sẽ không bao giờ được chạm tới, nên con số là một phần của thiết kế chứ không phải trang trí. Sau đó hỏi nhân xem nó thực sự sẽ làm gì, đây là câu hỏi khác với những gì bạn đã cấu hình.
ip rule add to 192.168.2.0/24 table 110 pref 30010
ip route add 192.168.2.0/24 dev enp0s31f6 table 110
ip route get 192.168.2.50ip route get phân giải tuyến mà nhân sẽ dùng, bao gồm thiết bị và địa chỉ nguồn. Nó không in định danh bảng, nên hãy ghép nó với ip rule show khi bạn cần xác nhận bảng nào đã thắng. Cùng nhau chúng trả lời câu hỏi duy nhất quan trọng: lưu lượng đến địa chỉ đó có đi ra từ nơi bạn định không?
Các dạng khác của cùng ý tưởng
Mẫu này trở nên tổng quát khi bạn ngừng nghĩ theo đích. Một mạng con cục bộ có thể vẫn truy cập được trong khi đường hầm giữ tuyến mặc định. Phản hồi từ máy chủ SSH gắn với LAN có thể đi ra qua giao diện mà chúng đến thay vì biến mất vào đường hầm. Và quy tắc dựa trên giao diện có thể đẩy mọi thứ đến trên giao diện không dây vào đường hầm, trong khi lưu lượng do chính máy chủ tạo ra vẫn ở Ethernet:
ip rule add iif wlan0 table 10
ip route add default dev tun0 table 10Trường hợp cuối khớp với giao diện đến chứ không phải đích, đây là kiểu quy tắc khác và mô hình tư duy khác. Lưu lượng được chuyển tiếp cũng cần net.ipv4.ip_forward được bật, và đầu xa phải định tuyến dải nguồn trở lại hoặc dịch nó; một quy tắc trên một máy không bao giờ tạo ra nửa còn lại của đường đi.
Coi quy tắc là dùng một lần
Quy tắc và tuyến bảng sống trong bộ nhớ. Sau khi kết nối lại, thiết bị đường hầm có thể được đổi tên, địa chỉ được cấp có thể dịch chuyển, và quy tắc giữ giá trị cũ âm thầm ngừng khớp. Áp dụng lại toàn bộ thay đổi từ một script sở hữu nó, rồi kiểm tra lại ip rule show, tên thiết bị hiện tại và ip route get mới so với một đích thực trước khi tin vào ngoại lệ.
Hai giới hạn vẫn tồn tại dù cẩn thận đến đâu. Ứng dụng vẫn kiểm soát quy tắc lọc và cấu hình trình phân giải của chính nó, và ngoại lệ định tuyến không ghi đè cả hai. Nếu ứng dụng cũng xóa quy tắc chính sách của bạn, các con đường được hỗ trợ là chính sách đường hầm chia tách của nó hoặc một ứng dụng cho phép bạn quản lý tuyến, như OpenConnect; vá tệp nhị phân của nhà cung cấp để làm im trình giám sát của nó là một cam kết bảo trì kèm theo kiểm tra tính toàn vẹn.
Viết số bảng, mức ưu tiên và đích vào ghi chú bên cạnh script. Nếu không, người tiếp theo sẽ tìm thấy một quy tắc vượt qua đường hầm và không có cách nào biết tại sao.