Hai chỉ thị gần như cùng tên xuất hiện trong mọi ví dụ hoạt động, và sao chép cái này mà thiếu cái kia tạo ra một đường hầm trông đúng nhưng âm thầm bỏ mất tiền tố nhánh. Chúng làm việc khác nhau ở hai bên của cùng một ranh giới: một cái dạy nhân máy chủ biết tiền tố sống ở đâu, còn cái kia dạy OpenVPN máy khách đã xác thực nào mang nó. Đúng cả hai thì tiền tố chảy; đúng một cái thì gói tin có tuyến nhưng không có chủ.

Hai chỉ thị, hai công việc khác nhau

route-ipv6 là một lần cài tuyến thông thường: máy chủ thêm một tuyến nhân trỏ tiền tố tới giao diện đường hầm của nó. iroute-ipv6 thuộc về ngữ cảnh riêng của một máy khách và khai báo quyền sở hữu nội bộ, để daemon biết lưu lượng của tiền tố đó phải gửi tới một máy khách cụ thể chứ không phải tới peer mà tuyến nhân tình cờ nêu tên.

Một cái nói về bảng chuyển tiếp của nhân, cái kia nói về mô hình định tuyến nội bộ của daemon. Giữ chúng tách nhau giải thích vì sao một cấu hình trông đầy đủ vẫn có thể bỏ mất tiền tố. Nó cũng giải thích vì sao cùng một mạng xuất hiện hai lần trong mọi ví dụ hoạt động. Không dòng nào là thừa.

Trong cách bố trí userspace truyền thống, cả hai đều cần và chúng bổ sung cho nhau. Chỉ một tuyến nhân khiến daemon không chọn được peer. Chỉ một iroute khiến nhân không có đường tới đường hầm. Đây cũng là nguồn gốc phần lớn sự nhầm lẫn về tệp theo từng máy khách: tệp không phải mục trong bảng tuyến, và mục tuyến không phải tuyên bố sở hữu.

ip -6 route show | grep fd00:7a
ip -6 route get fd00:7a::1

Mỗi cái thuộc về đâu

Tuyến nằm trong cấu hình được quản lý của máy chủ, nơi nó áp dụng cho tiến trình máy chủ đó. iroute nằm trong tệp riêng của máy khách, được đặt tên theo danh tính đã xác thực của thiết bị nhánh.

Tên tệp không khớp với danh tính thực tế sẽ không bao giờ được đọc, và triệu chứng giống hệt một iroute bị thiếu. Kiểm tra danh tính mà máy chủ đã xác thực, rồi kiểm tra tên tệp từng ký tự.

# /etc/openvpn/server/server.conf
route-ipv6 fd00:7a::/64
client-config-dir /etc/openvpn/server/ccd

# /etc/openvpn/server/ccd/branch-b
iroute-ipv6 fd00:7a::/64

Giữ pool và tiền tố nhánh tách biệt, vì chồng lấn giữa chúng tạo ra một câu đố không chỉ thị nào giải được.

Máy khách khác cần gì

Máy khách thứ hai cần tới nhánh đó cần một thông báo, không phải quyền sở hữu. Đẩy tiền tố tới những máy khách bạn muốn, trong ngữ cảnh máy khách hoặc nhóm phù hợp với cấu hình của bạn.

Đừng gửi nó cho chính nhánh, vì thiết bị đó đã có tiền tố như một mạng được kết nối.

Gửi cho tất cả là một lựa chọn có hệ quả: khi đó mọi máy khách tin rằng nhánh tới được qua đường hầm, kể cả những máy khách bạn chưa từng định cấp quyền truy cập đó. Thông báo trên thực tế là một quyết định truy cập, dù chỉ thị trông như việc lắp ống nước. tài liệu tham chiếu tùy chọn máy chủ ghi nhận iroute-ipv6 là quyền sở hữu riêng của máy khách, và đó là điểm khác biệt đáng giữ.

Đường quay về trên thiết bị nhánh

Quyền sở hữu chỉ hữu ích nếu nhánh chuyển tiếp gói tin và LAN của nó biết cách trả lời. Bật chuyển tiếp IPv6 trên thiết bị nhánh, và xác nhận rằng các máy chủ trong LAN của nó gửi lưu lượng cho pool VPN ngược về nhánh chứ không phải tới tuyến mặc định không biết pool.

Đường quay về đó là tương đương IPv6 của vấn đề tuyến bị thiếu mà người ta gặp với IPv4.

Kiểm tra nó từ một máy trong LAN bằng truy vấn địa chỉ pool VPN, không phải từ chính nhánh. Truy vấn trên router trả lời một câu hỏi khác với câu hỏi của người dùng bạn, và hai bên lệch nhau đủ thường xuyên để lệnh thêm là đáng.

Khi cặp đó vẫn chưa đủ

Một số triển khai hoàn toàn không dùng đường này. Đường dữ liệu nhân và máy chủ do sản phẩm quản lý có cách xử lý tuyến được hỗ trợ riêng, và ví dụ userspace có thể không chuyển trực tiếp được.

Xác nhận bản dựng của bạn dùng đường dữ liệu nào trước khi sao chép chỉ thị từ một hướng dẫn viết cho đường còn lại.

Cuối cùng, hãy nhớ phạm vi địa chỉ: một tiền tố cục bộ duy nhất như fd00:7a::/64 là riêng tư theo thiết kế và không nói gì về khả năng tiếp cận IPv6 công cộng. Hãy coi đó là truy cập nội bộ, và giữ việc ra internet là một câu hỏi riêng với chính sách riêng.

Bài viết liên quan