Грешката за преклопување на pool во Docker не е проблем со VPN рута
Едната грешка се јавува при доделување, другата по промена на рута. Прочитајте ги IPAM подмрежите пред да ги допрете адресите на контејнерите или тунелот.
Docker одбива да создаде мрежа со пораката дека pool-от се преклопува со друг во овој адресен простор, и некој одлучува дека VPN рутата мора да е причината. Не може да биде. Таа грешка се создава додека се доделува pool, пред да постои и еден пакет, и рачна рута во јадрото нема никакво влијание врз неа. VPN е важен еден чекор подоцна, кога контејнер што веќе има адреса престанува да биде достапен откако ќе се појави рута. Два проблема, два сета докази, и нивното мешање дава промена што не поправа ниту еден.
Две слични грешки
Грешката при доделување е аритметичка. Docker ја споредува подмрежата што ја баравте со подмрежите што веќе ги управува, наоѓа пресек и одбива. Сè уште ништо не работи, затоа нема рута, нема контејнер и нема сообраќај за проверка.
Симптомот при работа е прашање на достапност. Контејнер што вчера одговараше сега не одговара, и нешто се смени во табелата за рутирање на домаќинот. Контејнерот сè уште ја држи својата адреса; прашањето е по кој пат оди таа адреса.
Двете се проблеми на адресен план. Само едната од нив е проблем на Docker.
Прво прочитајте ги доделените pool-ови
Наведете ги мрежите и проверете ги оние што би можеле да се пресечат. Подмрежата живее во IPAM конфигурацијата, а поврзаните контејнери се наведени одделно:
docker network ls
docker network inspect EXISTING_NETWORK
Споредете ја таа подмрежа со pool-от што го бара новата мрежа, и запомнете дека Compose создава своја стандардна мрежа за секој проект. Конфликт со проект што сте го заборавиле изгледа точно како конфликт со демонот.
Статична ipv4_address на услуга е адреса на еден контејнер, не дефиниција на pool. Нејзината промена не отстранува преклопување, бидејќи преклопувањето е меѓу мрежните подмрежи, а не меѓу контејнерите. Docker-овиот network-create прирачник бара непреклопувачки подмрежи за обично доделување преку мост и документира како експлицитно да се избере една.
Изберете префикс што преживува преку VPN
Непосредниот конфликт и идната рута ги одредува истиот избор, затоа направете го еднаш. Споредете го кандидат-опсегот со LAN, со секоја VPN дестинација што домаќинот може да ја достигне и со кој било друг overlay во употреба.
Префикс што го задоволува Docker и се судира со далечната мрежа ви дава контејнер што чисто стартува и станува недостапен во мигот кога тунелот ќе се подигне. Тоа е втората грешка во овој напис, и многу е потешко да се дијагностицира подоцна отколку да се избегне сега.
Запишете ги избраните опсези некаде каде следниот проект ќе може да ги прочита. Регистарот на доделени префикси во еден ред е поевтин од една недела необјаснети тајмаути.
Намерно повлечете или сменете мрежа
За нова Compose мрежа, поставете го неискористениот префикс во IPAM конфигурацијата на мрежата. За постоечки проект, планирајте пренумерирање: фиксните адреси, зависните услуги и чекорот за повторно создавање на мрежата сите мора да се земат предвид, бидејќи уредувањето на YAML не пренумерира мрежа што работи.
Ако застарена мрежа го поседува конфликтното доделување, проверете кој е поврзан пред да ја отстраните. docker network rm одбива додека постојат активни endpoint-и, а docker stop прима имиња или ID-а на контејнери, а не име на мрежа. Запирањето на контејнер исто така не ја отстранува дефиницијата на мрежата што го држи pool-от.
Широк prune не е дијагностичка алатка. Достигнува неповрзани проекти и ги уништува доказите што штотуку требаше да ги соберете.
Стандардните pool-ови помагаат само на следното доделување
Поставката за стандарден адресен pool на демонот ги подобрува идните автоматски доделувања држејќи ги надвор од опсезите што ги резервирате. Таа не ги пренасочува ретроактивно мрежите што веќе постојат, и не решава експлицитна подмрежа што се преклопува со друга експлицитна подмрежа.
Третирајте ја оваа поставка како одделна, планирана промена со сопствен рестарт, не како дел од поправка на еден проект. Мешањето на двете значи дека рестартот на демонот паѓа среде неповрзана истрага. Закажете го во сопствен прозорец. Потоа потврдете дека едно ново автоматско доделување навистина паѓа надвор од опсезите што сте ги резервирале.
Кога создавањето ќе успее, проверете ја подмрежата што навистина работи и потоа направете едно вистинско барање до апликацијата со VPN во предвидената состојба. Ако pool-от е валиден, а пристапот сè уште не успева, преостанатата работа е избор на рута, филтрирање и повратен пат. Тоа е истрага при работа, и таа не ја прави грешката при доделување ретроактивно бесмислена.
Редослед на работа: прочитајте ги доделените pool-ови, изберете префикс што ги избегнува и Docker и VPN дестинациите, намерно повторно создадете ја мрежата, потоа тестирајте едно барање со подигнат тунел.