Вашиот контејнер може да слуша на UDP 1195 додека домаќинот објавува 1194, и тоа е точно додека мапирањето така вели. Броевите образуваат табела за превод: клиентот ја бира портата на домаќинот, Docker ја препишува дестинацијата на портата на контејнерот, а OpenVPN одговара на портата што ја наведува неговата сопствена конфигурација. Несовпаѓање во која било од тие врски создава тивок отказ што изгледа како firewall. Сертификатите и шифрите се наоѓаат подолу и не можат да го поправат.

Следете еден пакет од клиентот до процесот пред да смените нешто во автентикацијата.

Три броја, една врска

Трите броја се оддалечената дестинација што ја користи клиентот, објавеното мапирање на домаќинот и слушачот внатре во контејнерот. Не мора да бидат еднакви, но мора да образуваат синџир. Еднакви броеви се посебен случај што случајно е најчестиот, затоа несовпаѓањето е лесно да се напише еднаш и тешко да се забележи подоцна.

Запишете го синџирот во еден ред пред отстранување грешки: адреса и порта на клиентот, мапирање на домаќинот, слушач на контејнерот, транспорт. Дефектот во синџирот се покажува како број што се појавува двапати со различни вредности.

LocationExample
Remote client destinationHost address, UDP 1194
Published mappingHost UDP 1194 to container UDP 1195
Container listenerOpenVPN on UDP 1195

Што всушност вели кратката синтакса

Во кратката форма левата страна е портата на домаќинот, а десната е портата на контејнерот, и наставка со коса црта го избира транспортот. Ако ја испуштите наставката, Docker го третира мапирањето како TCP, така што UDP слушач зад мапирање без протокол е слушач до кој никој не може да стигне. Таа стандардна вредност е документирана и уште ги изненадува оние што ги усогласија броевите и сметаа дека работата е завршена.

Долгата форма експлицитно ги фиксира адресата за врзување и протоколот, што вреди за дополнителните редови кај сето она што е свртено кон мрежа. Прочитајте го објавеното мапирање назад, наместо да ѝ верувате на датотеката што го создала.

ports:
  - 1194:1195/udp

Каде пакетот може да застане

Барањето може да биде отфрлено пред Docker, во Docker или кај слушачот. Пред Docker може да има облачен firewall или рутер што сам пренесува, и тој уред бара порта свртена кон домаќинот и правилен транспорт. Внатре во Docker, мапирање кон погрешна порта на контејнерот пренесува кон затворен сокет.

Потоа слушачот: конфигурацијата на OpenVPN наведува порта и протокол, а клиент што пристигнува на друга порта внатре во контејнерот не стигнува до ништо. Тестирање на UDP услуга преку TCP не докажува ништо во ниту една од овие фази, затоа користете го транспортот што клиентот ќе го користи.

Адресите за врзување одлучуваат за достапноста

Објавено мапирање врзано за loopback е достапно само од домаќинот, додека она врзано за сите интерфејси е достапно каде и да дозволува firewall. Двете изгледаат исто во Compose датотека што ја испушта адресата, а стандардната вредност на Docker е пошироката.

Одлучете какво изложување има намера распоредувањето, потоа запишете го експлицитно. Внатрешен тест што се поврзува преку loopback и оддалечен клиент што не може да се поврзе можат и двата да бидат точни описи на истиот контејнер.

Прочитајте ја работната состојба

Проверете го фактичкото мапирање на контејнерот што работи и слушачот во неговиот мрежен именски простор. Compose датотеката може да е уредена откако контејнерот стартувал, метаподатоците на сликата може да објават порта без да ја објават, а втор контејнер може веќе да ја држи портата на домаќинот. Објавувањето порта во слика не е исто што и нејзино објавување, и ниту едно од двете не е исто што и слушање.

Три различни состојби, три различни команди, и само последната вклучува OpenVPN.

Кога мапирањето е правилно

Откако пакетот ќе стигне до OpenVPN, неговиот дневник е местото каде што се чита за TLS и автентикација. Регенерирањето сертификати за да се поправи пакет што никогаш не пристигнал е залудна работа што додава втора променлива. Чувајте ја белешката за мапирањето до профилот на клиентот, за следната личност да прочита еден ред наместо повторно да ги открива сите три броја. Едно фаќање пакети на страната на домаќинот одлучува која од трите врски е погрешна, и чини помалку од регенерирање сертификат.

Овде опишаниот случај е објавување преку мост. Мрежата на домаќинот и рутираните адреси на контејнерите го прескокнуваат преводот, затоа во тие решенија истите броеви значат нешто друго.

Поврзани статии