Địa chỉ peer của PPP hay điểm cuối VPN: cái nào vào via
So sánh cách đọc một giao diện PPP như một mạng con với cách đọc inet và peer của nó như hai đầu của một liên kết, và xem bước nhảy kế tiếp nào mà bảng chính sách có thể chấp nhận.
Một dòng trên giao diện PPP giải quyết phần lớn cuộc tranh luận định tuyến trên một hộp VPN: địa chỉ bên trong và peer được in bên cạnh. Đọc cặp đó như một mạng con nhỏ và bạn sẽ tìm một cổng không tồn tại. Đọc nó như hai đầu của một liên kết duy nhất và bước nhảy kế tiếp trở nên hiển nhiên. So sánh ở đây là giữa hai cách đọc đó, vì mọi bảng dựng sau này đều thừa hưởng cách bạn đã chọn. Không cách nào quyết định điều gì về điểm cuối VPN bên ngoài.
Hai cách đọc một dòng giao diện
Lấy một phiên trong đó giao diện báo cáo inet 10.64.3.9 peer 10.64.3.1/32. Cách đọc mạng con coi 10.64.3.9 là một máy chủ đơn độc trên một hòn đảo /32 rồi tìm bộ định tuyến để chạm tới bất cứ thứ gì bên ngoài nó. Vì địa chỉ khác duy nhất trên liên kết là peer, cách đọc đó cuối cùng đề xuất chính 10.64.3.9 làm cổng, điều này là vòng tròn.
Cách đọc điểm cuối là cách được ghi tài liệu. Trên giao diện điểm-tới-điểm, peer gọi tên đầu xa của liên kết duy nhất đó, nên 10.64.3.1 là bước nhảy kế tiếp dùng được và 10.64.3.9 luôn chỉ là địa chỉ nguồn.
Khác biệt đó chi phối điều gì có thể có trong via. Ghi địa chỉ cục bộ ở đó tạo ra một tuyến mà nhân không thể phân giải tới hàng xóm, nên mục đó hoặc thất bại khi kiểm tra hoặc nuốt lưu lượng trong khi trông hoàn toàn khỏe mạnh trong danh sách. Peer hoạt động vì nó là đích thực sự trên liên kết. Cả hai cách đọc đều đồng ý về điểm cuối VPN bên ngoài, vốn là một danh tính hoàn toàn riêng: nó được chạm tới qua underlay, không qua đường hầm mà nó kết thúc.
Những gì phiên đã cài đặt
Trước khi viết bảng của riêng bạn, hãy in ra những gì đi kèm liên kết. Một tích hợp PPP được hỗ trợ thường cài một tuyến thiết bị và một tuyến peer khi thiết lập phiên, và hai mục đó đã mã hóa cách đọc đúng.
ip -4 addr show dev ppp0
ip route show dev ppp0
ip route show table main | head -n 5
Một tuyến thiết bị như 10.64.3.1 dev ppp0 proto kernel scope link src 10.64.3.9 không mang cổng vì chính giao diện là đường đi. Một tuyến gọi tên peer bằng via là đối tượng khác với vòng đời khác, và nó biến mất khi phiên rớt. Sao chép một trong hai dạng đó vào bảng bền vững mà không kiểm tra cách nó được cài lại là lý do thường gặp khiến một đường hầm đang chạy mất tuyến sau khi kết nối lại.
So sánh hai danh sách thay vì tin vào trí nhớ. Nếu tuyến peer có trong main nhưng bảng phụ của bạn trống, bạn đã học được điều mà dòng địa chỉ chưa từng nói.
Quy tắc và bảng là hai quyết định riêng
Chọn một bảng và điền nó là hai bước độc lập, và so sánh ở đây quan trọng vì hai việc này thường bị lẫn khi gỡ lỗi. Một quy tắc gửi lưu lượng được đánh dấu tới bảng 100 không làm gì nếu bảng 100 không có tuyến khớp, và một bảng được điền tốt thì không thể chạm tới nếu không quy tắc nào trỏ vào nó.
Một nửa tuyến mặc định không phải tuyến mặc định. Một 0.0.0.0/1 duy nhất bao phủ nửa dưới của không gian IPv4, nên một chính sách định bắt tất cả cũng cần 128.0.0.0/1 khớp, hoặc một default thực sự. Đọc một cấu hình đang chạy và sao chép một trong hai nửa là cách người ta kết thúc với một vòng lặp định tuyến chỉ vỡ ở những đích nhất định.
Để lại những ngoại lệ có chủ ý cho các địa chỉ phải ở lại trên LAN, và quyết định điều gì xảy ra khi tra cứu không tìm thấy gì trong bảng đã chọn. Một tuyến dự phòng rõ ràng dễ suy luận hơn một bảng trống, vốn trả về kết quả không thể chạm tới và khiến ứng dụng trông hỏng thay vì bị định tuyến sai.
Hỏi tra cứu câu hỏi mà ứng dụng của bạn hỏi
ip route get phân giải một đường đi; ip route show liệt kê các mục đã lưu, và hai thứ có thể bất đồng mà không cái nào sai. Bao gồm ngữ cảnh nguồn, vì các quy tắc dựa trên nguồn chỉ khớp khi tra cứu mang theo nguồn.
ip route get 198.51.100.23 from 10.64.3.9
ip route get 198.51.100.23 from 10.64.3.9 iif ppp0
ip -4 rule show
Lệnh đầu tiên đặt câu hỏi từ phía máy chủ. Lệnh thứ hai thêm một giao diện vào, gần với điều lưu lượng được chuyển tiếp trải qua hơn, và câu trả lời thường trỏ tới bảng khác. Không đích nào là dịch vụ kiểm thử trực tiếp; 198.51.100.23 là địa chỉ tài liệu, nên hãy thay bằng một máy chủ mà bạn được phép dò.
Ngay cả một tra cứu đúng cũng chỉ chứng minh rằng một đường đã được chọn. Nó không nói gì về việc phía bên kia có nhận lưu lượng hay liệu câu trả lời có thể quay về theo cùng lập luận.
Nơi so sánh đảo chiều
Lưu lượng từ máy chủ và lưu lượng được chuyển tiếp không chỉ thực hiện các tra cứu khác nhau; trên đường về chúng gặp các bộ lọc khác nhau. Linux áp dụng kiểm tra đường ngược bằng cách dùng cài đặt chặt hơn giữa mọi giao diện và giao diện nhận, nên thay đổi giá trị của một giao diện có thể không có tác dụng thấy được. Định tuyến dựa trên dấu thêm quan hệ src_valid_mark, trong đó dấu phải khớp để một nguồn được coi là hợp lệ.
Nếu các câu trả lời biến mất trong khi định tuyến ra ngoài trông đúng, hãy đọc các giá trị hiệu lực trước khi chạm vào chúng, và chỉ thay đổi chúng với một lý do chính sách được nêu rõ.
sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.ppp0.rp_filter
sysctl net.ipv4.conf.all.src_valid_mark
Chọn giữa hai thiết kế dựa trên bằng chứng: nếu ứng dụng gắn với địa chỉ PPP, một quy tắc nguồn cộng với một bảng giữ tuyến peer là đủ. Nếu hộp chuyển tiếp cho một LAN phía sau nó, bạn cũng cần ngữ cảnh vào và đường về khớp nhau. Khi chúng không khớp, hãy sửa quyền sở hữu tuyến thay vì nới lỏng kiểm tra cho toàn máy.