Docker: không còn nhóm địa chỉ được xác định trước nào trong một phiên VPN
Lỗi nhóm được xác định trước liên quan đến việc cấp phát tự động, không phải địa chỉ công cộng. Hãy đếm các cấp phát, so sánh các tuyến on-link và giữ nguyên chính sách VPN.
Sự cố rất cụ thể: Docker không tìm được một mạng con tự động chấp nhận được cho một mạng cầu mới. Điều đó không có nghĩa là máy đã hết địa chỉ, cũng không có nghĩa là VPN bị hỏng. Hai câu hỏi quyết định chẩn đoán: daemon nhìn thấy những khối ứng viên nào, và bộ cấp phát của nó loại trừ những khối nào trong môi trường này. Hãy xử lý theo đúng thứ tự đó, vì câu hỏi thứ hai vô nghĩa cho đến khi câu hỏi thứ nhất được trả lời.
Xác nhận điều gì đã thất bại trước khi thay đổi bất cứ thứ gì
Chạy các bước dưới đây từ máy chủ đang chạy daemon. Một shell nói chuyện với ngữ cảnh từ xa đang mô tả một máy khác, và chỉ riêng sai sót đó có thể làm mất một giờ.
Đồng thời ghi phiên bản Engine vào phiếu. Mọi heuristic trong phần còn lại của hướng dẫn này đều gắn với phiên bản, và một khẳng định không có phiên bản chỉ là tin đồn.
Đếm các cấp phát bạn đã có
Liệt kê các mạng, sau đó kiểm tra những mạng quan trọng: docker network ls, tiếp theo là docker network inspect NETWORK_NAME. Đọc mạng con IPAM của chúng và các container gắn với từng mạng. Nhiều dự án Compose tiêu thụ nhiều khối hơn số container của chúng gợi ý, vì mỗi dự án có xu hướng tạo mạng mặc định riêng. Một container đã dừng không giải phóng cấp phát của mạng đó.
Cũng kiểm tra cấu hình nhóm, vì một nhóm mặc định có dải cơ sở và kích thước tiền tố cho mỗi mạng. Cấp phát lớn cho mỗi mạng làm cạn các khối sẵn có nhanh hơn, và đó là sự thật về dung lượng, không phải vấn đề định tuyến.
Ghi lại con số. Đó là đường cơ sở cho biết thay đổi tiếp theo có giúp ích hay không.
So sánh cách daemon nhìn các tuyến
VPN có thể ảnh hưởng đến việc chọn ứng viên, nhưng cách triển khai cụ thể quyết định như thế nào. Trong Moby 28.2.2 trên Linux, InferReservedNetworks thu thập địa chỉ máy chủ tên và một số tuyến IPv4 on-link, và nó không đơn giản dự trữ mọi tuyến từ mọi bảng. Các tuyến liên kết được thu thập cũng loại trừ một địa chỉ đích không xác định, nên chỉ một tuyến 0.0.0.0/1 không dự trữ mọi địa chỉ. Một tiền tố on-link rộng khác, chẳng hạn 128.0.0.0/1, có thể cắt qua các dải ứng viên quen thuộc 172 và 192.
So sánh ip -4 route show table all trước và sau khi VPN kết nối, trên máy chủ của daemon. Chênh lệch là bằng chứng, và phiên bản là phạm vi của khẳng định.
Đừng khái quát hóa heuristic của một bản phát hành cho mọi bản phát hành. Đó là cách một câu trả lời trên diễn đàn trở thành thay đổi chính sách.
Chọn cách sửa nhỏ nhất có tác dụng
Nếu một mạng đã được xác nhận là không dùng đang giữ khối bạn cần, hãy lên kế hoạch ngừng hoạt động có mục tiêu với chủ sở hữu thay vì cắt tỉa rộng. Với một mạng mới, một mạng con không dùng đã được xem xét rõ ràng tránh hoàn toàn việc phụ thuộc vào lựa chọn tự động. Mạng con đó vẫn phải tránh các đích thực của Docker, LAN và VPN bắt buộc, vì riêng tư không có nghĩa là an toàn. Định tuyến một tiền tố từ xa thực sẽ đánh đổi lỗi cấp phát lấy việc mất truy cập.
Thay đổi default-address-pools là một chính sách rộng hơn về các cấp phát trong tương lai. Chọn một cơ sở không xung đột và kích thước được cấp phát phù hợp, hợp nhất nó với các thiết lập daemon hiện có, và lên kế hoạch cho tác động khởi động lại đã được ghi lại. Các mạng hiện có không bị đánh số lại một cách âm thầm.
Đừng tắt việc đẩy tuyến của công ty để cấp phát thành công. Một kế hoạch địa chỉ rõ ràng thường giải quyết vấn đề cục bộ mà không làm suy yếu một chính sách bắt buộc.
Chấp nhận cấp phát và định tuyến riêng biệt
Sau thay đổi, hãy kiểm tra mạng con mà Docker thực sự đã tạo và kiểm thử các phụ thuộc VPN và cục bộ của ứng dụng. Cấp phát thành công và định tuyến đúng khi chạy là hai bước kiểm tra chấp nhận khác nhau, và vượt qua bước thứ nhất không phải là bằng chứng cho bước thứ hai. Nếu ứng dụng không thể đến một tài nguyên sau đường hầm, bạn có vấn đề định tuyến mà lỗi nhóm đã che giấu. Ghi cả hai kết quả vào phiếu.
Giữ chênh lệch tuyến và số lượng nhóm cùng với bản ghi thay đổi, vì bản cập nhật ứng dụng VPN tiếp theo có thể thay đổi cái thứ nhất mà không đụng tới Docker.
Hướng dẫn hoàn tất khi người khác có thể lặp lại hai bước kiểm tra đó và nhận được cùng một câu trả lời.