Пингујете удаљени домаћин са Linux машине и он одговара, па тунел ради. Контејнер поред вас још увек истиче време, а природан следећи корак је рестарт Docker-а. Контејнер на мост мрежи обично почиње са другом изворном адресом и улази у домаћина кроз прослеђивање, а не кроз сопствену излазну путању апликације на домаћину, па је успешни тест измерио други пакет. За strongSwan тунел заснован на политици, обична рута ка удаљеној подмрежи није довољна када прослеђени пакет не одговара инсталираној IPsec политици.

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

Почните од једне дестинације и два извора

Прво изаберите познату услугу по IP-у, да не отклањате и DNS грешке истовремено. Запишите три чињенице: префикс моста контејнера, изворну адресу захтева домаћина који је успео, и преговаране локалне и удаљене селекторе саобраћаја за тунел. Та три броја објашњавају скоро сваки случај овог симптома.

Затим поновите неуспели захтев из контејнера и ухватите извор који он стварно користи. Ако та адреса није покривена локалним селектором, исход већ знате, и никакво поновно стварање контејнера то неће променити.

Прочитајте политике пре него што дирнете Docker

Провере домаћина само за читање покривају одлуке рутирања, базу политика и правила која бирају између њих:

ip rule show
ip route show table all
ip xfrm policy

Листа политика показује селекторе и смер без потребе за исписом IPsec стања пуним кључног материјала, зато је безбедно залепити је у тикет. Тражите локални селектор који покрива адресу домаћина али не префикс моста. Проверите и преклапање: рута контејнера која удаљену дестинацију третира као локалну никада неће произвести прослеђени пакет који очекујете, а тунел због тога испашта. Сачувајте ту листу поред изворне адресе контејнера, јер те две заједно чине цело поређење.

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

Проверите филтрирање и превођење по реду

Docker-ов Linux мост firewall може блокирати прослеђивање независно од IPsec-а. Са iptables позадином, прегледајте FORWARD путању и DOCKER-USER одлуке, имајући на уму да правило додато после раније пресуде можда никада неће бити извршено. nftables позадина се интегрише другачије, па немојте стварати DOCKER-USER ланац само зато што га је iptables пример тако назвао; проверите коју позадину ваш демон стварно користи.

Затим проверите превођење извора. Широко MASQUERADE правило може претворити пакет који је раније одговарао IPsec селектору у онај који више не одговара, а квар изгледа тачно као проблем рутирања. strongSwan водич за прослеђивање документује NAT изузетак потребан пре таквог превођења за саобраћај који већ одговара политици.

Тај изузетак није начин да се непокривени извор контејнера дода у тунел. Он штити само саобраћај који већ одговара дизајну, па прво решите питања селектора и повратне путање, а затим ускладите NAT и филтрирање са одговором. Ако почнете да ширире изузетак, ствар коју треба променити је селектор, а не NAT правило.

Затим одлучите рутирано или преведено

Рутирана подмрежа контејнера захтева да оба партнера прихвате ту подмрежу и удаљену повратну путању до ње, што обично значи промену селектора на оба краја и разговор са власником далеке стране. Намерно преведен дизајн уместо тога мора представити адресу покривену политиком у релевантној фази претраге, што обично значи уско, документовано правило уместо подразумеваног MASQUERADE.

Ниједно од та два решења не следи аутоматски из радног тунела домаћина, а избор између њих је дизајнерска одлука са власником. Запишите које сте изабрали, јер ће следећи инжењер то иначе поново извести из бројача firewall-а.

Пазите и на хибридни квар: пола скупа правила преведено а пола не, што даје повремени успех који зависи од одредишног порта, а не од било чега на мрежи.

Проверите новом везом, а не рестартом

Користите нову везу апликације док гледате уска бројача firewall-а и удаљени пријемник, тако да свако запажање има извор. Рестарт Docker-а може променити стање правила и такође ће пореметити радна оптерећења, што вас кошта чистог сигнала који сте хтели да добијете.

Трајни резултат су четири тврдње које можете показати: извор контејнера, одговарајућа заштићена путања, дозвољено прослеђивање и одговор који се враћа. Када све четири важе, контејнер стиже до партнера из истог разлога као домаћин.

Повезани чланци