Отказът е конкретен: Docker не може да намери приемлива автоматична подмрежа за нова мостова мрежа. Това не означава, че адресите на машината са свършили, нито че VPN е счупен. Диагнозата се решава от два въпроса: кои кандидат-блокове вижда демонът и кои от тях разпределителят му изключва в тази среда. Минавате през тях точно в този ред, защото вторият въпрос е безсмислен, докато първият не е получил отговор.

Потвърдете какво се е провалило, преди да променяте каквото и да било

Изпълнете стъпките по-долу от хоста, който стартира демона. Черупка, която говори с отдалечен контекст, описва друга машина и само тази грешка може да изгуби час.

Запишете версията на Engine в тикета по същото време. Всяка евристика в останалата част от това ръководство е обвързана с версия, а твърдение без версия е слух.

Пребройте разпределенията, които вече имате

Избройте мрежите, после прегледайте важните: docker network ls, последвано от docker network inspect NETWORK_NAME. Прочетете техните IPAM подмрежи и контейнерите, прикачени към всяка. Няколко Compose проекта консумират повече блокове, отколкото броят на контейнерите им подсказва, защото всеки проект е склонен да създава своя собствена мрежа по подразбиране. Спрян контейнер не освобождава разпределението на мрежата си.

Проверете и конфигурацията на пула, тъй като пулът по подразбиране има базов диапазон и размер на префикса за мрежа. Големите разпределения за мрежа изчерпват наличните блокове по-бързо и това е факт за капацитета, а не проблем с маршрутизацията.

Запишете броя. Той е базовата линия, която показва дали следващата промяна е помогнала.

Сравнете как демонът вижда маршрутите

VPN може да влияе върху избора на кандидати, но конкретната реализация решава как. В Moby 28.2.2 на Linux InferReservedNetworks събира адреси на сървъри за имена и определени on-link IPv4 маршрути и не просто резервира всеки маршрут от всяка таблица. Събраните link маршрути също изключват неопределен адрес на местоназначение, така че един маршрут 0.0.0.0/1 сам по себе си не резервира всички адреси. Друг широк on-link префикс, например 128.0.0.0/1, може да пресече познатите кандидат диапазони 172 и 192.

Сравнете ip -4 route show table all преди и след свързването на VPN, на хоста на демона. Разликата е доказателството, а версията е обхватът на твърдението.

Не обобщавайте евристиката на едно издание за всички издания. Така отговор от форум се превръща в промяна на политика.

Изберете най-малката поправка, която работи

Ако потвърдена неизползвана мрежа държи блок, който ви трябва, планирайте целенасоченото ѝ извеждане от употреба със собственика, вместо широко подрязване. За нова мрежа изрично прегледана неизползвана подмрежа избягва зависимостта от автоматичен избор напълно. Тази подмрежа все пак трябва да избягва реални Docker, LAN и изисквани VPN местоназначения, защото частно не значи безопасно. Маршрутизирането на реален отдалечен префикс би разменило грешката при разпределянето срещу прекъснат достъп.

Промяната на default-address-pools е по-широка политика за бъдещи разпределения. Изберете несъвпадаща база и подходящ разпределен размер, обединете я със съществуващите настройки на демона и планирайте документираното въздействие от рестартиране. Съществуващите мрежи не се преномерират тихо.

Не изключвайте изпращането на фирмени маршрути, за да успее разпределянето. Явният план за адреси обикновено решава локалния проблем, без да отслабва задължителна политика.

Приемайте разпределянето и маршрутизацията поотделно

След промяната прегледайте подмрежата, която Docker действително е създал, и тествайте зависимостите на приложението от VPN и локални ресурси. Успешното разпределяне и правилната маршрутизация по време на работа са две различни проверки за приемане и преминаването на първата не е доказателство за втората. Ако приложението не може да достигне ресурс зад тунела, имате проблем с маршрутизацията, който грешката на пула е прикривала. Запишете двата резултата в тикета.

Пазете разликата в маршрутите и броя на пула заедно със записа за промяната, защото следващата актуализация на VPN клиента може да промени първото, без да докосва Docker.

Ръководството е пълно, когато някой друг може да повтори тези две проверки и да получи същия отговор.

Подобни статии